expresiones lógicas prof. flor narciso departamento de computación escuela de ingeniería de...
TRANSCRIPT
Expresiones Lógicas
Prof. Flor NarcisoDepartamento de Computación
Escuela de Ingeniería de SistemasFacultad 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
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
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:
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.
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
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
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
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
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
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
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
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:
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
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)
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.
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
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
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
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
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
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
Resumen
• Tipos de datos
Tipo Notación en C++Entero int / long / unsigned
Real float / double
Caracter char
Lógico enum logico {falso, cierto}
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
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;
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;
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;
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
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
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.
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.
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)
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.