Pascal - instruções aninhadas se-então

É sempre legal na programação Pascal aninhar if-else declarações, o que significa que você pode usar uma if ou else if declaração dentro de outra if ou else ifafirmações). Pascal permite o aninhamento em qualquer nível, no entanto, se depende da implementação Pascal em um sistema particular.

Sintaxe

A sintaxe para uma instrução if aninhada é a seguinte -

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

else
   S2;

Você pode aninhar else if-then-else da mesma maneira que aninhava a instrução if-then. Observe que o aninhadoif-then-elseconstruções dão origem a alguma ambigüidade quanto a qual instrução else é pareada com qual instrução if. A regra é que a palavra-chave else corresponda à primeira se a palavra-chave (pesquisa para trás) ainda não corresponder a uma palavra-chave else.

A sintaxe acima é equivalente a

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

Não é equivalente a

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

Portanto, se a situação exige a construção posterior, você deve colocar begin e end palavras-chave no lugar certo.

Exemplo

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.

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

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