Hola compañeros,
viendo el mensaje de itimaq tengo que decir que no esta en lo9 cierto. A continuación explico el objetivo de and then y or else.
And then. Basicamente este operador funciona como un operador and pero con una diferencia. El operador and si recordamoses cierto si los dos son ciertos y falso en caso contrario. Entonces el operador and then en una sentencia condicional o en un bucle lo que consigue es no tener que evaluar la sentencia completa para saber el resultado de la condicion. Si tenenos un and then en un bucle o condicional lo que hace el sistema al ejecutar es mirar la primera parte de la sentencia. Solo en el caso de que esta se evalue a true (cierto) miramos la segunda parte de la sentencia, porque de otro modo no resulta necesario pues la sentencia completa se evaluaria a false. Esta idea nos ahorra ciclos de ejecución y tiempo de procesamiento de un programa.
Or else. La idea del or else es la misma que la de and then pero esta vez con el operador or. El operador or se evalua a false unicamente si las dos partes de la sentencia son false. Por tanto el sistema al ver un operador or else mira primero la primera parte de la sentencia y solo si esta se evalua a false mira la segunda parte, pues de lo contrario la sentencia competa se evaluaria automaticamente a true.
Espero que con todo este galimatias os haya aclarado algo.
Por si acaso hay van unos ejemplos
a=7; b=4
if (a<5 and then b>3)
put (a);
else
put (
;
end if;
En este caso solo mirariamos la primera parte pues al mirar esta nos damos cuenta de que se evalua a false con lo que no necesitamos evaluar la segunda y vamos directamente al else. Escribiriamos un 4.
a=7; b=4
if (a>5 or else b<3) then
put(a);
else
put(
end if;
En este caso solo mirariamos la primera parte pues al mirar esta nos damos cuenta de que se evalua a true con lo que no necesitamos evaluar la segunda y vamos directamente al if. Escribiriamos un 7;
Un saludo