medicina - ada significado
¿Hay una diferencia entre "y" frente a "y luego" en una declaración IF? (3)
Estoy aprendiendo Ada arreglando errores y leyendo código. He notado algunas afirmaciones de tipo "if" que están relacionadas con "and" y otras con "and then". de manera similar, hay "o" y otros lugares hay "o si no". Un compañero de trabajo dice que es solo azúcar sintáctica y no hace ninguna diferencia. Me pregunto si tiene razón.
El and then
construir es una característica que utilizan algunos lenguajes de programación llamado cortocircuito.
Puede probar y comprender esta funcionalidad probando estos fragmentos de código:
x:=0;
if false and 1/x=1 then
null;
end if;
Esto dará lugar a una excepción de división por cero.
x:=0;
if false and then 1/x=0 then
null;
end if;
Este no generará una excepción porque no comprueba la segunda condición.
Supongamos que FuncB es una función que devuelve Boolean que tiene un efecto secundario. En
if False and FuncB then
null;
end if;
Se produce el efecto secundario de FuncB, mientras que con la forma de cortocircuito.
if False and then FuncB then
null;
end if;
El efecto secundario de FuncB no se produce.
En Ada and then
y or else
se denominan formas de ''cortocircuito'' de, correspondientemente, and
/ or
operadores:
Los operadores de acceso directo [
and then
,or else
] se utilizan para hacer condicional la evaluación de partes de expresiones booleanas. Esto nunca debe hacerse para acelerar la evaluación (con los compiladores de optimización modernos, posiblemente no tendrá ese efecto). El uso correcto es evitar la evaluación de expresiones conocidas para generar una excepción.
Ejemplo (tomado, como la explicación anterior, de wikibooks/Ada ):
if Dog /= null and then G (Dog) then
Walk (Dog);
end if;
Aquí G (Perro) será evaluado solo si Perro no es nulo. Sin and then
sería evaluado de todos modos, generando una excepción si Dog es nulo.
Tenga en cuenta que and then
or else
, son, estrictamente hablando, no operadores, ya que no se pueden sobrecargar.
Te sugiero que wikibook este wikibook , te ayudará mucho en tu viaje a través de Ada. )