1/21/2009 Facultad de Ciencias Departamento de Electronica Computación Programacion Basica Profesor: Dr. Jose Luis Tecpanecatl-Xihuitl Horario: 7:00 – 8:00 pm Lunes – Viernes Salon 24 E-mail : [email protected] [email protected] Asesorias: 1 1/21/2009 Contenido Unidad 1. Conceptos Basicos de Programacion 1.1 Algoritmos y pseudo-codigo 1.2 Estructura del lenguaje C 1.3 Compilacion y Ejecucion de un programa 1.4 Tipos de datos, variables y el operador de asignacion 1.5 Escritura de expresiones aritmeticas 1.5.1 Operadores aritmeticos 1.5.2 Prioridad de Evaluacion 1.6 Instrucciones de Entrada y Salida 1.7 Libreria matematica Math.h 1.8 Ejemplos de Programas Unidad 2. Toma de Decisiones 2.1 Escritura de expresiones booleanas 2.1.1 Operadores relacionales 2.1.2 Conectores logicos 2.2 Estructuras de Seleccion IF 2.2.1 IF e IF- ELSE 2.2.2 IF escalonado 2.2.3 IF anidado 2.3 Estructura de seleccion switch 2.4 El operador ? 2.5 Ejemplos de Programas Contenido Unidad 3. Estructuras de Repeticion 3.1 Estructuras de repeticion FOR 3.2 Estructuras de repeticion WHILE 3.3 Estructuras de repeticion DO-WHILE 3.4 Ciclos anidados 3.5 Enunciados Break y Continue 3.6 Ejemplos de Programas Unidad 4. Arreglos 4.1 Declaración y asignación de almacenamiento a arreglos. 4.2 Operaciones con Arreglos unidimensionales 4.2.1. Recorrido de un arreglo 4.2.2. Búsqueda 4.2.3. Ordenación 4.2.4. Inserción 4.3 Arreglos bidimensionales y ejemplos de aplicación 4.3.1. Recorrido de un arreglo 4.3.2. Búsqueda 4.4 Ejemplos de programas. 2 1/21/2009 Contenido Unidad 5. Cadenas de Caracteres 5.1 Concepto, declaracion y asignacion de almacenamiento 5.2 Operaciones con cadenas de caracteres: Libreria String.h 5.3 Ejemplos de aplicacion de cadenas de caracteres 5.4 Ejemplos de programas Referencias: Fundamentos de Programacion, Piensa en C Osvaldo Cairo Pearson Hall, 2006 El Lenguaje de Programacion C, Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall C How to Program, Deitel & Deitel Prentice Hall Evaluacion 3 Examenes parciales (cada 2 unidades) Tareas (Proyectos) 80% Examenes parciales 20% Tareas (Proyectos) Asistencia Exposicion en el salon de clases 3 Sesiones de Laboratorio. 3 1/21/2009 Politica del Curso No se tolerara copiar Compañeros de clase Codigo de Internet Codigo de Libros Telefono (Usar Referencia) Las Tareas (projectos) seran individuales Unidad 1. Porque aprender a programar? Forma metodica de resolver problemas Herramienta utilizada para resolver problemas en diferentes areas como: ciencias, tecnologicas, economicas, artes y sociales. Electronica Importante herramienta para calculos numericos como: 4 1/21/2009 Unidad 1. Simulacion de circuitos Simulacion de sistemas de control, comunicaciones, sistemas digitales y analogicos, Procesamiento de señales como: imagenes, video, biomedicas, sismicas, etc. Unidad 1. Cada vez la programacion tiene una mayor relevancia porque: Programa DSP (Digital Signal Processor) Aplicacion FPGA Field Programmable Gate Array MicroControllers 5 1/21/2009 Aplicaciones: Communicaciones Automotriz Robotica Industria manufacturera Articulos del hogar Juguetes Que es una computadora? Dispositivo capaz de realizar calculos numericos y toma de decisiones logicas a grandes velocidades Computadoras Personales Calculadoras Computadoras de Proposito Especifico Supercomputadoras Las computadoras procesan datos bajo el control de un conjunto de instrucciones llamadas programa computacional. 6 1/21/2009 Organizacion de una computadora Unidad de Entrada Unidad Central de Procesamiento (CPU) Unidad Aritmetica Logica (ALU) Unidad de Memoria Unidad de Salida Unidad de Memoria Secundario Mouse Monitor Teclado Lector de codigo de barras Camara de video Scanner Esta Unidad es la encargada que coordina de arealizar la computadora y es la responsable operaciones aritmeticas de supervisar como: Suma, otras unidades. Resta, Esta unidad es la llamada memoria principal, Por Multiplicacion Ejemplo: y Division. Esta unidad oesrapida. llama de memoria de larga primaria Esta unidad esalta la encargada de realizar inidcarle a la duracion o de Esta memoria escapacidad de baja capacidad unidad operaciones de entrada logicas, cuando como tomar comparar informacion dos numeros de la Esta unidad es lenta comparada con la memoria Esta unidad retiene informacion que ha sido unidad de la unidad de memoria. de memoria principal adquirida por las unidades de entrada y que puede Le dice la unidad ALU cuando la informacion de la Esta Unidad pricipalmente o estar disponible para su almacena inmediato Programas procesamiento unidadusados de memoria puede ser parameses realizar datos posiblemente en tomada horas, dias, o calculos años Impresion en papel Salida para controlar otros dispositivos etc Como nos communicamos con la Computadora? Por medio de Lenguajes de Programacion Algunos son entendibles y otros necesitan de pasos de traduccion intermedios Lenguajes de Maquina Lenguajes Ensambladores Lenguajes de Alto Nivel 7 1/21/2009 Lenguajes de Maquina Lenguaje natural de una computadora en particular y esta definido por medio de su hardware. Este lenguaje consiste de una cadena de 0s y 1s que le dicen a la computadora como realizar sus mas elementales operaciones una a la vez. +1300042774 +1400593419 +1200274027 Lenguaje Ensamblador Es un lenguaje que traduce el lenguaje de maquina a un lenguaje de mnemonico Cada patrón binario asociado a una instrucción es también asociado a un mnemónico. El conjunto de mnemónico forma el ensamblador del microprocesador. LOAD BASEPAY ADD OVERPAY STORE GROSSPAY 8 1/21/2009 Lenguaje de Alto Nivel Lenguajes que permiten escribir programas cercano al lenguaje que los seres humanos usamos (Ingles) for i = 1:10 C = A + B If A < B C = A - B 1.1 Algoritmos y pseudo-codigo Que es un algoritmo? Serie de acciones en un orden especifico para solucionar un problema Problema a Resolver: Cubo de Rubik 26 - 29 movimientos Buscadores en internet 9 1/21/2009 En la vida diaria aplicamos algoritmos, incluso sin darnos cuenta de ello de manera automatica. Al abrir una puerta Al subir al autobus Lustrando zapatos Al realizar una llamada Tomar un vaso de agua Etc, etc. Etapas para solucionar un algoritmo Problema a Resolver Analisis del Problema Construccion del Algoritmo Verificacion del Algoritmo 10 1/21/2009 Las 3 principales características que debe tener un algoritmo: Precisión • Los pasos a seguir en el algoritmo deben ser claros y precisos Determinismo • El algoritmo siempre debe de proporcionar los mismos resultados. Finito • El numero de pasos del algoritmo deber ser finito Todo algoritmo sigue tres pasos que son: Datos de entrada Procesamiento de los Datos Datos de Salida 11 1/21/2009 1.1 Algoritmos y pseudo-codigo Problema a Resolver: Ponchadura de una llanta Paso 1: Freno de Mano Paso 2: Sacar llanta de refaccion y gato hidraulico Paso 3: Aflojar tuercas de llanta Paso 4: Colocar gato hidraulico y se eleva el auto Paso 5: Quitar llanta dañada y colocar llanta nueva Paso 6: Colocar tuercas y retirar gato hidraulico Paso 3 ↔ Paso 4 1.1 Algoritmos y pseudo-codigo Ejemplos de Algoritmos: Imaginemos el caso de un programa que busque un numero dentro de un conjunto ordenado de 1000 elementos. Una solucion es: Recorrer la lista de numeros desde el principio hasta encontrar el numero buscado [1, 2, 3, 4, …, 1000] 12 1/21/2009 1.1 Algoritmos y pseudo-codigo Ejemplos de Algoritmos: Encotrar el numero mas grande de un conjunto de numeros aleatorios. Una solucion es comparar cada uno de los numeros con el resto de ellos. El mayor [1, 20, 13, 4, 5, 7,10, 2] 1.1 Algoritmos y pseudo-codigo Pseudo-Codigo Que es? Lenguaje informal que ayuda al programador a desarrollar algoritmos El pseudo-codigo puede ser facilmente convertido a lenguaje estructurado como “C” El pseudo-codigo no puede ser ejecutado por la computadora. El pseudo-codigo consiste de declaraciones que se van a ejecutar Int i 13 1/21/2009 1.1 Algoritmos y pseudo-codigo Ejemplos de Pseudo-codigo. Imaginemos el caso de un programa que busque un numero dentro de un conjunto ordenado de 1000 elementos. 1. 2. 3. 4. 5. Asignar un indice a la posicion del primer elemento del vector Si el indice coincide con el ultimo elemento terminar Comparar el numero objetivo con el elemento del vector situado en la posicion indice. Si son iguales, se ha encontrado el numero objetivo Incrementar el indice Volver al paso 2 Algoritmos y pseudo-codigo Ejemplos de Pseudo-codigo. Encotrar el numero mas grande de un conjunto de numeros aleatorios. 1. Asignar al primer elemento una etiqueta de el mayor numero. 2. Comparar este numero con el siguiente numero y si el numero con etiqueta es mayor continuar. De lo contrario asignar a este numero numero la etiqueta y continuar hasta finalizar con el conjunto de numeros 14 1/21/2009 Diseñe el pseudo código de la siguiente tarea: Convierta la longitud y peso de un objeto en pies y libras a su equivalente en metros y kilos: Un pie equivale a 0.09290 metros Una libra equivale a 0.45359 kg. Diseñe el pseudo código de la siguiente tarea: Calcule e imprima el área y volumen de un cilindro. Proporcionando el radio y altura. volumen = pi * radio*radio * altura area = 2 * pi * radio * altura 15 1/21/2009 Datos Pie, Libra Conversión Metro ← Pie * 0.09290 Peso ← Libra* 0.45359 Desplegar el resultado Metro Peso Estructura del lenguaje C Estructura del Lenguaje C El lenguaje C es creado en 1972 en los Laboratorios Bell de AT&T y en 1978 sus creadores Kernighan & Ritchie publican el primer libro sobre C. Permite la creacion de programas transportables, es decir, programas que pueden ejecutarse sin cambios en multitud de computadoras. 16 1/21/2009 Estructura del lenguaje C Es un lenguaje pequeño, el cual ofrece sentencias de control sencillas y funciones. Mecanismos de alto nivel se ofrecen fuera del lenguaje y se ofrecen como funciones de biblioteca, como E/S Estructura del lenguaje C Programacion Estructurada Dividir la aplicacion en modulos Cada modulo puede ser dividido en funciones los cuales resuleven una tarea especifica Cada bloque de codigo tiene un punto de entrada y de salida unico. (Saltos incodicionales no son usados como goto) Cuando la ejecucion de un bloque finaliza, continua con otro y finaliza. 17 1/21/2009 Estructura de un programa en C Programa en C /* * Programa: Prog_1.c * Este programa imprime un saludo al usuario */ #include <stdio.h> #define DESTINO “lector” /* * Prototipo de funciones */ int imprimir_saludo (char * destino); int main(void) { imprimir_saludo (DESTINO); /* Terminacion del programa */ return(0); /* correcto */ } /* Funcion que imprime el mensaje al usuario */ int imprimir_saludo (char * destino) { printf(“Hola %s.\n”, destino); return(0); } Archivos que se indican en “ #include “, en este caso son funciones para desplegar el mensaje en pantalla Se declaran las funciones que incluyen en el programa, inlcuyendo: 1. Nombre de la funcion 2. Sus parametros 3. Tipo que devuelve Siempre debe existir una funcion principal, llamada main( ), Esta funcion marca el punto de incio de la ejecucion de nuestro programa Esta funcion es unica y delimita el tamano del programa mediante las llaves { } Por ultimo se incluye el codigo de de las funciones del programa Compilacion y Ejecucion de un programa Compilacion: Conversion de un lenguaje de programacion a un lenguaje de maquina Este proceso es desarrollado por un programa especial llamado compilador Existen diferentes fabricantes de compiladores Ejecucion de un programa Edicion del programa Compilacion Ejecucion 18 1/21/2009 Compilacion y Ejecucion de un programa Codigo Fuente Miprograma.c Compilador Miprograma.obj Linker Miprograma.exe Ejecutable Codigo Objeto Programa en C Lenguaje ensamblador o de maquina Combina los archivos objetos y las bibliotecas de forma que puedan ser ejecutados como una sola unidad Principales elementos del lenguaje: Comentarios Son utiles para describir cada parte del codigo que se esta escribiendo. Ejemplos: /* Este es un programa prueba */ n = 2 + 3; /* Este seccion del codigo realiza la suma de 2 y 3 */ n = 2 + 3; // Este seccion del codigo realiza la suma de 2 y 3 19 1/21/2009 Compilacion y Ejecucion de un programa Principales elementos del lenguaje: Identificadores. Es un nombre que se asigna a distintos elementos de un programa como: variables, nombres de funciones Se usan caracteres alfa-numericos y el guion bajo ( _ ), aunque no pueden empezar con numero. C es sensible a las mayusculas y minusculas. Ejemplos: mi_var_2 Mi_var_2 2_result_3 2_Result_3 Palabras reservadas Son identificadores pre-definidos por el lenguaje y tiene un significado especial para el compilador. Ejemplos: for if else main int Sentencias en C Estan construidas por un conjunto de identificadores y palabras reservadas 20 1/21/2009 Separadas por espacios en blanco y terminadas con un punto y coma al final “ ; ” Ejemplos: int a, b; a = 5; b = 2 + a; Variables y Tipos de Datos El Lenguaje C tiene varios tipos de datos predefinidos. Ejemplo: int a; Define una variable a del tipo entero Cuando se define a una variable, esta esta asociada con una determinada zona dentro de la memoria de la computadora. Las variables pueden cambiar de valor durante la ejecucion del programa Se deben definir antes de ser utilizadas tipo_de_dato tipo_de_dato var; var0, var1, var2, … ; // mismo tipo !Se recomienda utilizar nombres de variables que esten relacionadas con los datos que estan utilizando! Variables con valor inicial tipo_de_dato var = valor; 21 1/21/2009 Tipos de datos basicos caracteres, numeros enteros y numeros reales Caracteres: char es empleada para representar caracteres ‘a’ ‘X’ ‘3’ constantes tipo char char letra; //definicion de una variable llamada letra char letra = ‘a’; // Asignar un valor a una variable char // cuando es definida Representacion Numerica En C se tienen varios tipos de numeros Enteros (int) Reales (float) Enteros: int short long long long short signed short short int signed short int unsigned short unsigned short int Long signed long long int signed long int unsigned long unsigned long int 22 1/21/2009 Flotantes float double long double numeros reales de precision normal numeros reales de double precision numeros reales de mayor precision Constantes Se permite definir constantes simbolicas que representan un valor determinado que n cambia a lo largo del programa. Ejemplo: #define nombre_constante valor #define pi 3.1416 #define const_1 0.3333 Una forma alterna de definir una constante es: const int pi = 3.1416; Cual es la diferencia entre ambas formas de definir variables? • “ #define “ el preprocesador sustituye el valor de la constante por su valor literal en todo el programa. • “const” es manejada como una variable con un valor constante y este no cambia durante la ejecucion del programa. 23 1/21/2009 Escritura de datos con printf Esta funcion permite escribir valores y variables Ademas permite dar formato a la salida printf(formato, arg1,arg2,…,argN) formato incluye la cadena de caracteres a imprimir y una serie de especificaciones de formato El especificador de formato indicara la forma en como se imprimiran los datos que se encuentran en arg1,arg2,…,argN printf(“valores: %d %d %d %d”,234, 4, 3, -9); codigo Formato codigo Formato %c caracter %f Punto flotante %d Entero con signo %s Cadena de caracteres %i Entero con signo %u Entero sin signo %e Notacion cientifica %% Un signo '%' %E Notacion cientifica Ejemplos: float b = 123.25 printf(“%f\n ”, b); printf(“%e\n ”, b); printf(“%g\n ”, b); 123.250000 1.232500e+02 123.25 printf(“Hola Lector”); printf(“ a continuacion le muestro\t el valor: “); printf(“%\n %d \n ”, 28); Hola Lector a continuacion le muestro 28 el valor: 24 1/21/2009 Operador Asignacion Este operador es utilizado para construir sentencias de C ( = ). Mediante este operador se asigna el valor de una expression a una variable. int a = b = a = a, b; 5; a + 2; b; int a = 4, b = 10 , c = 4; float z, d = 1.1; z = a + b /c * d; z = ? float num = 4.15; a = b = c =0; Escritura de Expresiones Aritmeticas Operadores Aritmeticos Permiter realizar operaciones con constantes y variables Aritmeticos Logicos Relacionales Aritmeticos Operador Funcion + Suma - Resta / Division * Producto % Modulo 25 1/21/2009 Operadores unarios + y – Estos operadores indican el signo del operando. +4 indica que el valor es 4 y tiene signo positivo -a indica que una variable a se toma con signo negativo: -a = -1 * a Division Si la division es entre dos numeros enteros el el resultado es un entero: 9/4 el resultado es 2 y no 2.25 Para el operador modulo (%) y division (/): a/b y a%b estan indefinidas si b=0 El tipo char y sus variantes signed char y unsigned char son cosniderados de tipo entero y su valor coinside con el codigo ASCII del caracter que representa. char letra = ‘A’ // lo que se almacena en “letra” es el // codigo ASCII de la letra ‘A’ que es // 65 printf("Letra = %c; Numero = %d\n", letra, letra); Letra A; Numero = 65 26 1/21/2009 Reglas de conversion aritmetica Cuando se aplica un operador aritmetico sobre operandos de distinto tipo el operando de menor precision se convierte de forma implicita al tipo de mayor precision. Reglas: 1. 2. 3. Si uno de los operandos es long double el otro se convierte en long double En caso contrario, si uno de los operandos es del tipo double, el otro se convierte a double En caso contrario, si uno de los operandos es del tipo float, el otro se convierte a float 1. En el caso de Enteros: 1. Si ambos opernados son enteros con signo tipo (signed) o enteros sin signo (unsigned), el operando con menor rango de vlaores se convierte al de mayor rango: int a; 1. short b; b se convierte a int En caso contrario, si el operando sin signo tiene un rango mayor o igual de valores que el tipo del otro operando, entonces el operando con signo se convierte al tipo del operanso sin signo En caso contrario, si el tipo de operando con signo puede representar todos lo valores del tipo del operando sin signo, entonces el operando sin signo se convierte al tipo del operando son signo. En caso contrario, si el tipo de operando con signo puede representar todos lo valores del tipo del operando sin signo, entonces el operando sin signo se convierte al tipo del operando son signo. Ejemplo: long nl = 2000; unsigned short nu = 4890; float nf = 9892; double nd = 0.00023; nl + nu = nu + nf = nf + nd = (ambos se convierten a long y el resultado es del tipo long) (nu se convierte a float y el resultado es del tipo float) (nu se convierte a double y el resultado es del tipo double) 27 1/21/2009 Programa Ejemplo: Realizar un programa que convierta una temperatura dada en grados Fahrenheit a su correspondiente temperatura en grados centigrados utilizando la formula: centigrados = (5 / 9) (Fahrenheit - 32) float centigrados; float fahrenheit = 82; centigrados = (5/9) * (fahrenheit – 32); printf(“Grados Fahrenheit %f”) Conversion de tipos explicita (casting) En algunos casos esta conversion se desea controlar . (tipo) expresion constante, variable o expresion con operadores La expresion se convierte al valor resultante de evaluar “expresion” al tipo indicado por tipo (float) 5/9 /* Asi el valor 5 se convierte a float y por las reglas anteriores el otro de tipo entero se convierte a float y el resultado es tambien de tipo float */ 28 1/21/2009 Ejemplo: Se desea obtener solo la parte entera de la operacion de dos numeros reales: float valor_real = 9/5.0; int valor_entero; valor_entero = (int) valor_real; Cuando en una sentencia de asignacion los dos operandos son de tipo distinto, el valor del operando de la derecha sera automaticamente convertido al tipo del operando de la izquierda siguiendo las siguientes reglas Formas abreviadas x = x + 5; #include <stdio.h> int main() { int x, y; x = 3; y = 5; x += 2; printf( "x = %i\n", x ); x += y; printf( "x = %i\n", x ); } x += 5 //esto equivale a x = x + y Operador : Incremento /Decremento (++) (--) x = x + 1; x++ x = x - 1; x-- #include <stdio.h> int main() { int x = 5; x++; printf ( "Valor de x = %i\n", x ); x++; x--; printf ( "Valor de x = %i\n", x ); } 29 1/21/2009 Si el operador precede al operando, el valor del operando se modificara antes de su utilizacion. ++a --a Si el operador sigue al operando, el valor del operando se modificara despues de su utilizacion. a++ a- Los operadores de incremento y decremento tienen mayor prioridad que los operadores aritmeticos y se evaluan en las expresiones de derecha a izquierda #include <stdio.h> int main( ) { int a = 1; printf(“a = %d \n”, printf(“a = %d \n”, printf(“a = %d \n”, printf(“a = %d \n”, a); ++a); a++); a); } Prioridad de Evaluacion Prioridad de evaluacion de operadores aritmeticos La prioridad de los operadores indica el orden en el que se realizan las operaciones aritmeticas. Prioridad Operador 1 2 3 Signo mas (+), signo menos ( - ) * / + % - Dentro de cada categoria las operaciones aritmeticas se realizan de izquierda a derecha. A este orden se le denomina asociatividad #include <stdio.h> int main( ) { int a = 4, b = 7, c resultado = a + b * resultado = a * b / resultado = (a + b) } = 3, d c; c * d; * (d / = 9; int resultado; printf(“Resultado = %d\n”, resultado); printf(“Resultado = %d\n”, resultado); c); printf(“Resultado = %d\n”, resultado); 30 1/21/2009 a = 4, b = 5, c = 2, d = 6, a*b/c*d 20 / c * d 10 * d (a + b) * (d / c) 9 * 3 27 60 Los parentesis cambian el orden de evaluacion. Si una expresion contiene parentesis, lo primero en evaluarse son las expresiones dentro de ellos. resultado = a * b / printf(“Resultado = resultado = (a + b) printf(“Resultado = c * d; %d\n”, resultado); * (d / c); %d\n”, resultado); Ejercicios: #include <stdio.h> int main( ) { int a, c; a = 5; c += a +5; return 0; } // ----------------------------------------------------------#include <stdio.h> int main() { int a, b, c; a = 5; b = ++a; c = ( a + 5 * 2 ) * ( b + 6 / 2 ) + ( a * 2 ); printf( "%i, %i, %i", a, b, c ); } // Cual es el resultado? 31 1/21/2009 Ejercicios: Determine el valor de las siguientes expresiones en numero entero: a) b) c) d) e) 2 * 3 / 12 * 8 / 4 10 * (1 + 7 * 3) (20 - 2) / 6 + 3 20 - 2 / (6 + 3) (10 + 3) % 4 = 6/12 * 8/4 = 0* 8/4 = 0 / 4 = 0 = 10* (1 + 21) = 10 * 22 = 220 = 18 / 6 + 3 = 3 + 3 = 20 - 2/ 9 = 20 – 0 = 20 = 13 % 4 = 1 int d = 1, v = 50, n = 10, t = 5; a) b) c) d) e) f) n / t + v / t + v – 3 * 18 / t; -t * n; (v + n) 3; n – 10 * d; n + 4 * d; / (t + d); // Evalue las siguientes //expresiones: = 10 / 5 + 3 = 2 + 3 = 5 = 50 / (1 + 21) = 10 * 22 = 220 = 18 / 6 + 3 = 3 + 3 = 20 - 2/ 9 = 20 – 0 = 20 = 13 % 4 = 1 Mas ejercicios: #include <stdio.h> main() { int a, b; a = b = 5; printf("%d\n", ++a+5); printf("%d\n", a); printf("%d\n", b++ +5); printf("%d\n", b); return 0; } int i,j; float f; i = 5; j = 2; f = 3.0; f = f + j/i; printf("value of f is %f\n", f); 32 1/21/2009 Nº de Bits Valores posibles (Rango) Caracteres 8 -128 a 128 0 a 255 int enteros 16 -32.767 a 32.767 0 a 65.535 long enteros largos 32 -2.147.483.647 a 2.147.483.647 0 a 4.294.967.295 float Nums. reales (coma flotante) 32 3,4E-38 a 3,4E38 double Nums. reales (coma flotante doble) 64 1,7E-307 a 1,7E308 Tipo Datos almacenados char Rango usando unsigned 1.6 Instrucciones de entrada y salida Instrucciones de Entrada y Salida Las funciones de entra/salida, son funciones de biblioteca especificadas standard en la libreria <stdio.h> printf, scan scanf: cuando se desea leer un dato y almacenarlo en una variable se utiliza esta funcion. Tiene un farmato generico igual al de printf. \n Nueva línea \t Tabulador \b Espacio atrás \r Retorno de carro \f Comienzo de página \a Pitido sonoro \¿ 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) scanf (formato, arg1, …, argN); 33 1/21/2009 Ejemplos: #include <stdio.h> main() { char c; int e; float r; printf("Introduzca un caracter: "); scanf("%c", &c); printf("Introduzca un numero entero: "); scanf("%d", &e); printf("Introduzca un numero flotante: "); scanf("%f", &r); printf(“Usted a introducido los siguientes caracteres: %f" } Leer una cadena de caracteres. #include <stdio.h> main() { char cadena[128]; printf("Introduzca un cadena de caracteres: "); scanf("%s", cadena); printf("Usted a introducido: %s\n“,cadena); } 34 1/21/2009 1.7 Libreria Matematica Libreria Matematica math.h Es una libreria standard del lenguaje de programacion C diseñada para operaciones matematicas basicas. La mayoria de las funciones considera el uso de numeros flotantes Funciones trigonometricas: #include<math.h> Las funciones trigoometricas regresan un valor en radianes sin Seno cos Coseno sinh Seno hiperbolico cosh hyperbolic cosine tan Tangente tanh Tangente hiperbolica acos Arccosine asin Arcsine atan Arctangent Exponencial, logaritmo y funciones de potencia Funciones exp Funcion exponencial e frexp fraccion y potencia de 2. log Logaritmo natural log10 Logaritmo base-10 pow(x,y ) Calcula un valor exponente xy sqrt Raiz cuadrada Las funciones en la libreria regresan un valor en radianes 35 1/21/2009 Otras funciones matematicas Funciones ceil Regresa el valor entero mas pequeño mayor o igual a x round Regresa el valor mas cercano a x fabs Regresa el valor absoluto de un numero floor Regresa el valor entero mas grande menor o igual a x Fmod Regresa el residuo de una division x/y La libreria <math.h> provee tambien las siguientes contantes M_E Valor de e M_2_PI Valor de 2/pi M_LOG2E Valor de log2e M_2_SQRTPI Valor de 2/√pi M_LOG10 E Valor de log10e M_SQRT2 Valor de √2 M_LN2 Valor de loge2 M_SQRT1_2 Valor de 1/√2 M_LN10 Valor de loge10 M_PI Valor de pi M_PI_2 Valor de pi/2 M_PI_4 Valor de pi/4 M_1_PI Valor de 1/pi 36 1/21/2009 Como usar las funciones de la libreria math.h #include <stdio.h> #include <math.h> int main() { float a = 2, f =1; double d = 4; f = M_PI*sin(a) + sqrt(d); printf("f = %f\n”, f); f = pow(d,a); printf("f = %f\n”, f); return 0; } 37