introducción al leguaje c
Marta Zorrilla
Universidad de Cantabria
1
Marta Zorrilla – Universidad de Cantabria
Introducción al C
Objetivos:
Presentar la historia del lenguaje C y sus
características principales.
Presentar la estructura de un programa en C
mediante ejemplos sencillos.
Contenidos:
1. La historia del C.
2. Características.
3. Miprimer programa en C.
2
Marta Zorrilla – Universidad de Cantabria
Historia del C
Muchas ideas provienen de BCPL (Martin Richards, 1967) y de B (Ken
Thompson, 1970).
C fue diseñado originalmente en 1972 para el SO UNIX en el DEC PDP-11 por
Dennis Ritchie en los Laboratorios Bell.
Primer Libro de referencia de C: The C Programming Language (1978) deBrian Kernighan y Dennis Ritchie.
En los 80, gran parte de la programación se realiza en C.
En 1983 aparece C++ (orientado a objetos).
En 1989 aparece el estándar ANSI C.
En 1990 aparece el estándar ISO C (actual estándar de C). WG14 se
convierte en el comité oficial del estándar ISO C.
En década de los 90, WG14 trabaja en el estándar C9X/C99 que resuelve
problemas de fiabilidad del ANSI C,amplia su funcionalidad con nuevos tipos
de dato, funciones matemáticas, arrays irrestringidos, etc.
3
Marta Zorrilla – Universidad de Cantabria
Características del C
Lenguaje de programación de propósito general, muy adecuado para
programación de sistemas (unix fue escrito en C).
Lenguaje relativamente pequeño: solo ofrece sentencias de control
sencillas yfunciones.
La E/S no forma parte del lenguaje, sino que se proporciona a través
de una biblioteca de funciones.
Permite la agrupación de instrucciones. Programación estructurada.
Permite la separación de un programa en módulos que admiten
compilación independiente. Diseño modular.
Programas portables.
4
Marta Zorrilla – Universidad de Cantabria
Inconvenientes del C
No es un lenguaje fuertemente tipado.
Es bastante permisivo con la conversión de datos.
Sin una programación metódica puede ser propenso a errores
difíciles de encontrar.
La versatilidad de C permite crear programas difíciles de leer.
#define _ -F ");
scanf("%s", cajas[registro].pieza);
/* Leer el número de piezas. */
printf("Numero de piezas => ");
scanf("%d",&cajas[registro].cantidad);
/* Leer el precio de cada pieza. */
printf("Precio de cada pieza => ");
scanf("%f", &cajas[registro].precio_unitario);
/* Indicar que el registro tiene datos, V */
cajas[registro].existe = 'V';
registro ++;
} while (registro < NUMCAJAS);
135
Marta Zorrilla – Universidad de Cantabria
Cont.
/* Imprimir la información. */
for(registro = 0; registro < NUMCAJAS; registro++)
{if(cajas[registro].existe == 'V')
{
printf("La caja %d contiene:\n", registro + 1);
printf("Pieza => %s\n", cajas[registro].pieza);
printf("Cantidad => %d\n",
cajas[registro].cantidad);
printf("Precio unitario => $%f\n",
cajas[registro].precio_unitario);
}
} /* Fin for. */
} /*fin main*/
136
Marta Zorrilla – Universidad de Cantabria
Paso de estructuras a funciones
Unafunción puede devolver una estructura.
Se pueden pasar miembros individuales y estructuras
completas a una función. Si la estructura es grande, el
tiempo para copiar un estructura (paso por valor) es
prohibitivo, por eso se aconseja pasarlo por referencia.
Paso de miembros individuales
struct punto
{
float x;
float y;
};
void imprime_x (float x)
{
printf ("el valor de x %f", x);
}/*llamada a función*/
imprime_x (p1.x);
137
Marta Zorrilla – Universidad de Cantabria
Paso de estructuras a funciones por
valor
Ej.: leer y escribir una fecha.
struct fecha leer_fecha(void)
{
struct fecha f;
printf("Dia: ");
scanf("%d", &(f.dia));
printf("Mes: ");
scanf("%d", &(f.mes));
printf("Anno: ");
scanf("%d", &(f.anno));
return(f);
#include
struct fecha
{...
Regístrate para leer el documento completo.