INICIACIÓN A LA PROGRAMACIÓN EN C Estructura de un programa sencillo en lenguaje c: Librería estándar de entrada salida Llave de apertura para delimitar el cuerpo de la función Llave de cierre para delimitar el cuerpo de la función main( ) { printf("hola mundo"); Este programa consta de una función llamada main( ) Nombre de la función El punto y coma termina instrucciones del programa Una instrucción Ejemplo No. 1: 1) /* Programa que muestra un mensaje de saludo en el monitor */ 2) 3) main( ) 4) { 5) printf("hola mundo"); 6) 1) En está instrucción se muestra una manera de realizar comentarios en lenguaje C, deben comenzar con /* y terminar con */. Los comentarios no afectan la ejecución del programa y sirven para hacer anotaciones en el código fuente. 2) Las operaciones de entrada y salida en C se realizan por medio de funciones contenidas en la librería estándar de entrada y salida stdio.h. Ésta le indica al compilador que incluya dicha librería en el programa. 3) Se declara la función principal del programa. 4) { es el símbolo que delimita el inicio de la función principal. 5) La función de salida printf manda la cadena de salida indicada a la pantalla, en este caso se visualizará Hola mundo. 6) es el símbolo que delimita el fin de la función principal. * La ejecución del programa arrojará como salida: Hola mundo. 1
Ejemplo No. 2: 1) /* Programa que cambia de grados Celsius a Fahrenheit */ 2) 3) main( ) 4) { 5) float Fahren, Celsius; 6) printf("dame la temperatura en grados Celsius: \n"); 7) scanf("%f",&celsius); 8) Fahren=32+(9.0/5.0)*Celsius; 9) printf("el valor de la temperatura en grados Fahrenheit es: \n %f", Fahren); 10) 5) float Fahren, Celsius indica que se declaran dos variables Fahren y Celsius de tipo real o flotante para ser utilizadas en la función principal (main). Esta instrucción sirve como ejemplo para mostrar cómo se declaran variables en lenguaje C, para ello se debe indicar el tipo de variable (float, int, char, etc.) seguido del nombre de la variable o constante. En caso que se requiera declarar más de una variable del mismo tipo es necesario poner una delante de la otra separadas por comas. También es posible asignarles un valor inicial al momento de declararlas, por ejemplo: float longitud= 4.3, volumen=7.8;. 6) En la cadena de salida se observan los símbolos \n que forman parte del conjunto de instrucciones de C llamadas secuencias de escape, se les denomina así porque el símbolo \ está considerado como un caracter de escape: escapa de la interpretación normal de la cadena, ya que reconoce un significado especial para el carácter que está después de él. Con \n se imprimirá un retorno de carro (enter) y se posicionará el curso al inicio de la nueva línea. 7) La función de entrada scanf, contenida en la librería estándar de entrada y salida stdio.h, lee del teclado un número de tipo flotante (indicado por %f) y lo almacena en la localidad de memoria en la que se encuentra la variable Celsius (indicado por &Celsius). 8) El compilador toma el valor de Celsius obtenido por la instrucción scanf para realizar las operaciones y asignar el resultado a Fahren. 9) En esta instrucción, printf imprime la cadena de salida El valor de la temperatura en grados Fahrenheit es: y la secuencia de escape \n, una vez que encuentra %f reconoce que imprimirá un valor de tipo flotante que corresponde a Fahren. * La ejecución del programa dando como entrada 68.4 o C arrojará la salida: Dame la temperatura en grados Celsius: 68.4 El valor de la temperatura en grados Fahrenheit es: 155.120010 2
Ejemplo No. 3: main( ) { printf( %s esta a %d millones de millas \n del sol., Venus, 67); La salida de éste programa será: Venus esta a 67 millones de millas del sol. Los valores de la derecha se introducen en orden, en los especificadores de formato contenidos en la cadena de la izquierda: printf( %s esta a %d millones de millas \n del sol., Venus, 67); Ejemplo No. 4: Señal de especificación de formato. Anchura del campo y sangría. Número de dígitos a la derecha del punto decimal. Indica formato decimal en punto flotante. % 8. 1 f printf( %8.1f %8.1f %8.1f \n, 3.0, 12.865, 523.98); La salida de esta instrucción en pantalla sería: 3.0 12.9 524.0 El especificador de formato en printf( ) determina el tipo de variable, la anchura del campo, el número de dígitos decimales a imprimir y la sangría. 3
Ejemplo No. 5: main ( ) { int suceso; char carrera; float tiempo; printf( Introduzca el numero de suceso, letra de la carrera y tiempo: ); scanf( %d %c %f, &suceso, &carrera, &tiempo); printf( El tiempo del ganador en la carrera %c, carrera); printf( de suceso %d fue %.2f, suceso, tiempo); Si se ejecuta el programa y se introducen los valores 4, B y 36.34 para el número de suceso, letra de la carrera y tiempo respectivamente, la salida sería: Introduzca el numero de suceso, letra de la carrera y tiempo: 4 B 36.34 El tiempo del ganador en la carrera B de suceso 4 fue 36.34 Gráficamente esto se ve de la siguiente manera: Empleo de scanf( ) con entradas múltiples Valores y espacios introducidos por el usuario 4 B 36.34 1 Las variables introducidas por el usuario son interpretadas por la cadena de formato. scanf("%d %c %f ", &suceso, &carrera, &tiempo); 2 Cada especificador de formato está unidoa una variable. suceso carrera tiempo 3 Los valores son almacenados en celdas contiguas de memoria con el tamaño adecuado para cada variable. 4
FORMATOS PARA printf Y scanf Formato printf( ) scanf( ) Carácter simple %c %c Cadena %s %s Entero decimal con signo %d %d Entero decimal con signo %i Entero decimal, hexadecimal u octal %i Punto flotante (notación decimal) %f %f o %e Punto flotante (notación exponencial) %e %f o %e Punto flotante ( %f o %e, el más corto) %g Entero decimal sin signo %u %u Entero hexadecimal sin signo (usa ABCDEF ) %x %x Entero octal sin signo %o %o l prefijo utilizado con d, u, x, o, i, para denotar entero largo, y antes de %f, %e y %g para doble precisión (ejemplos: % ld, % lf). h prefijo empleado con d, u, x, o, i, para denotar entero corto SECUENCIAS DE ESCAPE PARA printf La lista siguiente muestra las secuencias de escape más comunes. Secuencia Significado \n Nueva línea \t Tabulador \b Espacio atrás \r Retorno de carro \f Comienzo de página \ Comilla simple \ Comilla doble \\ Barra invertida \xdd Código ASCII en notación hexadecimal (cada d representa un dígito) \ddd Código ASCII en notación octal (cada d representa un dígito) 5
TIPOS DE DATOS EN C Tipo Significado Ancho en bit Rango de valores (IBM PC) char caracter 8-128 a127 int entero 16-32,768 a 32,767 short entero corto 16-32,768 a 32,767 long entero largo 32-2,147,483,648 a 2,147,483,647 unsigned char caracter sin signo 8 0 a 255 unsigned entero sin signo 16 0 a 65,535 unsigned short entero corto sin signo 16 0 a 65,535 unsigned long entero largo sin signo 32 0 a 4,294,967,295 enum enumerado 16 0 a 65,535 float real (Pto.flotante) 32 3.4E-38 a 3.4E+38 double real doble 64 1.7E-308 a 1.7E+308 Long double real doble largo 64 1.7E-4932 a 1.7E+4932 OPERADORES EN C Aritméticos: Lógicos: Relacionales: + suma - resta * producto / división % módulo (resto entero) OR lógico && AND lógico! NOT lógico < menor que > mayor que <= menor o igual que >= mayor o igual que!= diferente de De asignación compuesta: Precedencia de operadores + = operador de asignación suma - = operador de asignación resta * = operador de asignación multiplicación / = operador de asignación división % = operador de asignación módulo (resto entero) Prioridad Operación 1ª. ( ) 2ª.! 3ª. *, /, % 4ª. +, - 5ª. <, >, <=, >= 6ª. = =,!= 7ª. &&, 8ª. =, +=, -=, *=, /=, %= 6
Ejemplo No. 6: Quincena=Quincena-Gastos; equivale a Quincena-=Gastos;. El operador Incremento El operador de asignación suma dias = dias + 1; esto año = año + enero; esto es equivalente a es equivalente a dias++; esto año+=enero; esto Operador incremento Operador de asignación suma MÁS EJEMPLOS: A) /* Programa que manda un saludo por la pantalla*/ main( ) { printf("hola a todos"); B) /* Programa que imprime una letra, un numero entero y un numero real */ main( ) { char un_caracter; /* Esto declara un caracter. */ int un_entero; /* Esto declara un entero. */ float un_real; /* Esto declara un real. */ un_caracter = 'a'; un_entero = 15; un_real = 27.62; printf("%c es el caracter.\n", un_caracter); printf("%d es el entero.\n", un_entero); printf("%f es el real.\n", un_real); 7
C) /* Programa que lee e imprime: un entero, un real y un carácter dados por el teclado */ main( ) { int Num_Entero; float Num_Real; char Caracter; printf("\nintroduzca un caracter => \n"); scanf("%c", &Caracter); printf("el valor es => %c",caracter); printf("\nintroduzca un numero entero => \n"); scanf("%d", &Num_Entero); printf("el valor es => %d", Num_Entero); printf("\nintroduzca un numero real => \n"); scanf("%f", &Num_Real); printf("el valor es => %f", Num_Real); D) /* Programa que calcula la fuerza de gravitacion entre dos cuerpos. NOTA: F=(G*m1*m2)d^2, G=6.673*10^-11 Nm^2/Kg^2) */ main( ){ float G=6.673E-11, Fza_Grav, Masa_1, Masa_2,Distancia; printf("\n Programa que calcula la fuerza de gravitacion entre dos cuerpos."); printf("\n\n\n\tdeme la masa del cuerpo 1: "); scanf("%f", &Masa_1); printf("\n\tdeme la masa del cuerpo 2: "); scanf("%f", &Masa_2); printf("\n\tdeme la distancia que existe entre ellos: "); scanf("%f", &Distancia); Fza_Grav=(G*Masa_1*Masa_2)/(Distancia*Distancia); printf("\n\tcon \n\n\tmasa 1= %f, \n\tmasa 2= %f y \n\tdistancia=%f",masa_1, Masa_2,Distancia); printf("\n\n\tla Fueza de Gravitacion resultante es: %e", Fza_Grav); 8