Story Transcript
Tema 4 Operadores y Expresiones
Fundamentos de Informática
Contenidos • • • • • • •
Introducción Operador de asignación Operadores aritméticos Operadores monarios Operadores relacionales Operadores lógicos Funciones de biblioteca
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
2
1 Introducción
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
3
Introducción •
OPERADOR: Entidades que actúan sobre los datos para modificarlos. 1. 2. 3. 4. 5.
Operador de asignación Operadores aritméticos Operadores monarios Operadores relacionales Operadores lógicos
•
OPERANDOS: Datos sobre los que actúan los operadores. ‐ Variables, constantes,...
•
EXPRESIONES: Distintas formas de agrupar Operandos y Operadores.
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
4 4
2 Operador de Asignación
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
5
Operador de asignación •
Operador asignación simple (=) El formato de este operador es: identificador = expresión; Cuando la expresión y el operador sean de distinto tipo, el valor de la expresión de la derecha se convertirá automáticamente al tipo del identificador de la izquierda Ejemplos: a = 3; /* Guarda el valor 3 en la variable a */ x = y; /* Guarda el valor que tenga la variable y en la variable x */ suma = a + b; /*Guarda la suma de los valores de a y b en la variable suma */ area = longitud * anchura; /*Guarda la multiplicación de los valores de las variables longitud y anchura en la variable area */
Variable
Un valor final
Asigna los resultados de la derecha a la variable de la izquierda Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
6
Operador de asignación •
Suponiendo i y j variables enteras y j=5 Expresión i = j i = j / 2 i = 2 * j / 2 i = 2 * (j / 2)
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Valor almacenado en i 5 2 5 4
Tema 4: Operadores y Expresiones
7
Operadores de asignación •
Operador de asignación múltiple: identificador1 = identificador2 = ...... = expresion; Se asigna de derecha a izquierda Equivalente a: identificador2 = expresión; identificador1 = identificador2; Mejor no utilizarlo
•
Operadores de asignación compuestos: +=, ‐=, *=, /=, %= Por ejemplo: identificador += expresion2; Es lo mismo que: identificador = identificador + expresion2; Si plantea alguna duda, mejor no utilizarlo.
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
8
3 Operadores Aritméticos
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
9
Operadores aritméticos • • •
•
Realizan operaciones con resultado numérico Sus operandos deben ser numéricos Tipos de operadores: • Operador suma (+) • Operador resta (‐) • Operador multiplicación (*) • Operador división (/) Divisor distinto de cero Si dividendo y divisor son: • Enteros: El resultado será un entero truncado. • Float: El resultado será un float. • Entero y float: El resultado será un float. • Operador resto de división entera (%) Ambos operadores deben ser enteros y el divisor no nulo Se conserva en el resultado el signo del primer operando Se utiliza mucho para saber si un número es múltiplo de otro (resto 0) El lenguaje C no dispone de operador para realizar potencias Utilizar la función pow() de la biblioteca math.h, pero no para el cuadrado.
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
10
Operadores aritméticos
Si a=10 b=3 (enteros)
expresión a + b a ‐ b a * b a / b a % b
resultado 13 7 30 3 1
Si a=‘P’ b=‘T’ ASCII ‘P’=80 ASCII ‘T’=84 ASCII ‘5’=53
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Si a=12.5 b=2.0 (reales)
expresión a + b a ‐ b a * b a / b a % b
resultado 14.5 10.5 25.0 6.25 TIPOS INCORRECTOS
expresión
resultado
a
80
a + b
164
a + b + 5
169
a + b + ’5’
217
Tema 4: Operadores y Expresiones
11
Operadores aritméticos Conversión sobre operandos que difieran en tipo: El resultado final se expresará con la mayor precisión posible y de forma consistente con los tipos de datos de los operandos. • Regla general (cuando ninguno de los operandos sea unsigned): Se promueve el tipo “inferior” al tipo “superior”, obteniendo un resultado que es de tipo “superior”. Si cualquier operando es de tipo long double Se convierte el otro operando a long double Si no: Si cualquier operando es de tipo double Se convierte el otro operando a double Si no: Si cualquier operando es de tipo float Se convierte el otro operando a float Si no: Si cualquier operando es de tipo long int Se convierte el otro operando a long int Si no: Se convierte char y short a int (aunque sean los dos del mismo tipo char o short) •
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
12
Operadores aritméticos Si i = 7 (entera) f = 5.5 (coma flotante double) c = ‘w’ (char)
expresión
resultado
tipo
i + f
12.5
doble precisión
i + c
126
entero
i + c – ‘0’
78
entero
(i + c) – (2 * f / 5)
123.8
doble precisión
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
13
Operadores aritméticos Conversión de tipos o "cast": Permite transformar el tipo de datos resultado de una expresión a un tipo de datos específico No modifica el tipo de datos original sino su valor dentro de la expresión. (tipo de datos) expresión Al aplicar la conversión de tipos se modifica el valor dentro de la expresión en la que se encuentra, no se modifica el tipo de datos original. Si i=7 (entero) f=8.5 (float) (i+f) % 4 : EXPRESIÓN NO VÁLIDA ( (int) (i+f) ) % 4 : EXPRESIÓN VÁLIDA utilizando la conversión • Orden de precedencia en los operadores aritméticos: Los operadores con mayor precedencia se evalúan antes que los de menor precedencia. Grupo 2 de precedencia Grupo 1 de precedencia * / % + ‐ •
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
14
4 Operadores Monarios
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
15
Operadores monarios •
•
Características: Con un único operando Mayor precedencia que los operadores aritméticos Tipos de operadores monarios: Operador signo (‐) • Cambia de signo el operando Operador incremento (++) • Incrementa en uno el operando • Puede ir delante o detrás del operando El incremento se realiza antes o después de utilizar el operando con otro fin Operador decremento (‐‐) • Decrementa en uno el operando • Puede ir delante o detrás del operando El incremento se realiza antes o después de utilizar el operando con otro fin Operador sizeof () • Devuelve el tamaño de su operando en bytes Operando puede ser una variable o un tipo de dato
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
16
Operadores monarios •
•
Si i=1 Dado: printf (“i = %d\n”, i); printf (“i = %d\n”, ++i); printf (“i = %d\n”, i++); printf(““i = %d\n”, i); i++; printf(““i = %d\n”, i); ++i; printf(““i = %d\n”, i);
Si i=1 Dado: printf (“i = %d\n”, i); printf (“i = %d\n”, i++); printf (“i = %d\n”, i);
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
La salida por pantalla es: i = 1 i = 2 i = 2 i = 3; i = 4; i = 5;
La salida por pantalla es: i = 1 i = 1 i = 2
Tema 4: Operadores y Expresiones
17
Operadores monarios •
•
•
•
Si se ha declarado: int i; char c; float x; double d; La salida del siguiente programa: printf (“Entero: %d\n”, sizeof(i)); ó printf(“Entero: %d\n”, sizeof i); printf (“\nComa flotante: %d\n”, sizeof(x)); printf (“\nDoble precision: %d\n” sizeof(d)); printf (“\nCaracter: %d\n”, sizeof (c)); Sería: Entero: 4 Coma flotante: 4 Doble precision: 8 Caracter: 1 Se podría haber utilizado también el tipo del dato: printf (“Entero: %d\n”, sizeof (int)); (no se puede usar printf(“Entero:%d”, sizeof int); pues es un error de compilación). printf (“Coma flotante: %d\n”, sizeof (float)); printf (“Doble precisión: %d\n” sizeof (double)); printf (“Carácter: %d\n”, sizeof (char));
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
18
5 Operadores Relacionales
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
19
Operadores relacionales •
Características:
El resultado siempre es un valor lógico: VERDADERO (>=1) o FALSO (0). Los operadores se utilizan para formar expresiones lógicas Los operadores relacionales tienen menor precedencia que los operadores monarios y aritméticos Los operadores relacionales tienen mayor precedencia que los operadores de igualdad Asociatividad de izquierda a derecha dentro de una expresión
Operador Relacional
Función
Operador de Igualdad
Función
<
menor que
==
igual que
mayor que
>=
mayor o igual que
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
20
Operadores relacionales •
Si i=1, j=2, k=3 variables enteras
expresión
interpretación
Valor
i= k
cierto
1 ó !=0
(j+k)>(i+5)
falso
0
k!=3
falso
0
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
21
6 Operadores Lógicos
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
22
Operadores lógicos •
Características: Actúan sobre operandos que son expresiones lógicas Permiten combinar expresiones lógicas sencillas para generar expresiones lógicas más complejas Operadores lógicos de dos operandos: && AND lógico || OR lógico Operadores lógicos de un solo operando (monarios) ! Negación Cualquier valor no nulo se considera cierto.
Departamento de Sistemas Informáticos Escuela Técnica Superior de Ingeniería ICAI
Operador && ||
Significado y o
!
Negación
p
TABLAS DE VERDAD q p && q p || q
!p
Falso
Falso
Falso
Falso
Cierto
Falso
Cierto
Falso
Cierto
Cierto
Cierto
Falso
Falso
Cierto
Falso
Cierto
Cierto
Cierto
Cierto
Falso
Tema 4: Operadores y Expresiones
23
Operadores lógicos •
Si i=7 (entero) f=5.5 (float) y c=‘w’ (char) (ASCII 119)
expresión
•
interpretación
Valor
(i >= 6) && (c == ‘w’)
cierto
1
(i >= 6) || (c == 119)
cierto
1
(f 100)
falso
0
(c != ‘p’) || ((i+f) = 6) || (c == 65)
cierto
1
Ejercicios (5 == 5) || (6 == 7) (5 == 8) || (6 != 7) (8 >= 5) && (! (5