Pascal - Bucles anidados

Pascal permite usar un bucle dentro de otro bucle. La siguiente sección muestra algunos ejemplos para ilustrar el concepto.

La sintaxis de un nested for-do loop declaración en Pascal es la siguiente:

for variable1:=initial_value1 to [downto] final_value1 do

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

La sintaxis de un nested while-do loop declaración en Pascal es la siguiente:

while(condition1)do

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

La sintaxis de un nested repeat ... until loop Pascal es el siguiente:

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

Una nota final sobre el anidamiento de bucles es que puede colocar cualquier tipo de bucle dentro de cualquier otro tipo de bucle. Por ejemplo, un bucle for puede estar dentro de un bucle while o viceversa.

Ejemplo

El siguiente programa utiliza un bucle for anidado para encontrar los números primos del 2 al 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.

Cuando el código anterior se compila y ejecuta, produce el siguiente 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