Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados Funciones 2 Contenido del Curso Apuntadores Asignación n de memoria dinámica y estructuras de datos Entrada/Salida El Pre-procesador de C 3 Escriba el título aquí 1
Contenido del curso Desarrollo de programas con varios módulosm Programación n Concurrente 4 (Características del lenguaje C) Es un lenguaje pequeño. Tiene menos palabras reservadas que PASCAL, pero es aún mucho más poderoso. C es portable. Tiene un conjunto muy poderoso de operadores. Es modular (soporta la modularidad pero no obliga a programar modularmente) 5 (Estructura de un programa en C) Los programas C consisten de módulos o piezas que se denominan funciones. Los programadores aprovechan una gran recopilación de funciones existentes, que se conoce como Librería Estándar de C. Una función llamada main es el punto donde comienza la ejecución del programa. Ejemplo 6 Escriba el título aquí 2
(Variables, Constantes, Declaraciones) Variables Dan nombres únicos a varios objetos dentro del programa. Representan una localidad en la memoria del computador. Sus nombres pueden estar formados por letras, dígitos y _ (underscores), pero no pueden comenzar con dígitos. Según el estándar ANSI sólo se reconocerán los primeros 31 caracteres. 7 (Variables, Constantes, Declaraciones) Las variables deben declararse antes de utilizarse con un nombre y un tipo de datos. En una misma línea se pueden declarar varias variables del mismo tipo. int a,b,c; C es case-sensitive: hace distinción de las minúsculas y mayúsculas. Las declaraciones sirven para dos propósitos: le dicen al compilador qué cantidad de espacio debe reservar. le permiten al compilador instruir a la máquina para efectuar las instrucciones correctamente. 8 Las palabras reservadas van en minúsculas Conceptos Básicos (Variables, Constantes, Declaraciones) main() { int integer1 = 2, integer2, sum; /* declaración */ integer2 = 20; sum = integer1 + integer2; printf( La suma de %d y %d es %d, integer1, integer2, sum ); return 0; /* indica que el programa terminó con éxito */ } 9 Escriba el título aquí 3
(Tipos de Datos Fundamentales) Los tipos base se dividen en tres grandes clases: Los enteros: int,, short int (16 bits), long int (32 bits), unsigned int. Números de coma flotante: float, double o long double Caracteres: char. 10 (Tipos de Datos Fundamentales) Tipos enteros signed: el bit más significativo se utiliza para representar el signo y el valor absoluto del número se codifica en los bits restantes (15 o 31). unsigned: sólo se representan números positivos o (nulos( nulos), utilizando todos los bits disponibles. 11 (Tipos de Datos Fundamentales) Tipos coma flotante La zona utilizada para el número n se descompone en tres partes: un bit reservado para el signo un espacio para el exponente: 8 bits en el float,, 11 bits en el double,, 14 en el long double. el resto para la mantisa: 23 bits en el float, 52 bits en el double,, 64 en el long double. 12 Escriba el título aquí 4
Ejemplos (declaraciones) int edad i, j = 3; signed long a,x; float z, temperatura; char c1, c2; 13 Conceptos BásicosB (Constantes) C manipula varias clases de valores enteros (29, 1234, etc), reales (3.14, 1.0e-5) que son ejemplos de constantes. a, b, etc, son constantes tipo caracter. Una secuencia de 0 o más caracteres encerrados entre comillas ( Yo estoy aquí ) es una constante de cadena o cadena literal. 14 Conceptos BásicosB (constantes) Las líneas: #define SIZE 10 #define PI 3.14159 definen constantes simbólicas. Una constante simbólica es un identificador que es reemplazado por el prepocesador, antes que el programa sea compilado. 15 Escriba el título aquí 5
Conceptos BásicosB (constantes) El uso de constantes hace el programa más comprensible. Si una constante se ha definido a través de #define y se usa en todo el programa, es mas fácil cambiar su valor posteriormente. Es posible declarar que el valor de una variable no cambie a lo largo de la ejecución de un programa: cons int n = 20; 16 Conceptos BásicosB (Constantes) Escritura de constantes enteras +533 48-273 Un 0 (cero) al comienzo de una constante entera indica que es un octal y 0x ó 0X que es hexadecimal. 31 decimal = 037 (octal) = 0x1f (hexa( hexa) 17 Conceptos BásicosB (Constantes) Escritura de constantes en coma flotante Decimal: 12.43-0.38 -.38 4. Exponencial: 4.24E4 48e13 542.7E-33-3e13 Por defecto, todas las constantes de coma flotante son creadas por el compilador del tipo double.. Sin embargo es posible imponerle el tipo: 1.25E03f (float( float) 1.0L (long double) 18 Escriba el título aquí 6
Conceptos BásicosB (Constantes) Escritura de constantes tipo caracter: Los caracteres imprimibles se escriben entre apóstrofes: strofes: a, y $. Los no imprimibles se imprimen usando el caracter \. Ejemplos: \n n LF (Line Feed) Salto de Línea \t t HT (Horizontal Tab) Tabulación Horizontal \v v VT (Vertical Tab) Tabulación Vertical \\ \ \f f FF (Form Feed) Salto de Página 19 Los operadores aritméticos son: +, -, *, /, % Son todos operadores binarios. p%q se define para p y q de cualquier signo como teniendo un valor absoluto igual a: p % q y el signo de p El cociente entre 2 enteros devuelve un entero, pero el cociente de dos números en coma flotante es un número en coma flotante. 5/2 = 2, pero 5./2. = 2.5 20 Reglas de precedencia (material de apoyo) Ejemplos m = a + b + c + d + e (álgebra( lgebra) 5 m = (a + b + c + e)/5 (C) Si se omiten los paréntesis, la expresión se calcula como: m = a + b + c + e/5 21 Escriba el título aquí 7
EXPRESIONES, INSTRUCCIONES Y ASIGNACION - Las expresiones son combinaciones de constantes, variables, operadores y llamadas a funciones. Ejm: a + b 3.0 * x - 9.66553 3+ sum(x,y) - La mayoría de las expresiones tienen un valor. - Si al final de una expresión se coloca un ; la expresión se convierte en una proposición: I = 7; z = 3+ sum(x,y); - 22 EXPRESIONES, INSTRUCCIONES Y ASIGNACION Las { } se emplean para agrupar declaraciones o proposiciones en una declaración compuesta o bloque. while (x == 1) {...} El operador de asignación es el signo = I = 7; la expresión como un todo toma el valor 7 El operador = se asocia de derecha a izquierda, de modo que: x = y = z = 0 se resuelve 23 x = (y = (z = 0)); int b = 5; a = b; if (a = 1) {... } int b = 5; a= b; if (a == 1) {... } 24 Escriba el título aquí 8
Operadores de Incremento y Decremento - Son operadores unarios. - Pueden aplicarse a variables, pero no a constantes o expresiones. - Pueden usarse como - prefijos: ++a (preincremento), --a (predecremento) - sufijos: a++ (postincremento), a-- (postdecremento). 25 int n = 5; x = n++; /* asigna 5 a x y el valor final de n = 6 */ x = ++n; /* asigna 6 a x n = 6 */ 26 Operadores RELACIONALES y IGUALDAD 27 de Los operadores relacionales permiten tomar decisiones en base a comparaciones. Son operadores binarios. Toman dos expresiones como operandos y producen el valor entero 0 ó 1. Escriba el título aquí 9
Los operadores relacionales tienen el mismo nivel de precedencia y se asocian de izquierda a derecha. Los operadores de igualdad tienen un nivel de precedencia menor que los operadores relacionales. También se asocian de izquierda a derecha. a < b == c < d se interpreta como: (a < b) == (c < d) 28 Precedencia de operadores aritméticos y relacionales (material de apoyo) x + y < a + 2 es equivalente a: (x+y) < (a + 2) 29 Operadores Lógicos && y!: cuando se aplican a las expresiones producen los valores enteros 0 ó 1. La negación lógica puede aplicarse a una expresión arbitraria. Si una expresión tiene el valor 0 o 0.0, su negación producirá el valor entero 1. Si la expresión tiene un valor distinto de 0 su 30 negación producirá el valor entero 0. Escriba el título aquí 10
Ejemplo!(2*(x+a)-3 - z ) Las tablas de la verdad para los operadores && y se pueden observar en el material de apoyo. En la evaluación de las expresiones que contienen && y, el proceso de la evaluación termina tan pronto se conoce el valor de la expresión 31 Ejemplo: while (a < b && c > 0) /* hacer algo */ Reglas de precedencia (MA). a < b && c < d equivale a (a < b) && (c < d) 32 Operador de asignación ampliada c = c + 3 puede abreviarse utilizando el operador de asignación ampliada, como: c += 3 En general, cualquier enunciado de la forma variable = variable operador (expresion) puede escribirse de la forma: variable operador = 33 expresion Escriba el título aquí 11
Operador de asignación ampliada k *= 3 + x Es equivalente a: k = k * (3 + x) y no a: k = k * 3 + x 34 Precedencia de Operadores a * b + c/d e 1. a*b -> > x 2. c/d -> > y 3. x + y -> > z 4. z - e 35 Escriba el título aquí 12