Tema 4 Operadores y Expresiones

Anuncio
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
<=
menor o igual que
!=
no 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<j
cierto
1 ó !=0
(i+j) >= 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 < 11) && (i > 100)
falso
0
(c != ‘p’) || ((i+f) <= 10)
cierto
1
(i >= 6) || (c == 65)
cierto
1
Ejercicios
(5 == 5) || (6 == 7)
(5 == 8) || (6 != 7)
(8 >= 5) && (! (5<= 2))
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
24
Tabla de precedencias
Consejo: Utilizar paréntesis
Categoría
Monarios
Operadores
‐, ++, ‐‐, !, sizeof(), (tipo)
Multiplicación, división y resto aritméticos
*, /, %
suma y resta aritméticas
+, ‐
operadores relacionales
<, <=, >, >=
operadores de igualdad
==, !=
AND lógico
&&
OR lógico
||
operadores de asignación
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
+ Prioritarios
‐ Prioritarios
=, +=, ‐=, *=, /=, %=
Tema 4: Operadores y Expresiones
25
7
Funciones de Biblioteca
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
26
Funciones de biblioteca
Realizan operaciones y cálculos de uso frecuente
• Las funciones de biblioteca no son parte del lenguaje C, pero las incluyen todos los compiladores
• Están agrupadas en archivos de biblioteca separados, como por ejemplo:
Entrada/salida (stdio.h)
Funciones de uso matemático (math.h)
Funciones de gestión de cadenas (string.h)
• Deben incluirse dentro del programa con la directiva # include <stdio.h>
# include <math.h>
……
•
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
27
Funciones de biblioteca
Función
abs(i)
cos(d)
cosh(d)
exp(d)
fabs(d)
getchar()
log(d)
pow(d1,d2)
printf(....)
putchar(c)
rand()
sin(d)
sqrt(d)
srand(u)
scanf(....)
tan(d)
toascii(c)
tolower(c)
toupper(c)
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tipo de dato de
retorno
int
double
double
double
double
int
double
double
int
int
int
double
double
void
int
double
int
int
int
Propósito
Devuelve el valor absoluto de i
Devuelve el coseno de d
Devuelve el coseno hiperbólico de d
Eleva e a la potencia d
Devuelve el valor absoluto de d
Introducir un carácter desde el dispositivo de entrada
Devuelve el logaritmo natural de d
Devuelve d1 elevado a la potencia d2
Manda datos al dispositivo de salida estándar
Manda un carácter al dispositivo de salida estándar
Devuelve un entero positivo aleatorio
Devuelve el seno de d
Devuelve la raíz cuadrada de d
Inicializa el generador de números aleatorios
Introduce datos del dispositivo de entrada estándar
Devuelve la tangente de d
Convierte el valor del argumento a ASCII
Convierte una letra a minúscula
Convierte una letra a mayúscula
Tema 4: Operadores y Expresiones
28
Ejercicio 1
int main(void) { int ia;
int ib;
int ires;
double da;
double db;
double dres;
/* Inicializaciones */
ia = 1;
ib = 3;
da = 2.3;
db = 3.7;
ires = ia + (ib*2 + ia*3); /* Ejemplo 1 */
dres = ia + (ib*2 + ia*3); /* Ejemplo 2 */
dres = ia + da * ( ib/2.0 + ia/2.0); /* Ejemplo 3 */
ires = ia + da * (ib/2.0 + ia/2.0); /* Ejemplo 4 */
dres = ‐da * (ia + ib * (da + db/3.0)); /* Ejemplo 5 */
return 0;
}
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
29
Ejercicio 2
/*
... Este programa pasa euros a pesetas y viceversa
*/
// Directivas del precompilador
#include <stdio.h>
#define EUR 166.386
int main (void)
{
int pesetas;
// pesetas, variable para guardar el valor en pesetas
float euros;
// euros, variable para guardar el valor en euros
printf ("Introduzca una cantidad en euros");
scanf ("%f", &euros);
// El valor 0.5 se utiliza para convertir el truncamiento en redondeo
pesetas = euros * EUR + 0.5; printf ("%.2f euros equivalen a %d pesetas \n", euros, pesetas);
printf ("Introduzca una cantidad en pesetas");
scanf ("%d", &pesetas);
euros = pesetas / EUR;
printf ("%d pesetas equivalen a %.2f euros \n", pesetas, euros);
return 0;
}
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
30
30
Ejercicio 3
/*
... Este programa calcula el cociente y el resto de una división entera
*/
// Directivas del precompilador
#include <stdio.h>
// Programa principal
Int main (void)
{
int numerador;
int denominador;
int cociente;
int resto;
printf (“\nIntroduzca un numero entero para el numerador: ");
scanf ("%d", &numerador);
printf (“\nIntroduza otro numero entero para el denominador: ");
scanf ("%d", &denominador);
cociente = numerador / denominador;
resto = numerador % denominador;
printf ("%d / %d = %d, resto %d", numerador, denominador, cociente, resto);
return 0;
}
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
31
31
Ejercicio 4
/*
*/
... Este programa pasa una temperatura Celsius a Reamur, Fahrenheit y Kelvin
// Directivas del precompilador
#include <stdio.h>
// Programa principal
int main (void)
{
float celsius;
float reamur;
float fahrenheit;
float kelvin;
printf (“\n**** INICIO PROGRAMA CONVERSION DE TEMPERATURAS ****");
printf ("\n\nIntroduzca una temperatura en la escala Celsius (centigrada). ");
scanf ("%f", &celsius);
reamur = 0.8 * celsius;
fahrenheit = ( 1.8 * celsius ) + 32;
kelvin = celsius + 273;
}
printf ("\nEl valor de temperatura en la escala Reamur es...%.2f",reamur);
printf ("\nEl valor de temperatura en la escala Fahrenheit es...%.2f",fahrenheit);
printf ("\nEl valor de temperatura en la escala Kelvin es...%.2f",kelvin);
return 0;
Departamento de Sistemas Informáticos
Escuela Técnica Superior de Ingeniería ICAI
Tema 4: Operadores y Expresiones
32
32
Escuela Técnica Superior de Ingeniería ICAI
Alberto Aguilera 25
28015 Madrid
Tel +34 91 542 28 00
Fax + 34 91 542 31 76
Iwww.icai.upcomillas.es
www.upcomillas.es
Descargar