Pascal - Loops Aninhados

Pascal permite usar um loop dentro de outro loop. A seção a seguir mostra alguns exemplos para ilustrar o conceito.

A sintaxe para um nested for-do loop declaração em Pascal é a seguinte -

for variable1:=initial_value1 to [downto] final_value1 do

begin
   for variable2:=initial_value2 to [downto] final_value2 do
   
   begin   
      statement(s);
   end;
end;

A sintaxe para um nested while-do loop declaração em Pascal é a seguinte -

while(condition1)do

begin
   while(condition2) do
   
   begin
      statement(s);
   end;
   statement(s);
end;

A sintaxe para um nested repeat ... until loop Pascal é o seguinte -

repeat
   statement(s);
   repeat
      statement(s);
   until(condition2);
until(condition1);

Uma observação final sobre o aninhamento de loop é que você pode colocar qualquer tipo de loop dentro de qualquer outro tipo de loop. Por exemplo, um loop for pode estar dentro de um loop while ou vice-versa.

Exemplo

O programa a seguir usa um loop for aninhado para encontrar os números primos de 2 a 50 -

program nestedPrime;
var
   i, j:integer;

begin
   for i := 2 to 50 do
   
   begin
      for j := 2 to i do
         if (i mod j)=0  then
            break; {* if factor found, not prime *}
      
      if(j = i) then
         writeln(i , ' is prime' );
   end;
end.

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

2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
29 is prime
31 is prime
37 is prime
41 is prime
43 is prime
47 is prime