Publicado el 14 de Enero del 2017
2.110 visualizaciones desde el 14 de Enero del 2017
259,0 KB
28 paginas
Creado hace 16a (16/02/2009)
Programación en Lenguaje C
UNIVERSIDAD
DE CANTABRIA
• Introducción al lenguaje C.
• Estructura de un programa.
• Tipos de datos y declaraciones de datos.
• Operadores y expresiones.
• Entrada/ salida simple.
• Instrucciones de control.
• Funciones y paso de parámetros.
• Modularidad.
• Tratamiento de errores.
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
9
© Michael González, J. Javier Gutiérrez
16/feb/09
1
1. Introducción al lenguaje C
UNIVERSIDAD
DE CANTABRIA
El lenguaje C es uno de los lenguajes de programación más
populares que existen hoy en día
Características más importantes:
• lenguaje sencillo (aunque más difícil de aplicar)
• estructurado
• tipos definidos por el usuario
• no exige tipificación estricta
• permite compilación separada
• es de un nivel relativamente bajo
• compiladores baratos y eficientes
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
2
Versiones del lenguaje C
UNIVERSIDAD
DE CANTABRIA
Existen diversas versiones del lenguaje C:
• C común: apareció en 1978 y estaba directamente ligado al
sistema operativo UNIX
• C ANSI o C ISO: estandarización en 1988, y luego en 1990;
versión no ambigua y más portable, que añade
- asignación de estructuras (registros)
-
- prototipos de funciones
-
tipos enumerados
librerías estándar (funciones matemáticas, entrada/salida, etc.)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
3
Versiones del lenguaje C (cont.)
• Posteriormente se refina la versión ISO/ANSI en 1999
UNIVERSIDAD
DE CANTABRIA
- soporte para caracteres internacionales
- soporte para números complejos
-
tipo entero long
- comentarios //
- etc.
En este curso usaremos el ISO C 99
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
4
2. Estructura de un programa
UNIVERSIDAD
DE CANTABRIA
Estructura de un bloque en Java y en C:
{
}
<declaraciones>
<instrucciones>
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
5
Estructura de un programa
(cont.)
UNIVERSIDAD
DE CANTABRIA
Estructura de un programa:
Java
import modulo1.*;
public class Clase {
public static void main
(String[] args)
{
<declaraciones>
<instrucciones>
}
}
C
#include <modulo1.h>
int main()
{
<declaraciones>
<instrucciones>
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
6
Ejemplo
UNIVERSIDAD
DE CANTABRIA
#include <stdio.h>
int main()
{
printf("hola\n"); // printf escribe en pantalla
return 0;
}
public class Hola{
public static void main(String[] args)
{
System.out.println("hola");
// println escribe
}
}
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
7
Algunas observaciones:
UNIVERSIDAD
DE CANTABRIA
C
Java
se distingue entre mayúsculas y
minúsculas
las instrucciones acaban con “;”,
pero los bloques no
las funciones son bloques que se pue-
den anidar
comentarios entre /* */
o empezando con //
todas las variables deben declararse
los strings se encierran entre ""
el retorno de línea se pone en el string
"\n"
idem
idem
las funciones son bloques que siem-
pre son métodos de las clases
además, existen los comentarios de
documentación
idem
idem
retorno de línea con operaciones
específicas (println)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
8
3. Tipos de datos y declaraciones de
datos
UNIVERSIDAD
DE CANTABRIA
Tipos predefinidos:
Java
byte
short
int
long
boolean
char
float
double
String
C
signed char
short, short int
int
long, long int
long long
(se usa int)
(se usa char)
float
double
long double
char[], char*
Otros tipos C
char
unsigned short int
unsigned int
unsigned long int
unsigned long long
float _Complex
double _Complex
long double _Complex
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
9
Declaraciones
C
UNIVERSIDAD
DE CANTABRIA
int lower;
char c,resp; // dos variables de tipo char
int i=0;
const float eps=1.0e-5;
#define MAX 8 // otra constante
// variable inicializada
// constante
Java
int lower;
char c,resp; // dos variables de tipo char
int i=0;
final float eps=1.0e-5;
final int max=8;
// variable inicializada
// constante
// otra constante
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
10
Observaciones sobre las declaraciones
UNIVERSIDAD
DE CANTABRIA
Puede observarse que, tanto en C como en Java:
• las variables se pueden inicializar
• se pueden declarar como constantes
• se pueden declarar varias variables juntas
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
11
Tipos enumerados
UNIVERSIDAD
DE CANTABRIA
En C se pueden definir tipos enumerados, cuyos valores son
identificadores:
typedef enum {planox,planoy,planoz} dimension;
dimension fuerza, linea;
...
fuerza=planox;
linea=fuerza+1; // toma el valor planoy
La instrucción typedef permite crear tipos de datos nuevos, con
los cuales se pueden crear variables más adelante
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
12
Tipos enumerados en Java
UNIVERSIDAD
DE CANTABRIA
En Java se puede hacer lo equivalente a un tipo enumerado
mediante el uso de constantes
final int planox=0;
final int planoy=1;
final int planoz=2;
int fuerza, linea;
...
fuerza=planox;
linea=fuerza+1; // toma el valor planoy
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
13
Observaciones:
UNIVERSIDAD
DE CANTABRIA
• En C y Java el operador de asignación es “=”
• En C los valores enumerados se tratan como enteros, con
valores 0, 1, 2, ...
- linea toma el valor 1 (planoy) en el ejemplo
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
14
Caracteres
UNIVERSIDAD
DE CANTABRIA
Los caracteres en C y Java se representan encerrados entre
apóstrofes:
char c1,c2;
c1=’a’;
Los caracteres de control tiene una representación especial:
Carácter
salto de línea
carácter nulo
bell (pitido)
apóstrofe
C y Java
’\n’
’\0’
’\a’
’\’’
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
15
Arrays
UNIVERSIDAD
DE CANTABRIA
Los arrays de C son muy diferentes de los de Java:
• no tienen un tamaño conocido durante la ejecución
- pero sí un tamaño fijo en memoria
• el usuario es responsable de no exceder su tamaño real
• se pueden manipular mediante punteros
Los arrays de Java son mucho más seguros
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
16
Arrays (cont.)
UNIVERSIDAD
DE CANTABRIA
Las siguientes declaraciones de arrays en Java:
final int MAX=8;
float[] v1; //índice va de 0 a MAX-1
v1=new float[MAX]; // tamaño puesto en la creación
short[][] c=new short[MAX][MAX];
Tienen el siguiente equivalente en C:
#define MAX 8 // constante en C
float v1[MAX]; //índice va de 0 a MAX-1
//array creado al declararlo
short int[MAX][MAX] c;
En C los arrays de números no se inicializan a cero
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
17
Tipos array
UNIVERSIDAD
DE CANTABRIA
En C se pueden crear tipos array para usarlos más tarde en
declaraciones de arrays
typedef float vector[MAX];
typedef short int contactos[MAX][MAX];
typedef int numeros[4];
declaraciones:
vector v={0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
vector w;
contactos c1,c2;
numeros a;
Literal de array
(solo en inicialización)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
18
Uso de elementos de arrays
UNIVERSIDAD
DE CANTABRIA
Las siguientes instrucciones se escriben igual en Java y C:
w[3]=10.0;
c1[0][3]=1;
a[0]=9; a[1]=3; a[2]=0; a[3]=4;
No hay asignación de arrays en C
c1=c2; // no se puede
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
19
Strings en C
UNIVERSIDAD
DE CANTABRIA
Los strings en C son arrays de caracteres, con un número de
elementos variable.
El string debe terminar siempre con un carácter nulo (código ASCII
cero), que sirve para saber dónde acaba el string.
Los strings constantes se representan encerrados entre comillas,
como en Java:
char linea[80];
char otra[]="hola esto es un string";
char linea2[]="hola esto es una linea\n";
// incluye un salto de linea
Los strings constantes ya incluyen el carácter nulo al final
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
20
Operaciones con strings
UNIVERSIDAD
DE CANTABRIA
El módulo <string.h> define funciones para manipular strings
strcpy(s1, s2)
strncpy(s1, s2, n)
strcat(s1,s2)
size_t strlen(s)
int strcmp(s1,s2))
Copia el string s2 en s1
Copia hasta n caracteres de s2 en s1
Añade el string s2 al final del s1
Retorna un entero con la longitud de s
Compara el string s1 con s2 y retorna:
entero menor que cero si s1<s2
entero mayor que cero si s1>s2
cero si s1=s2
Las tres primeras son operaciones peligrosas, pues no se
comprueba si el resultado cabe en el espacio reservado a s1
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Michael González, J. Javier Gutiérrez
16/feb/09
21
Operaciones de conversión con strings
UNIVERSIDAD
DE CANTABRIA
En el módulo <string.h>, para convertir errores a strings
char * strerror(errnum)
Convierte el código de error errnum a
texto
En
Comentarios de: Programación en Lenguaje C (0)
No hay comentarios