Introducción a C Departamento D t t de d Lenguajes L j y Sistemas Informáticos Í di Índice 1. 2. 3. 4. El lenguaje de programación C 1. Estructura de un programa 2. Tipos básicos 3. Cadenas de caracteres 4. Entrada/Salida El compilador GNU de C Argumentos de línea de comandos Comando make Departamento de Lenguajes y Sistemas Informáticos 2 Ejemplo de un programa Declaración de importaciones Definición de constantes Declaración de tipos Prototipo de funciones e c ó de la a función u có p principal c pa ((main) a ) Definición { Declaración de variables locales Instrucciones ejecutables } Definición de funciones Departamento de Lenguajes y Sistemas Informáticos 3 Ejemplo de un programa #include #i l d < <stdio.h> tdi h> #include <math.h> #define PI 3.14159 Directivas del preprocesador /* Comentarios */ float obtenerValor(void); float areaCirculo(float); Prototipo de funciones int main (void) { float radio, area; Declaración de variables locales radio = obtenerValor() obtenerValor(); area = areaCirculo(radio); printf (“El área del círculo es %f”, area); return 0; } float obtenerValor() { …} float areaCirculo(float radio) {…} Función principal Definición e c ó de funciones u c o es Departamento de Lenguajes y Sistemas Informáticos 4 Estructura de un programa Fichero de cabecera: #ifndef __MINMAX__ #define __MINMAX__ int max( int value1, int value2, int value3); int min( int value1, int value2, int value3); #endif • Prototipo de funciones • Declaración de constantes • Declaración de tipos minmax.h #include "minmax.h" int min( int value1, int value2, int value3) { int minimum = value1; if (value2 < minimum) minimum = value2; if (value3 < minimum) minimum = value3; return minimum; } min.c #include "minmax.h" int max( int value1, int value2, int value3) { int maximum = value1; if (value2 > maximum) maximum = value2; if (value3 > maximum) maximum = value3; return maximum; } max.c Departamento de Lenguajes y Sistemas Informáticos 5 Tipos i básicos b i char h a = ‘b’; ‘b’ short a=0; int i,j=0; long l = 0; float f =1.5; double d=3.14; /* 1 byte b t */ /* 2 bytes */ /* 4 bytes */ /* 4 bytes en x86 – Depende del tamaño de palabra del procesador */ /* 4 bytes */ /* 8 bytes */ char cadena[SIZE_MAX]; enum {{Falso,, Cierto}; }; struct { char nombre[20]; char apellidos[50]; int edad; }; Departamento de Lenguajes y Sistemas Informáticos 6 Cadenas d dde caracteres #define MAXCAR 256 typedef char Cadena[MAXCAR]; Posibles declaraciones: char cadena[MAXCAR]={‘H’,’o’,’l’,’a’,’\0’}; char cadena[MAXCAR] = “Hola”; char cadena[] = “Hola”; Hola ; char *cadena = “Hola”; Cadena cadena=“Hola”; Biblioteca p para el manejo j de cadenas: string.h g Departamento de Lenguajes y Sistemas Informáticos 7 Entrada/Salida d / lid Entrada/Salida /S con formato f printf(“formato”, arg1, arg2, …, argn): Escribe una li t lista d de d t datos d de acuerdo d con un formato f t preestablecido. scanf(“formato”, f(“f t ” arg1, arg2, …, argn): ) Lee L valores l de la entrada estándar y asignarlos a las variables especificadas como argumentos. argumentos %c Carácter %ld Entero largo %lf Real (double) %d Entero %f Real (float) %s Cadena de caracteres Departamento de Lenguajes y Sistemas Informáticos 8 Ell compilador il d GNU de d C Archivos de biblioteca prog.c Compilar Enlazar prog.o prog Archivos incluidos (Ej. stdio.h) Departamento de Lenguajes y Sistemas Informáticos 9 Ell compilador il d GNU de d C gcc: Compilador C de programas escritos en lenguaje C y C++. Compilar: gcc -c fuente f t 1.c fuente f t 2.c … fuente f t n.c E l Enlazar: gcc -o binario fuente1.o fuente2.o … fuenten.o Departamento de Lenguajes y Sistemas Informáticos 10 Argumentos de línea de comandos i t main int i (int (i t argc, char h *argv[]) * []) { … return 0; } argc: Número de argumentos + 1 . argv: Array de cadenas de caracteres (argumentos). argv[0] = nombre con el que se invoca al programa. Ejemplo: >cat -b b f1.txt f1 txt f2.txt f2 txt f3.txt f3 txt argc =5 argv[0]=“cat”, argv[1]=“-b”, argv[2]=“f1.txt”, argv[3]=“f2.txt”, argv[4]=“f3.txt” Departamento de Lenguajes y Sistemas Informáticos 11 Comando d make k El comando make permite agilizar la compilación en proyectos de cierta envergadura facilitando la gestión automática de las dependencias de p compilación. Hace uso de ficheros de configuración denominados “Makefile” o makefile compuestos por reglas. reglas Una regla está compuesta por: “makefile” Una etiqueta: Distingue un grupo de acciones a realizar Requisitos: Ficheros necesarios para llevar a cabo las acciones. Acciones: Comandos C a ejecutar make comprueba automáticamente si los ficheros requeridos están actualizados ejecutando la acción apropiada en caso de que no lo estén. (Ej. Compilación de un fichero fuente para obtener el código objeto) Departamento de Lenguajes y Sistemas Informáticos 12 Comando d make k Ejemplo: mensaje: j mensaje.o j salida.o lid gcc -o mensaje mensaje.o salida.o mensaje.o: mensaje.c salida_alt.h gcc -c -g g g mensaje.c j salida.o: salida.c salida_alt.h gcc -c -g salida.c lid Departamento de Lenguajes y Sistemas Informáticos 13