expresiones lógicas prof. flor narciso departamento de computación escuela de ingeniería de...

33
Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Upload: maria-del-carmen-vazquez-medina

Post on 24-Jan-2016

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas

Prof. Flor NarcisoDepartamento de Computación

Escuela de Ingeniería de SistemasFacultad de Ingeniería

Universidad de Los Andes

Page 2: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresión Lógica

• El resultado de la evaluación de la expresión es un valor lógico (cierto o falso). Se construye mediante

– Operadores relacionales– Operadores lógicos

Page 3: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Operadores relacionales en C++

• Operan sobre operandos (constantes, variables, expresiones) de diferentes tipos (numéricos, caracteres) y evalúan a un valor de tipo lógico (cierto o falso).

Operación Operador

algebraico

Operador en

C++

Expresión en

C++Igualdad = == a == b

Desigualdad != a != bMenor < < a < b

Menor o igual < <= a <= bMayor > > a > b

Mayor o igual > >= a >= b

Page 4: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Operadores Relacionales en C++

a b a==b a!=b a < b a<= b a > b a >=b

2 3 falso cierto cierto cierto falso falso

44 -5 falso cierto falso falso cierto cierto

44 44 cierto falso falso cierto falso cierto

Ejemplos:

Page 5: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Precedencia de los Operadores Relacionales en C++

( ) Subexpresiones encerradas entre paréntesis se evalúan primero (mayor nivel de

precedencia).

< <= > >=

== != (menor nivel de precedencia)

La evaluación de las operadores con la misma prioridad se realiza de izquierda a derecha.

Page 6: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Observación!!!!!

• A = B asigna el valor de la variable B a la variable A

• A = = B compara el valor de la variable A con el valor de la variable B

• Una comparación produce un resultado CIERTO/FALSO

Page 7: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas en C++

Ejemplos

(a + b) < cvotos > electoresa != (x*x + b*x + c)(alto - bajo) == 2(horas*3600) >= (minutos*60 + segundos)numero <= 2

Page 8: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 1

Evaluar la siguiente expresión lógica:

x >= (y+z)R1 = y + zR2 = x >= R1 Resultado

Para los valores x = 3, y = 4, z = 1 se tiene

R1 = 4 + 1 = 5R2 = 3 >= 5 = falso Resultado

Page 9: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 2

Evaluar la siguiente expresión lógica:

contador1 + 1 < contador2

R1 = contador1 + 1R2 = R1 < contador2 Resultado

Para los valores contador1 = 3, contador2 = 1 se tiene

R1 = 3 + 1 = 4R2 = 4 < 1 = falso Resultado

Page 10: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 3

Evaluar la siguiente expresión lógica:

num % 4 == 0

R1 = num % 4R2 = R1 == 0 Resultado

Para el valor num = 7 se tiene

R1 = 7 % 4 = 3

R2 = 3 == 0 = falso Resultado

Page 11: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 4Evaluar la siguiente expresión lógica:

(a + b - 1) < (x * y)R1 = a + bR2 = R1 - 1R3 = x * yR4 = R2 < R3 Resultado

Para los valores a = 31, b = -1, x = 3, y = 2 se tiene

R1 = 31 + (-1) = 30R2 = 30 - 1 = 29 R3 = 3 * 2 = 6R4 = 29 < 6 = falso Resultado

Page 12: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Operadores Lógicos en C++

Operan sobre operandos (constantes, variables, expresiones) de tipo lógico (cierto o falso) y evalúan a un valor de tipo lógico (cierto o falso).

Operación Operador

algebraico

Operador en

C++

Expresión en

C++Y-lógico && a && bO-lógico || a || bNegación ! !a

Page 13: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Operadores Lógicos en C++

a b a && b a || b !a

cierto cierto cierto cierto falso

cierto falso falso cierto falso

falso cierto falso cierto cierto

falso falso falso falso cierto

Ejemplo:

Page 14: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas en C++

Ejemplos

!(p && q) || sp && q && s (a || b) && (c || d)a > 5 && !(b < c) || 3 <= d(op < min) || (op > max)(edad >= 18) && (edad <= 60)!encontrado

Page 15: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Precedencia de los Operadores Lógicos en C++

( ) Sub-expresiones encerradas entre paréntesis se evalúan primero (mayor nivel de

precedencia).

!

&&

|| (menor nivel de precedencia)

Page 16: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Precedencia y Asociatividad de Operadores

Operadores Asociatividad

( ) de izq. a der.

! ++ -- -(unario) de der. a izq.

* / % de izq. a der.

+ - (binario) de izq. a der.

< <= > >= de izq. a der.

== != de izq. a der.

&& de izq. a der.

|| de izq. a der.

Page 17: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 1

Evaluar la siguiente expresión lógica

!(x < 5) && !(y >= 7)

R1 = x < 5R2 = y >= 7R3 = !R2R4 = !R1R5 = R4 && R3 Resultado

Page 18: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 1

Evaluar la siguiente expresión lógica para x = 3 y y = 6

!(x < 5) && !(y >= 7)

R1 = 3 < 5 ciertoR2 = 6 >= 7 falsoR3 = !falso ciertoR4 = !cierto falsoR5 = cierto && falso = falso

Page 19: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 2

Evaluar la siguiente expresión lógica

!((i > 4) || (j <= 6))R1 = i > 4R2 = j <= 6R3 = R1 || R2R4 = !R3 Resultado

Page 20: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 2

Evaluar la siguiente expresión lógica para i = 22 y j = 3

!((i > 4) || (j <= 6))

R1 = 22 > 4 ciertoR2 = 3 <= 6 ciertoR3 = cierto || cierto ciertoR4 = !cierto falso

Page 21: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 3

Evaluar la siguiente expresión lógica

!(a + b == c) || (c != 0) && (b - c > = 19)

R1 = a + b R7 = R3 && R5R2 = R1 == c R8 = R6 || R7 ResultadoR3 = c != 0R4 = b - c R5 = R5 >= 19R6 = !R2

Page 22: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Expresiones Lógicas: Ejemplo 3

Evaluar la siguiente expresión lógica para a = 34, b = 12 y c = 8

!(a + b == c) || (c != 0) && (b - c > = 19)

R1 = 34 + 12 = 46 R7 = cierto && falso = falsoR2 = 46 == 8 = falso R8 = cierto || falso = ciertoR3 = 8 != 0 = ciertoR4 = 12 - 8 = 4 R5 = 4 >= 19 = falsoR6 = !falso = cierto

Page 23: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Resumen

• Tipos de datos

Tipo Notación en C++Entero int / long / unsigned

Real float / double

Caracter char

Lógico enum logico {falso, cierto}

Page 24: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Resumen

• Definición y declaración de constantes

Notación algorítmica Notación en C++

nombre: valor_constante #define identificador valor

PI: 3.14159 #define PI 3.14159

const tipo_de_dato identificador= valor

const float PI = 3.14159

Page 25: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Resumen

• Declaración de variables

Notación Algorítmica Notación en C++

lista_de_variables: tipo_de_dato tipo_de_dato lista_de_variables;

a, b, c : entero int a, b, c;

x: realx = 2.34

float x = 2.34;

Page 26: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Resumen• Sentencias de entrada/salida

Notación Algorítmica Notación en C++

Leer (lista_de_variables) cin >> var1 >> var 2 >> … >> varn;

Leer(a, b, c) cin >> a >> b >> c;

Escribir (mensajes y/o variables) cout << mensaje << var 1 <<… << mensaje << varn << endl;

Escribir (“El resultado es”, resulta) cout << “El resultado es” << resulta;

Page 27: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Resumen

• Asignación

Notación algorítmica Notación en C++

variable expresión

variable = expresión

identificador = valor;

A 5 ó A = 5 A = 5;

x (y + 1)/2 ó x = (y + 1)/2 x (y + 1)/2;x x + 2 ó x = x + 2 x += 2;

y y – z ó y = y – z y -= z;

m m 5 ó m = m 5 m *= 5;

a a / (b + 1) ó a = a / (b + 1) a /= (b + 1);

a a mod b ó a = a % b a %= b;

Page 28: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios

Evaluar cada una de las siguientes expresiones

a) (-b + (b * b - 4 * a * c)) / (2 * a) <= 25

b) (x >= MINIMO) && (x <= MAXIMO)

c) (contador < MAXIMO) && !encontrado

d) (mes1 < mes2) || (mes1 == mes2) && (anyo1 <= anyo2)

e) anyo%4 == 0 && anyo % 100 != 0 || anyo%400 == 0f) (A - 1) < B || A != (B - C) || A >= C

Page 29: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios

• Cuáles de los siguientes identificadores no son válidos. Justifique su respuesta.

a) S_neto b) 1Ac) NotaDefinitiva d) _definitivae) masculino_o_femeninof) contador2g) masculino*femeninoh) reali) float

Page 30: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios

• Defina las siguientes constantes:

a) Una constante entera EOF con valor -1.b) una constante entera MAXIMO con valor 256.c) Dos constantes enteras CIERTO y FALSO con valores 1

y 0,respectivamente.d) Una constante real EPSILON con valor 0.0001.

Page 31: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios

• Declare las siguientes variables:

a) Dos variables carácter car1 y car2 con valores iniciales ’A’ y ’B’ respectivamente.

b) Dos variables enteras i, j.c) Una variable real x.d) Una variable bandera de tipo lógico con valor inicial

cierto.

Page 32: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios

• Suponiendo declaradas y asignadas las variablesint i=8, j=5;double x=0.005, y=-0.01;

Indique los valores de las siguientes expresiones:a) (3 *i -2 *j)%(2 *i -j)b) 2 *((i /5)+(4 *(j -3))%(i +j -2))c) -(i + j)/2d) i++;e) j--;f) (x >y)&&(i >0)||(j <5)g) (x >y)||(i >0)&&(j <5)

Page 33: Expresiones Lógicas Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes

Ejercicios• Dadas las siguientes definiciones de constantes

#define MIN 1#define MAX 5#define NUM1 5#define NUM2 8#define NUM3 -1

y la siguiente declaración de variableint num;

Escriba las expresiones lógicas que sean verdaderas sia) El valor de num se encuentra en el rango definido por

las constantes MINIMO y MAXIMO.b) El valor de num es uno de los tres valores constantes

NUM1, NUM2 o NUM3.