Pensemos que hasta ahora veniamos escribiendo programas donde las
sentencias de código se ejecutan de manera secuencial en el orden en
el que aparecen. ¿Qué sucede si tenemos opciones para ejecutar
ciertas sentencias en el código de acuerdo a una determinada
condición?
Un ejemplo podría ser cuando llegamos un restaurant, hay una lista de
descuentos para alumnos del 30% sobre el precio final.
Ingresar Categoria
si Categoria = 'Estudiante' condición
entonces condición se cumple
total = subtotal * 0.7
sino condición no se cumple
total = subtotal
fin-si
Necesitamos preguntarnos ¿Es la categoría ingresada estudiante?,
en Pascal esto se realiza evaluando una expresión lógica.
Una condición implica comparar dos valores y utilizar un operador
de relación (Categoria='Estudiante'). La realización de sentencias
alternativas es en base a evaluar condiciones que son verdaderas o
falsas. Estas condiciones se llaman expresiones lógicas o
booleanas.
Algunas expresiones lógicas
edad >= 18 Si edad es 10 años, la expresión lógica es falsa.
contador < 10 Si contador es 8, la expresión lógica es verdadera.
respuesta = 'SI' Si respuesta es NO, la expresión lógica es falsa.
Operadores de relación
Se usan para expresar
condiciones y define una
relación entre dos valores.
Ejemplos
expresión valor
10=11 false
456>=89 true
- 0.002<0.001 true
Además se pueden comparar dos elementos de tipo
carácter. Se sigue el orden del código ASCII
Ejemplos
expresión valor
'0'<'4' true
'A'>='B' false
'C' = 'c' false
¿Qué pasa si combinamos expresiones lógicas en nuevas expresiones?,
para ello podemos utilizar los operadores lógicos and, or y not.
Tablas de verdad de operadores lógicos
Operador and A: Operando 1
B: Operando 2
Prioridad Operación
Operador or Alta not
and
Baja or
Operador not expresión valor
not( '0'<'4' ) false
( 'A'>='B' ) and ( 'C' = 'c' ) false
Prioridad completa de operadores Si existen paréntesis,
las expresiones que
Prioridad Operación
encierran se evaluan
Alta not primero
* , / , div, mod, and
+ , - , or
Baja < , <= , = , <> , >= , >
Evaluemos el siguiente código, ¿Qué valor tienen t y v?
La sentencia IF
Las expresiones lógicas pueden tomar dos valores true o false,
entonces necesitamos una estructura de control que permita ejecutar
una sentencia A si la expresión es verdadera y otra que permita
ejecutar una sentencia B si es falsa. En Pascal utilizamos para ello la
estructura o sentencia de control if-then-else
¿Cómo funciona la sentencia if?
if expresión lógica then Se evalua la expresión lógica,
Si la expresión es true ejecuta la sentencia A y el
sentencia A control pasa a la sentencia inmediatamente
else después de if-then-else (no se ejecuta la sentencia B).
sentencia B Si la expresión es false, ejecuta la sentencia B y pasa el
control a la siguiente sentencia del programa.
Veamos un ejemplo....
Evaluar x que representa la edad de una persona, si es mayor o igual a 10
entonces mostrar el mensaje Mayor de 10 años, caso contrario mostrar
Menor de 10 años
if x>=10 then
('Mayor de 10 años')
else
('Menor de 10 años')
¿Cómo lo implementamos en Delphi?
Necesitamos que el usuario del programa ingrese una edad, luego evaluamos esa
edad y mostramos en mensaje correspondiente.
No se coloca ;
en la sentencia anterior
al else
Omisión de la cláusula else
Existen casos donde una sentencia se ejecuta si
if expresión lógica then la expresión lógica es verdadera. En caso de que
sentencia sea falsa, no se ejecuta ninguna sentencia. En
este caso, se omite la cláusula else.
Sentencias compuestas
Existen casos, que cuando se cumple una condición en lugar
de realizar una acción es necesario llevar a cabo un conjunto
de ellas. Esto se realiza a través de sentencias compuestas.
begin
sentencia 1; Las sentencias tienen que
sentencia 2; estar separadas por punto y
coma y encerradas entre las
sentencia n palabras reservadas begin y
end end
Sentencias
Compuestas
Sentencia IF anidadas
if expresión lógica then
sentencia A
else
if expresión lógica then
sentencia B
else
sentencia C.....
La sentencia CASE
Esta sentencia se usa cuando necesito elegir entre varias
alternativas. Una sentencia CASE se compone de varias
sentencias simples. Cuando la sentencia se ejecuta una y
sólo una de las sentencias simples se ejecuta.
La expresión selector se evalua
y se compara con las listas de
Las listas de constantes
constantes.
son listas de uno o más
posibles valores de
case selector of selector.
lista constantes 1: sentencia 1;
lista constantes 2: sentencia 2; Solo se ejecuta una
sentencia, que puede
ser simple o
lista constantes n: sentencia n compuesta.
else
sentencia x; Las cláusula else es
end; opcional.
El selector debe ser un tipo
ordinal (integer, char,
boolean o enumerado)
Ejemplo uso de la estructura CASE
Ejemplo que permite realizar la suma, resta, multiplicación y división real
de dos números enteros. La operación a realizar es ingresada por el
usuario como +, -, * y /