UNIVERSIDAD DE COSTA RICA CI-0202 PRINCIPIOS DE INFORMATICA ESCUELA DE CIENCIAS DE LA COMPUTACION E INFORMATICA I semestre del 2000 Ejercicios 1 de laboratorio Semana del 6 al 1 de marzo El objeto de este laboratorio es familiarizarse con el uso del compilador Quick C. Practique los siguientes ejercicios ilustrativos de C. Nómbrelos como se designan en la primera línea, copie, compile y ejecute. Cuando termine, salga a DOS y ejecute individualmente todos los archivos con el mismo nombre pero con terminación EXE. Ejercicio 1. /* DIMINUTO.C -- El programa de C más simple */ /* posible con comentarios. */ main() /* Nombre de función y lista de argumentos. */ { /* Definición de la función entre llaves. */ } ******************************************* Ejercicio 2. /* TAMVAR.C -- Muestra la cantidad de memoria */ /* ocupada por los diversos tipos. */ main() { printf("El tamaño de un char en bytes es %d\n", sizeof(char)); printf("El tamaño de un int en bytes es %d\n", sizeof(int)); printf("El tamaño de un long en bytes es %d\n", sizeof(long)); printf("El tamaño de un float en bytes es %d\n", sizeof(float)); printf("El tamaño de un double en bytes es %d\n", sizeof(double)); } ****************************************** Ejercicio 3. /* DIRVARS.C -- Usa el operador & para obtener */ /* direcciones de variables. */ #include main() { char c1, c2; int i; long int lo; float f; double d; c1 = 164 ; c2 = 165 ; i = 12; lo = 1000000; f = 2.0; d = 10.0; printf("La dirección de c1= %10c es %5d\n", c1, &c1); printf("La dirección de c2= %10c es %5d\n", c2, &c2); printf("La dirección de i = %10d es %5d\n", i, &i); printf("La dirección de lo= %10ld es %5d\n", lo, &lo); printf("La dirección de f = %+10.2f es %5d\n", f, &f); printf("La dirección de d = %-10.5f es %5d\n", d, &d); } ****************************************** Ejercicio 4. /* Volumen.C para calcular el volumen de la esfera */ #include main() { float volumen, radio; radio = 3; volumen = 4 * 3.14 * radio * radio * radio / 3.0; printf("El volumen de una esfera de radio %f es %f", radio, volumen); } ****************************************** Ejercicio 5. /* VARSENT.C -- Declara, define e imprime */ /* algunas variables enteras. */ main() { /* Declaración de variables. */ int eslora, manga; unsigned int desplazamiento; /* Asignación de valores a las variables. */ eslora = 824; manga = 118; desplazamiento = 41676; /* Impresión de los valores. */ printf("El buque de guerra Bismarck tenía %d pies de eslora\n", eslora); printf("con una manga de %d pies\n", manga); printf("y un desplazamiento de %u toneladas.\n", desplazamiento); } ****************************************** Ejercicio 6. /* PUNTOS.C -- Define e imprime */ /* variables tipo int y long. */ main() { /* Declara algunas variables y les asigna */ /* valores en la misma sentencia. */ int locales = 5, visitantes = 2, entrada = 7, publico = 31300; long asistencia_total = 1135477; /* long int */ /* Impresión de los valores. */ printf("El marcador después de %d entradas es\n", entrada); printf("Locales %d, Visitantes %d.\n\n", locales, visitantes); printf("La asistencia de hoy es de %d personas.\n", publico); printf("La asistencia total hasta el momento ha sido de %ld personas.", asistencia_total); } ****************************************** Ejercicio 7. /* FLOATS.C -- Muestra valores de punto flotante en */ /* formato regular y exponencial. */ main() { float f1 = 2500.125, f2 = 0.0033, f3 = -50.99; printf("%f\t %e\n\n", f1, f1); printf("%f\t %e\n\n", f2, f2); printf("%f\t %e\n", f3, f3); } SECUENCIAS DE CONTROL DE C (Escape sequences) Sec. Nombre Sec. Nombre \a Alerta (bell) \v Tab vertical \b Backspace \' Comilla \f Nueva página \" Comillas \n Nueva línea \\ Backslash \r Retorno carro \ddd ASCII en notación octal \t Tab horizontal \xdd ASCII en notación hexadecimal Tipos de datos Otros nombres Rango de posibles valores char signed char de -128 a 127 int signed, signed int de -32,768 to 32,767 short short int, signed short, de -32,768 to 32,767 signed short int long long int, signed long, de -2,147,483,648 signed long int a 2,147,483,647 unsigned char - de 0 a 255 unsigned unsigned int de 0 a 65,535 unsigned short unsigned short int de 0 a 65,535 unsigned long unsigned long int de 0 a 4,294,967,295 enum - de -32,768 a 32,767 float - 3.4E ñ 38 (7 dígitos) double - 1.7E ñ 308 (15 dígitos) long double - 1.2E ñ 4932 (19 dígitos) Funciones de formato de printf: % Flags ancho.precisión tipo de formato +------------------------------+-------------------------------+ | Flags | Tipo formato: | | - (justificación izq.) | d,i (decimal con signo) | | + (prefijo con signo) | u (entero sin signo) | | blank (prefijo con blanco) | o (octal entero sin signo) | | # (modifies o,x,X, | x,X (hex integer sin signo) | | e,E,f,g,G) | f (decimal punto flotante) | +------------------------------+ e,E (notación científica) | | Tipo de prefijo | g,G (%e or %f; lo más corto) | | F (puntero far) | c (un solo carácter) | | N (puntero near) | s (string) | | h (short int) | p (puntero) | | l,L (long int o double) | n (nº de caracteres) | +------------------------------+-------------------------------+ Ejemplo: %+10.2f podrá mostrar el número -123456.50 (signo, 10 espacios y 2 decimales)