Contenido

Operadores lógicos

Karel dispone de varios operadores lógicos que puede utilizar para la creación de condiciones más avanzadas

Operador y

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
Condicion1Condicion2Condicion1 y Condicion2
FalsoFalsoFalso, no se ejecuta el condicional
FalsoVerdaderoFalso, no se ejecuta el condicional
VerdaderoFalsoFalso, no se ejecuta el condicional
VerdaderoVerdaderoVerdadero, se ejecuta el condicional

Evaluación de cortocircuito

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):

Deja un solo zumbador

Alias

El operador y puede ser escrito como y o alternativamente como e.


Operador o

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
Condicion1Condicion2Condicion1 o Condicion2
FalsoFalsoFalso, no se ejecuta el condicional
FalsoVerdaderoVerdadero, se ejecuta el condicional
VerdaderoFalsoVerdadero, se ejecuta el condicional
VerdaderoVerdaderoVerdadero, se ejecuta el condicional

Evaluación de cortocircuito

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
Deja un solo zumbador

Alias

El operador o puede ser escrito como o o alternativamente como u.


Igual que (==)

Desde ReKarel 2.0.0
El operador igual que también funciona con cantidades enteras, si estás buscando información de esto puedes leer más aquí.

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
Condicion1Condicion2Condicion1 == Condicion2
FalsoFalsoVerdadero, se ejecuta el condicional
FalsoVerdaderoFalso, no se ejecuta el condicional
VerdaderoFalsoFalso, no se ejecuta el condicional
VerdaderoVerdaderoVerdadero, se ejecuta el condicional

Operador no

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
Condicionno Condicion
FalsoVerdadero, se ejecuta el condicional
VerdaderoFalso, no se ejecuta el condicional

Paréntesis

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
Condicion1Condicion2Resultado
FalsoFalsoFalso, no se ejecuta el condicional
FalsoVerdaderoVerdadero, se ejecuta el condicional
VerdaderoFalsoVerdadero, se ejecuta el condicional
VerdaderoVerdaderoFalso, no se ejecuta el condicional