Pascal - Declaraciones if-then anidadas

Siempre es legal en la programación Pascal anidar if-else declaraciones, lo que significa que puede usar una if o else if declaración dentro de otra if o else ifdeclaración (s). Pascal permite la anidación a cualquier nivel, sin embargo, si depende de la implementación de Pascal en un sistema en particular.

Sintaxis

La sintaxis de una instrucción if anidada es la siguiente:

if( boolean_expression 1) then
   if(boolean_expression 2)then S1

else
   S2;

Puede anidar else if-then-else de la misma manera que ha anidado la declaración if-then. Tenga en cuenta que, el anidadoif-then-elseconstructos da lugar a cierta ambigüedad en cuanto a qué enunciado else se empareja con cuál enunciado if. La regla es que la palabra clave else coincide con la primera palabra clave if (buscando hacia atrás) que aún no coincide con una palabra clave else.

La sintaxis anterior es equivalente a

if( boolean_expression 1) then
begin
   if(boolean_expression 2)then
      S1
   
   else
      S2;
end;

No es equivalente a

if ( boolean_expression 1) then  
begin  
   if exp2 then  
      S1  
end;  
   else  
      S2;

Por lo tanto, si la situación exige la construcción posterior, entonces debe poner begin y end palabras clave en el lugar correcto.

Ejemplo

program nested_ifelseChecking;
var
   { local variable definition }
   a, b : integer;

begin
   a := 100;
   b:= 200;
   
   (* check the boolean condition *)
   if (a = 100) then
      (* if condition is true then check the following *)
      if ( b = 200 ) then
         (* if nested if condition is true  then print the following *)
         writeln('Value of a is 100 and value of b is 200' );
   
   writeln('Exact value of a is: ', a );
   writeln('Exact value of b is: ', b );
end.

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Value of a is 100 and b is 200
Exact value of a is : 100
Exact value of b is : 200