Blog en Blogger Perfil en Slideshare Bookmarks en Delicious Perfil el Facebook Perfil en Twitter Fotos en Flickr Página en MySpace Canal en YouTube Perfil en Google Perfil en Google
Búsqueda personalizada
Curso/Tutorial de Pascal (Turbo Pascal)
 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 
  
 Acerca de
 Carlos Pes
 Colaboradores
 Perfiles
 Taller de ideas 
  
 Otros Proyectos
 Blog Carlos Pes
 Grupo Google
 Fotografías
 Proyecto CP
 Recetas cocina 
  
 Sitios Amigos
 Enlaces
  
 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)