Curso/Tutorial de Pascal (Turbo Pascal)
C/C++/C# HTML Java JavaScript Linux PHP Python Swift
 Principal
 Inicio
 Libros
 Librerías
 Bibliotecas
 Mapa Web
 
 Recursos
 Artículos
 Cursos
 Ejercicios
 Guías de uso
 Mini Diccionario 
  
 Sintaxis
 ANSI C
 Ordinogramas
 Pascal
 Pseudocódigo 
  
 Contenidos > 3.4 Anidamiento
Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de anidamiento:
  • while en while
  • while en repeat...until
  • while en for
  • repeat...until en repeat...until
  • repeat...until en for
  • repeat...until en while
  • for en for
  • for en while
  • for en repeat...until
De ellas, vamos a estudiar, como ejemplo, la combinación:
  • for en repeat...until

Bucle for en repeat...until

En Pascal, para anidar un bucle 
for en un bucle repeat...until, se utiliza la sintaxis:


 repeat

   /* Inicio del anidamiento */
   for <variable> := <valor_inicial> to <valor_final> do
      begin
         
<bloque_de_instrucciones>
      end

   /* Fin del anidamiento */

 until <expresión_lógica>;
 

Ejemplo 1: Se quiere escribir un programa que muestre por pantalla la tabla de multiplicar de un número entero introducido por el usuario. El proceso debe repetirse mientras que el usuario lo desee:


   Introduzca un numero entero: 7

   La tabla de multiplicar del 7 es:

   7 * 1 = 7
   7 * 2 = 14
   7 * 3 = 21
   7 * 4 = 28
   7 * 5 = 35
   7 * 6 = 42
   7 * 7 = 49
   7 * 8 = 56
   7 * 9 = 63
   7 * 10 = 70

   ¿Desea ver otra tabla (s/n)?: s

   Introduzca un numero entero: -12

   La tabla de multiplicar del -12 es:

   -12 * 1 =
-12
   -12 * 2 = -24
   -12 * 3 = -36
   -12 * 4 = -48
   -12 * 5 = -60
   -12 * 6 = -72
   -12 * 7 = -84
   -12 * 8 = -96
   -12 * 9 = -108
   -12 * 10 = -120

   ¿Desea ver otra tabla (s/n)?: n


 

En Pascal, para resolver este problema se puede escribir:

program EJE13221;

uses Crt;

var
   Seguir : Char;
   I, Numero : Integer;

begin
   ClrScr;

   repeat
      WriteLn;
      Write( '   Introduzca un numero entero: ' );
      ReadLn( Numero );

      WriteLn;
      WriteLn( '   La tabla de multiplicar del ',
               Numero, ' es:' );
      WriteLn;

      { Inicio del anidamiento }
      for I := 1 to 10 do
         WriteLn( '   ', I, ' * ', Numero,
                  ' = ', I * Numero );
      { Fin del anidamiento }

      WriteLn;
      Write( '   Desea ver otra tabla (s/n)?: ' );
      ReadLn( Seguir );
   until Seguir = 'n';
end.


Las instrucciones alternativas y repetitivas también se pueden anidar entre sí, permitiendo realizar 18 combinaciones más de anidamiento:
  • while en doble
  • while en simple
  • while en múltiple
  • repeat...until en doble
  • repeat...until en simple
  • repeat...until en múltiple
  • for en doble
  • for en simple
  • for en múltiple
  • Doble en while
  • Doble en repeat...until
  • Doble en for
  • Simple en while
  • Simple en repeat...until
  • Simple en for
  • Múltiple en while
  • Múltiple en repeat...until
  • Múltiple en for
De ellas, vamos a estudiar, como ejemplo, la combinación:
  • Simple en for.

Alternativa simple en bucle for

En Pascal, para anidar una alternativa simple en un bucle for, se utiliza la sintaxis:


 for <variable> := <valor_inicial> to <valor_final> do
    begin

       /* Inicio del anidamiento */
       if <expresión_lógica> then
          begin
             <bloque_de_instrucciones>
          end
       /* Fin del anidamiento */

    end

 

Ejemplo 2: Se quiere escribir un programa que muestre por pantalla todos los números enteros del 1 al 100 (ambos inclusive) que sean divisibles entre 17 ó 21:


   17 21 34 42 51 63 68 84 85

 

Anidando una alternativa simple en un bucle for, el problema se puede resolver con el código:

program EJE13231;

uses Crt;

var Numero : Integer;

begin
   ClrScr;
   GotoXY( 4, 2 );

   for Numero := 1 to 100 do

      { Inicio del anidamiento }
      if ( Numero mod 17 = 0 ) or
         ( Numero mod 21 = 0 ) then
          Write( Numero, ' ' )
      { Fin del anidamiento }
end.

 Más información
Texto extraído del libro EMPEZAR DE CERO A PROGRAMAR EN PASCAL.
 Contenidos > Apartado siguiente
Próximamente (cuarta entrega)