Está en la página 1de 16

Estructuras de control

condicional
Computación
Operadores relacionales
Los operadores relacionales permiten construir expresiones booleanas es
decir, expresiones cuyo valor es 1 o 0.
Los operadores relacionales permiten comparar valores o expresiones
aritméticas.
En C el valor 1 se interpreta como verdadero y el 0 como falso.

Operador Significado

== igualdad
!= Diferente
> Mayor que
< Menor que
>= Mayor o igual
<= Menor o igual
Ejemplos
1>2 = 0 falso
3<5 = 1 verdadero
(7 – 4) == 3 = 1 verdadero
17 >= (5 + 12) = 1 verdadero
i = 3; j = 7;
i * j != 21 = 0 falso
float a=0.1;
(3*a – 0.3) == 0 = 0 falso (OJO con los reales)
3>1>0 = 1 verdadero
Asignar a una variable la mayor de otras dos:
a = 17; b = 15;
c = a*(a>=b) + b*(b>=a); c = 17 a>=b = 1 y b>=a = 0
Tarea
Encuentre el valor de las siguientes expresiones relacionales

2 != 7
3>2
-1 <= -2
(5 – 7) > (3 – 4)
(3*2 + 5*4) == (8*5/2 + 4*4 – 10)

Encuentre el valor asignado a la variable x, suponga a = 3, b = 4, c = 12


x = (2*a > c – b)*c + (c == 2*b + 2*a – 2)*a;
x = (a <= b)*(a – b) + (c > 2*a + 5)*(c – 2*a);
Estructuras de control
condicional
Computación
Sentencia if
La sentencia if permite decidir ejecutar o no una instrucción o un bloque de
instrucciones.
Sintaxis
if (condición)
Instrucción o bloque;
Un bloque es una secuencia de instrucciones englobadas entre llaves (“{}”).
La condición esta formada por una expresión booleana.

verdadero
condición

falso sentencias
Computación
Sentencia if - else
La sentencia if – else permite decidir entre ejecutar una instrucción (o un
bloque de instrucciones) y otra instrucción (o un bloque de instrucciones)
Sintaxis
if (condición)
Instrucción o bloque;
else
Instrucción o bloque;

falso verdadero
condición

sentencias sentencias
Operadores lógicos
Existen 4 operadores lógicos en C: and = &&, or = ||, not = !, xor = ^. Los
operadores lógicos tienen una prioridad más baja que los operadores
relacionales.

expresión expresión expresión1 && expresión expresión expresión1 || expresión2


1 2 expresión2 1 2
0 0 0 0 0 0
0 1 0 0 1 1
1 0 0 1 0 1
1 1 1 1 1 1

expresión ! expresión expresión expresión expresión1 ^ expresión2


1 2
0 1
0 0 0
1 0
0 1 1
Prioridad de evaluación 1 0 1
1 1 0
!
&&
||
ejemplos de operadores lógicos
x > 5 || x == 3 verdadero para x = 3, 6, 7, ...
! (x == 7) && x % 2 != 0 verdadero para x = 1, 3, 5, 9, 11, ...
x <= -1 || x > 5 || x ==2verdadero para x = …, -2, -1, 2, 6, 7, 8, ...

En el siguiente fragmento se despliegan solo los múltiplos de 7 o


cuadrados perfectos
if(num % 7 == 0 || sqrt(num)-floor(sqrt(num))==0)
Discusión
Escriba sentencias que sean verdaderas para:
x = 1, 2, 4, 8
x = 7, 14, 21, …, 49
x = 1, 2, 3, 6, 7, 8, 9
x = …, - 5, -3, -1, 0, 2, 4, 6, …
Anidamiento
Una sentencia if puede tener en su parte verdadera o falsa otra sentencia if.
O sea
if(condición1)
if(condición2)
if(condición3)
sentencias;
else
if(condición2)
if(condición3)
...
Ejemplo de anidamiento
Se desea un programa para imprimir un letrero dependiendo de la siguiente
tabla:

condición letrero
cal < 6 “Reprobado”
6 <= cal < 7 “Suficiente”
7 <= cal < 8 “Bien”
8 <= cal < 9 “Muy bien”
9 <= cal < 10 “Excelente”
Comparación de 3 números
Se desea comparar 3 números leídos desde el teclado, imprimiendo el mayo
de ellos.
Se puede resolver comparando el primero con el segundo, luego si el primero
es mayor, se compara el primero con el tercero.
Si el primero no es mayor que el segundo, entonces se compara el segundo
con el tercero.

verdadero
a>b

verdadero falso verdadero


b>c falso
a>c

“b mayor” “c mayor” “c mayor” “a mayor”


Solución con condiciones
compuestas
Utilizando condiciones compuestas, primero comparamos el primero con los
dos restantes, si es mayor que los otros dos, imprimimos el primero, sino,
comparamos el segundo con los otros dos, etc.
Note que debe usar >= para que se imprime forzosamente un resultado.

falso verdadero
a>=b && a>=c

falso verdadero
“a mayor”
b>=a && b>=c

“b mayor”
verdadero
c>=a && c>=b

“c mayor”