Karel dispone de varios operadores lógicos que puede utilizar para la creación de condiciones más avanzadas
El operador y junta combina dos condiciones en una que es cierta solo cuando ambas lo sean.
Por ejemplo, si tenemos el siguiente pseudo-código, entonces la condicional se comportará de acuerdo a la tabla de abajo
si condicion1 y condicion2 entonces
INSTRUCCION
Condicion1 | Condicion2 | Condicion1 y Condicion2 |
---|---|---|
Falso | Falso | Falso, no se ejecuta el condicional |
Falso | Verdadero | Falso, no se ejecuta el condicional |
Verdadero | Falso | Falso, no se ejecuta el condicional |
Verdadero | Verdadero | Verdadero, sí se ejecuta el condicional |
El operador y emplea evaluación de cortocircuito, es decir, si el primer termino da falso, ya no se evalúa el segundo.
Veamos un ejemplo:
usa rekarel.globales;
iniciar-programa
define-condicion dejaVerdadero como
inicio
deja-zumbador;
regresa verdadero;
fin;
define-condicion dejaFalso como
inicio
deja-zumbador;
regresa falso;
fin;
inicia-ejecucion
si dejaFalso y dejaVerdadero entonces
avanza;
termina-ejecucion
finalizar-programa
Produce el siguiente efecto (ve como nunca se llamó a la función dejaVerdadero):
El operador y
puede ser escrito como y o alternativamente como e.
El operador o junta combina dos condiciones en una que es cierta al menos una de ellas lo sean.
Por ejemplo, si tenemos el siguiente pseudo-código, entonces la condicional se comportará de acuerdo a la tabla de abajo
si condicion1 o condicion2 entonces
INSTRUCCION
Condicion1 | Condicion2 | Condicion1 o Condicion2 |
---|---|---|
Falso | Falso | Falso, no se ejecuta el condicional |
Falso | Verdadero | Verdadero, sí se ejecuta el condicional |
Verdadero | Falso | Verdadero, sí se ejecuta el condicional |
Verdadero | Verdadero | Verdadero, sí se ejecuta el condicional |
El operador o emplea evaluación de cortocircuito, es decir, si el primer termino da verdadero, ya no se evalúa el segundo.
Veamos un ejemplo:
usa rekarel.globales;
iniciar-programa
define-condicion dejaVerdadero como
inicio
deja-zumbador;
regresa verdadero;
fin;
define-condicion dejaFalso como
inicio
deja-zumbador;
regresa falso;
fin;
inicia-ejecucion
si dejaVerdadero o dejaFalso entonces
avanza;
termina-ejecucion
finalizar-programa
El operador o
puede ser escrito como o o alternativamente como u.
El operador igual que, que se escribe ==, combina dos condiciones en una que es cierta si ambas condiciones son verdaderas o ambas son falsas.
Por ejemplo, si tenemos el siguiente pseudo-código, entonces la condicional se comportará de acuerdo a la tabla de abajo
si condicion1 == condicion2 entonces
INSTRUCCION
Condicion1 | Condicion2 | Condicion1 == Condicion2 |
---|---|---|
Falso | Falso | Verdadero, sí se ejecuta el condicional |
Falso | Verdadero | Falso, no se ejecuta el condicional |
Verdadero | Falso | Falso, no se ejecuta el condicional |
Verdadero | Verdadero | Verdadero, sí se ejecuta el condicional |
El operador no niega la siguiente condición
Por ejemplo, si tenemos el siguiente pseudo-código, entonces la condicional se comportará de acuerdo a la tabla de abajo
si no condicion entonces
INSTRUCCION
Condicion | no Condicion |
---|---|
Falso | Verdadero, sí se ejecuta el condicional |
Verdadero | Falso, no se ejecuta el condicional |
Se pueden utilizar paréntesis para cambiar el orden de los operadores o aclarar la condición
Por ejemplo, podemos hacer una condicion que se ejecute unicamente cuando exactamente una de dos condiciones sea cierta. Podemos lograr esto revisando que se cumpla al menos una de las condiciones y que no se cumplan ambas, lo cual en código se ve de la siguiente manera:
si (condicion1 o condicion2) y no (condicion1 y condicion2) entonces
INSTRUCCION
Condicion1 | Condicion2 | Resultado |
---|---|---|
Falso | Falso | Falso, no se ejecuta el condicional |
Falso | Verdadero | Verdadero, sí se ejecuta el condicional |
Verdadero | Falso | Verdadero, sí se ejecuta el condicional |
Verdadero | Verdadero | Falso, no se ejecuta el condicional |