La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

27/07/14 Catedra de Programacion I 1 Programación I Operadores y Expresiones.

Presentaciones similares


Presentación del tema: "27/07/14 Catedra de Programacion I 1 Programación I Operadores y Expresiones."— Transcripción de la presentación:

1 27/07/14 Catedra de Programacion I 1 Programación I Operadores y Expresiones

2 27/07/14 Catedra de Programacion I 2 Operadores Los operadores en C se clasifican en: Aritméticos y de Manipulación de Bits Relacionales y Lógicos Incremento y Decremento Dirección e Indirección Condicional Coma Sizeof Cast

3 27/07/14 Catedra de Programacion I 3 Operadores Aritméticos Aplicables a operandos de tipo numérico: Aplicable SOLO a operandos de tipo Entero OperadorSignificadoAridad -OpuestoUnario + Indéntico valor Unario *MultiplicaciónBinario /DivisiónBinario +AdiciónBinario -SustracciónBinario OperadorSignificadoAridad% Módulo (resto) Binario (-1) (+1) Las expresiones formadas a partir de estos operadores devuelve un tipo numérico

4 27/07/14 Catedra de Programacion I 4 Operadores Aritméticos Ejemplos: Ejemplos: 5.0 / 2.0 5.0 / 2.0 5.0 / 2 5.0 / 2 5 / 2.0 5 / 2.0 5 / 2 5 / 2 5 % 2 5 % 2 Double Devuelve un Double 2.5 Double Int Devuelve un Double 2.5 Int Double Devuelve un Double 2.5 Int Devuelve un Integer 2 Int Devuelve un Integer 1 Cuando los tipos de datos son diferentes se produce una conversión automática (cast) al tipo de datos más grande

5 27/07/14 Catedra de Programacion I 5 Operadores Relacionales Son aplicables a operandos del tipo numérico OperadorSignificadoAridad <MenorBinario <= Menor o igual Binario >MayorBinario >= Mayor o igual Binario ==IgualBinario !=DistintoBinario Las expresiones formadas a partir de estos operadores devuelve un tipo int cuyo valor es 0 si la expresión es falsa o 1 si es verdadera

6 27/07/14 Catedra de Programacion I 6 Operadores Relacionales Ejemplos: Sea la variable x del tipo int y z del tipo double. Suponiendo que x = 10 y z =10.5 evaluar las siguientes expresiones: x == 0 x == 0 z == 0 z == 0 x != z x != z x > z x > z x <= x x <= x Devuelve int 0 Devuelve int 1 Devuelve int 0 Devuelve int 1 Si bien esta expresión es correcta, cuando se trabaja con números reales NUNCA usar el operador == para verificar la igualdad. (Tener en cuenta que tanto los doubles como los floats poseen errores en su representación)

7 27/07/14 Catedra de Programacion I 7 Operadores Lógicos En C, todo igual a es interpretado como y todo valor es interpretado como En C, todo valor igual a cero es interpretado como FALSE y todo valor distinto de cero es interpretado como TRUE Los operadores son aplicables a tipos numéricos: Los operadores son aplicables a tipos numéricos: OperadorSignificadoAridad !NotUnario &&AndBinario ||OrBinario Las expresiones formadas a partir de estos operadores devuelve un tipo int cuyo valor es 0 si la expresión es falsa o 1 si es verdadera Nota: Logical NOT (!) !x → (x==0) ? 1:0

8 27/07/14 Catedra de Programacion I 8 Operadores Lógicos Ejemplos: int x = 10; double z = 10.5 x != 0 && z >10 x != 0 && z >10 x && z>10 x && z>10 x 20 x 20 Devuelve int 1 TRUE FALSE

9 27/07/14 Catedra de Programacion I 9 MUY IMPORTANTE!!! Los operadores && y || son de evaluación “LAZY”. Es decir, se evalúan los términos de izquierda a derecha, pero la evaluación se suspende en cuanto el resultado de la expresión queda determinado. E1 && E2  E2 solo se evaluara si E1 !=0 E1 || E2  E2 solo se evaluara si E1 ==0 Operadores Lógicos

10 27/07/14 Catedra de Programacion I 10 Operadores bitwise Sólo se aplican a tipos de datos enteros. OperadorSignificadoAridad ~Complemento a unoUnario <<Shift a izquierdaBinario >>Shift a derechaBinario &And bitwiseBinario |Or bitwiseBinario ^Xor bitwiseBinario Las expresiones formadas a partir de estos operadores siempre devuelve un tipo int cuyo valor es el resultado de la operación correspondiente

11 27/07/14 Catedra de Programacion I 11 Operadores bitwise Ejemplos: unsigned int x = 2; unsigned int y = 10; y & x x | y x ^ y y << x Devuelve int 2 Devuelve int 10 Devuelve int 8 Devuelve int 40 El operando de la izquierda es rotado la cantidad de bits especificado por el operando de la derecha

12 27/07/14 Catedra de Programacion I 12 Operadores Incremento/Decremento Son aplicables a tipos de datos numéricos OperadorSignificadoAridad ++ Pre/Pos incremento Unario -- Pre/Pos decremento Unario Las expresiones formadas a partir de estos operadores siempre devuelve el tipo de dato del operando El momento en el cual se realiza la operación depende de: a qué lado del operando se coloque el operador. Ejemplo: ++Operando : el valor devuelto es el valor del operando ya incrementado en 1. Operando++ : el valor devuelto es el valor del operando, el cual es luego incrementado en 1.

13 27/07/14 Catedra de Programacion I 13 Operadores Incremento/Decremento Ejemplos: int x = 10; double z = 10.5 x++ x++ --x --x z++ z++ --z --z Devuelve int 10 y luego x cambia su valor a 11 Devuelve int 9 y x cambia su valor a 9 Devuelve double 10.5 y luego z cambia su valor a 11.5 Devuelve double 9.5 y z cambia su valor a 9.5

14 27/07/14 Catedra de Programacion I 14 Operadores de asignación OperadorSignificadoAridad =AsignaciónBinario += ( Op1 = Op1 + Op2 )Asignación de incrementoBinario -= ( Op1 = Op1 - Op2 )Asignación de decrementoBinario *= ( Op1 = Op1 * Op2 )Asignación de multiplicaciónBinario /= ( Op1 = Op1 / Op2 )Asignación de divisiónBinario %= ( Op1 = Op1 % Op2 )Asignación de móduloBinario <<= ( Op1 = Op1 << Op2 )Asignación de rotación a izq.Binario >>= ( Op1 = Op1 >> Op2 )Asignación de rotación a der.Binario &= ( Op1 = Op1 & Op2 )Asignación de bitwise andBinario |= ( Op1 = Op1 | Op2 )Asignación de bitwise orBinario ^= ( Op1 = Op1 ^ Op2 )Asignación de bitwise xorBinario Las expresiones formadas a partir de estos operadores siempre devuelve el tipo de dato del operando situado a la izquierda

15 27/07/14 Catedra de Programacion I 15 Operador Sizeof. El operador sizeof devuelve el número (unsigned int) de bytes que son necesarios para poder almacenar una variable con el tipo del operando. Ejemplo: sizeof(int) sizeof(char) sizeof(x = 25) sizeof(x != 34) Devuelve int 4 (arq de 32bits) Devuelve int 1 Devuelve int 4 (arq de 32bits)

16 27/07/14 Catedra de Programacion I 16 Conversiones Automáticas Existen operaciones donde intervienen varios tipos de datos, por lo tanto es importante saber qué conversiones se efectúan automáticamente antes de efectuar las operaciones double  float ↑ long ↑ unsigned ↑ int  char, short Las flechas verticales muestran el orden básico. Las flechas horizontales indican conversiones automáticas, esto quiere decir el tipo float siempre se convierte a double antes de ser utilizado en una expresión y los tipos char y short son siempre convertidos a tipo int. El tipo double es el mayor y el tipo int el menor.

17 27/07/14 Catedra de Programacion I 17 Conversiones Automáticas Lo tipos de datos long son convertidos a int o a char truncando bits de la izquierda Ejemplo:float X=8.452 int i=3; X=i; i=X; - La instrucción X=i indica que en la variable X queda almacenado el número 3.0 - La instrucción i=X permite truncar decimales de X, quedando en la variable i el número 8 Ejemplo: long i=45618, j=3314812 char c, int x; c=i;x=j; En la variable c queda almacenado 50 y en x -27524

18 27/07/14 Catedra de Programacion I 18 Operador Cast El operador cast convierte el tipo de dato del operando al tipo de datos especificado entre paréntesis. Ejemplo: int x = 10; double z = 10.5 (int)z z = x * 2 z = (double)x Devuelve int 10 Devuelve double 20 Devuelve double 10.0 El operador cast NO cambia el tipo de datos del operando!! Si bien C realiza una serie de cast en forma implícita, por claridad, siempre hacer los cast de manera explicita

19 27/07/14 Catedra de Programacion I 19 Operador Condicional Sintaxis: Operando1 ? Operando2 : Operando3 Operación: Se evalúa el Operando1. Si es verdadera la evaluación del Operando1, el resultado es el Operando2 Sino (en caso contrario) el resultado es el Operando 3. Ejemplo: Max = x > z ? x : z Las expresiones formadas a partir de este operador siempre devuelve el tipo de dato resultante de la segunda evaluación (Operando2 u Operando3)

20 27/07/14 Catedra de Programacion I 20 Precedencia de Operadores TypeOperatorsAssociativity highest () [] left to right unary + - ++ -- ! * & (type) right to left multiplicative * / % left to right additive + - left to right relational >= left to right equality == != left to right logical and && left to right logical or || left to right conditionnal ?: right to left assignment = += -= *= /= %= right to left comma, left to right Mayor Precedencia Precedencia: Determina que operación se llevará a cabo primero dentro de un conjunto de operaciones con distinta precedencia. Asociatividad: Determina que operación se llevará a cabo primero dentro de un conjunto de operaciones con igual precedencia.

21 27/07/14 Catedra de Programacion I 21 Precedencia de Operadores Ejemplos: int y = 1 X = 5 + 3 * 2 X = 8 - 3 - 2 X = y & 0x80 == 0x80 X = (y & 0x80) == 0x80 x = 11 x = 3 x = 1 x = 0

22 27/07/14 Catedra de Programacion I 22 Ejemplos a compilar prepostT.c int x=5,y=5; int main(void) { printf("Valores iniciales de x e y\n"); printf("x=%d, y=%d \n",x,y); while( x ) { printf("x-- vale: %d, --y vale: %d \n",x--,--y); printf("despues de la invocacion\n"); printf("x vale: %d, y vale: %d \n",x,y); } return; }

23 27/07/14 Catedra de Programacion I 23 Ejemplos a compilar prepostT.c – La salida será: Valores iniciales de x e y x=5, y=5 x-- vale: 5, --y vale: 4 despues de la invocacion x vale: 4, y vale: 4 x-- vale: 4, --y vale: 3 despues de la invocacion x vale: 3, y vale: 3 x-- vale: 3, --y vale: 2 despues de la invocacion x vale: 2, y vale: 2 x-- vale: 2, --y vale: 1 despues de la invocacion x vale: 1, y vale: 1 x-- vale: 1, --y vale: 0 despues de la invocacion x vale: 0, y vale: 0

24 27/07/14 Catedra de Programacion I 24 Ejemplos a compilar Lazytest.c char a=3,b=3; int main(void) { while( a-- || (b=0)) { printf("a=%d, b=%d\n",a,b); } return; }

25 27/07/14 Catedra de Programacion I 25 Ejemplos a compilar Lazytest.c – La salida será: a=2, b=3 a=1, b=3 a=0, b=3

26 27/07/14 Catedra de Programacion I 26 Bibliografía K & R: Capitulo 2 y apéndice A.4, A.5, A.6


Descargar ppt "27/07/14 Catedra de Programacion I 1 Programación I Operadores y Expresiones."

Presentaciones similares


Anuncios Google