tema 4 operadores y expresiones - … · departamento de sistemas informáticos 2 escuela técnica...

33
Fundamentos de Informática Tema 4 Operadores y Expresiones

Upload: hoangdung

Post on 21-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de Informática

Tema 4Operadores y Expresiones 

2Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

• Introducción• Operador de asignación• Operadores aritméticos• Operadores monarios• Operadores relacionales• Operadores lógicos• Funciones de biblioteca

Contenidos

3Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Introducción

1

4Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones4

• OPERADOR: Entidades que actúan sobre los datos para modificarlos.

1. Operador de asignación2. Operadores aritméticos3. Operadores monarios4. Operadores relacionales5. Operadores lógicos

• OPERANDOS: Datos sobre los que actúan los operadores.‐ Variables, constantes,...

• EXPRESIONES: Distintas formas de agrupar Operandos y Operadores.

Introducción

5Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operador de Asignación

2

6Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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 izquierdaEjemplos: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

7Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operador de asignación• Suponiendo i y j variables enteras y j=5

i = j 5i = j / 2 2

i = 2 * j / 2 5i = 2 * (j / 2) 4

Expresión Valor almacenado en i

8Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores de asignación• Operador de asignación múltiple:

identificador1 = identificador2 = ...... = expresion;Se asigna de derecha a izquierdaEquivalente 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.

9Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores Aritméticos

3

10Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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 ceroSi 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 nuloSe conserva en el resultado el signo del primer operandoSe utiliza mucho para saber si un número es múltiplo de otro (resto 0)

• El lenguaje C no dispone de operador para realizar potenciasUtilizar la función pow() de la biblioteca math.h, pero no para el cuadrado.

11Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores aritméticos

a + b 13a ‐ b 7a * b 30a / b 3a % b 1

expresión resultado

Si a=12.5 b=2.0 (reales)

a + b 14.5a ‐ b 10.5a * b 25.0a / b 6.25a % b TIPOS INCORRECTOS

expresión resultado

Si a=‘P’ b=‘T’

ASCII ‘P’=80

ASCII ‘T’=84

ASCII ‘5’=53

a 80

a + b 164

a + b + 5 169

a + b + ’5’ 217

expresión resultado

Si a=10 b=3 (enteros)

12Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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 doubleSe convierte el otro operando a long double

Si no: Si cualquier operando es de tipo doubleSe convierte el otro operando a double

Si no: Si cualquier operando es de tipo floatSe convierte el otro operando a float

Si no: Si cualquier operando es de tipo long intSe 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)

13Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores aritméticos

Si i = 7 (entera) f = 5.5 (coma flotante double)  c = ‘w’ (char)

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

expresión resultado tipo

14Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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íficoNo modifica el tipo de datos original sino su valor dentro de la expresión.

(tipo de datos) expresiónAl 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 1 de precedencia Grupo 2 de precedencia* / % + ‐

15Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores Monarios

4

16Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores monarios• Características:

Con un único operandoMayor 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 finOperador 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 finOperador sizeof ()• Devuelve el tamaño de su operando en bytes

Operando puede ser una variable o un tipo de dato

17Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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=1Dado:

printf (“i = %d\n”, i);printf (“i = %d\n”, i++);printf (“i = %d\n”, i);

La salida por pantalla es:i = 1i = 2i = 2i = 3;i = 4;i = 5;

La salida por pantalla es:i = 1i = 1i = 2

18Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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: 4Coma flotante: 4Doble precision: 8Caracter: 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));

19Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores Relacionales

5

20Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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ógicasLos operadores relacionales tienen menor precedencia que los operadores monarios y aritméticosLos operadores relacionales tienen mayor precedencia que los operadores de igualdadAsociatividad de izquierda a derecha dentro de una expresión

< menor que

<= menor o igual que

> mayor que

>= mayor o igual que

OperadorRelacional

Función

== igual que

!= no igual que

Operadorde Igualdad

Función

21Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores relacionales

• Si i=1, j=2, k=3 variables enteras

i < j cierto 1 ó !=0(i+j) >= k cierto 1 ó !=0

(j+k)>(i+5) falso 0k!=3 falso 0

expresión interpretación Valor

22Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores Lógicos

6

23Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores lógicos• Características:

Actúan sobre operandos que son expresiones lógicasPermiten combinar expresiones lógicas sencillas para generar expresiones lógicas más complejas

&& y

|| o

Operador Significado

! Negación

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.

TABLAS DE VERDAD

Falso Falso Falso Falso

Falso Cierto Falso Cierto

Cierto Falso Falso Cierto

p q p && q p || q

Cierto Cierto Cierto Cierto

Cierto

Cierto

Falso

!p

Falso

24Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Operadores lógicos

• Si i=7 (entero) f=5.5 (float) y c=‘w’ (char) (ASCII 119)

(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

expresión interpretación Valor

(i >= 6) || (c == 65) cierto 1

• Ejercicios(5 == 5) || (6 == 7)(5 == 8) || (6 != 7)(8 >= 5) && (! (5<= 2))

25Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Tabla de precedencias

Consejo: Utilizar paréntesis

Monarios ‐, ++, ‐‐, !, 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 =, +=, ‐=, *=, /=, %=

Categoría Operadores

+ Prioritarios

‐ Prioritarios

26Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Funciones de Biblioteca

7

27Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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>……

28Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

Funciones de biblioteca

abs(i) int Devuelve el valor absoluto de icos(d) double Devuelve el coseno de dcosh(d) double Devuelve el coseno hiperbólico de dexp(d) double Eleva e a la potencia dfabs(d) double Devuelve el valor absoluto de dgetchar() int Introducir un carácter desde el dispositivo de entradalog(d) double Devuelve el logaritmo natural de dpow(d1,d2) double Devuelve d1 elevado a la potencia d2printf(....) int Manda datos al dispositivo de salida estándarputchar(c) int Manda un carácter al dispositivo de salida estándarrand() int Devuelve un entero positivo aleatoriosin(d) double Devuelve el seno de dsqrt(d) double Devuelve la raíz cuadrada de dsrand(u) void Inicializa el generador de números aleatoriosscanf(....) int Introduce datos del dispositivo de entrada estándartan(d) double Devuelve la tangente de dtoascii(c) int Convierte el valor del argumento a ASCIItolower(c) int Convierte una letra a minúscula

toupper(c) int Convierte una letra a mayúscula

Función Tipo de dato de retorno

Propósito

29Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones

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;

}

30Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones30

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 pesetasfloat euros; // euros, variable para guardar el valor en eurosprintf ("Introduzca una cantidad en euros");scanf ("%f", &euros);// El valor 0.5 se utiliza para convertir el truncamiento en redondeopesetas = 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;

}

31Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones31

/*... Este programa calcula el cociente y el resto de una división entera

*/// Directivas del precompilador#include <stdio.h>

// Programa principalInt 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;

}

Ejercicio 3

32Departamento de Sistemas InformáticosEscuela Técnica Superior de Ingeniería ICAI

Tema 4: Operadores  y Expresiones32

/*... Este programa pasa una temperatura Celsius a Reamur, Fahrenheit y Kelvin

*/

// Directivas del precompilador#include <stdio.h>

// Programa principalint 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;

}

Ejercicio 4

Escuela Técnica Superior de Ingeniería ICAIAlberto Aguilera 2528015 MadridTel +34 91 542 28 00Fax + 34 91 542 31 76Iwww.icai.upcomillas.es

www.upcomillas.es