Sistemas
Juan C. Dueñas Joaquín Seoane T. de Miguel A. Gómez Flechoso Dpto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid
El lenguaje C, diapositiva 1 (22/08/06)
dit UPM
Objetivos
Leer y escribir programas en ANSI C 1. Tipos de datos simples 2. Estructuras de control 3. Funciones 4. Datos estructurados 5. Punteros 6. Preprocesador
Ellenguaje C, diapositiva 2 (22/08/06)
dit UPM
Historia de C
BCPL (1967), B (1970) no tipados, de sistemas. C (Ritchie, 1972), tipado, para SO portátiles. Ligado a UNIX desde 1973. ANSI-C (1989). ISO-C (1990). C99 (1999) Objective C. C++ (Stroustrup-Bell Labs- 1980s), orientado a objetos. Java (Gosling, 1997), orientado a objetos. Inicialmente empotrados,reorientado hacia Internet. Independiente de la plataforma. C# (Microsoft)
El lenguaje C, diapositiva 3 (22/08/06)
dit UPM
Características de C
C no es orientado a objetos:
No tiene clases, ni herencia, ni polimorfismo, ni objetos, ni métodos, ni excepciones
C suele compilarse a lenguaje máquina:
Suele ser más rápido que Java (en máquina virtual)
C es un lenguajepara programación de sistemas:
Bajo nivel, poco tipado, inseguro Acceso directo a primitivas del SO (llamadas al sistema) Gestión de memoria explícita en C (programador) El compilador de C hace pocas comprobaciones de tipos Los fallos suelen detectarse en tiempo de ejecución (depurador imprescindible para programador de C)
El lenguaje C, diapositiva 4 (22/08/06)
dit UPMEstructura de un programa
// Rutinas.java public class Rutinas { static void rutina() {} public static void main(String[]args) { int i, N; N= Integer.parseInt(args[0]); for (i=0; i java Rutinas 10000000
$> gcc rutinas.c –o rutinas $> ./rutinas 10000000
El lenguaje C, diapositiva 5 (22/08/06)
dit UPM
Tipos de datos
Fundamentales:
enteros reales enumerados array punteroestructura unión
Derivados:
El lenguaje C, diapositiva 6 (22/08/06)
dit UPM
Tipos fundamentales
Similares en Java:
void /* representa la nada o un tipo “indefinido” */ char c = ‘s’; /* entero 8 bits, suele representar un carácter */ int i = 25; /* entero de 16 ó 32 bits */ float f = 0.56; /* coma flotante de precisión simple */ double d = 0.56; /*coma flotante de doble precisión */ ¡En C no existe boolean! (las expresiones lógicas devuelven int) (C99 tiene boolean y complex) Tamaño: short, long, long long (C99) Signo: signed, unsigned (en Java no hay unsigned) sizeof(char) = 1 sizeof (short) = 4 >= 8
Modificadores enteros:
Tamaño y rangos de cada tipo dependen de la plataforma
El lenguaje C, diapositiva 7(22/08/06)
dit UPM
Conversiones y operadores
x Igual que en Java:
Conversión de tipos:
Implícita, promoción al de más rango: int + float = float Explícita: (double) integer Aritméticos (+ - * / %) Relacionales y lógicos (> >= < ~) Incremento/decremento (i++ ++i --i) Evaluación condicional (a>b) ? a : b Son operadores: a = b + 1; x = y = z = 3; u = (v = x) + y Combinables con otrosoperadores: i += 2; mask < >= == != & ^ && || ?: = += -= ,
El lenguaje C, diapositiva 11 (22/08/06)
Agrupación ->
dit UPM
Ejempos
a+b*c a/b*c a=b=c
= = =
a+(b*c) (a/b)*c a=(b=c)
≠ ≠ ≠
(a+b)*c a/(b*c) (a=b)=c (ilegal)
El lenguaje C, diapositiva 12 (22/08/06)
dit UPM
Funciones
Todas las funciones son globales
En Java todos los métodospertenecen a una clase
Espacio de nombres único para las funciones
En Java un espacio de nombres por clase
Manejo de errores: convenio sobre el valor devuelto por una función
if (f() < 0) error() if (f() == 0) ok()
En Java los errores se gestionan mediante excepciones
El lenguaje C, diapositiva 13 (22/08/06)
dit UPM
Declaración de funciones
Declaración o...
Regístrate para leer el documento completo.