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 > 2.4 Anidamiento
Las instrucciones alternativas y repetitivas pueden escribirse una dentro de otra. A este hecho se le conoce como anidamiento.

Las instrucciones alternativas permiten realizar las siguientes combinaciones de anidamiento:
  • Doble en doble.
  • Doble en simple.
  • Doble en múltiple.
  • Simple en simple.
  • Simple en doble.
  • Simple en múltiple.
  • Múltiple en múltiple.
  • Múltiple en doble.
  • Múltiple en simple.
De ellas, vamos a estudiar, como ejemplo, las siguientes combinaciones:
  • Doble en doble.
  • Múltiple en doble.

Alternativa doble en doble

En Pascal, para anidar una alternativa doble en otra, se utiliza la sintaxis:


   if <expresión_lógica_1> then
      begin

         { Inicio del anidamiento }
         if <expresión_lógica_2> then
            begin
               <bloque_de_instrucciones_1>
            end
         else
            begin
               <bloque_de_instrucciones_2>
            end
         { Fin del anidamiento }

      end
   else
      begin
         <bloque_de_instrucciones_3>
      end
 

O también:


   if <expresión_lógica_1> then
      begin
         <bloque_de_instrucciones_1>
      end
   else
      begin

         { Inicio del anidamiento }
         if <expresión_lógica_2> then
            begin
               <bloque_de_instrucciones_2>
            end
         else
            begin
               <bloque_de_instrucciones_3>
            end
         { Inicio del anidamiento }

      end

 

Ejemplo 1: Se quiere escribir un programa que:

1º) Pida por teclado la nota (real) de una asignatura.
2º) Muestre por pantalla:
  • "APTO", en el caso de que la nota sea mayor o igual que 5 y menor o igual que 10.
  • "NO APTO", en el caso de que la nota sea mayor o igual que 0 y menor que 5.
  • "ERROR: Nota incorrecta.", en el caso de que la nota sea menor que 0 o mayor que 10.
En pantalla:


   Introduzca nota (real): 7.5

   APTO

 


   Introduzca nota (real): 12.2

   ERROR: Nota incorrecta.

 

Una solución al problema es:

program EJE12061;

uses Crt;

var Nota : Real;

begin
   ClrScr;
   GotoXY( 4, 2 );
   Write( 'Introduzca nota (real): ' );
   ReadLn( Nota );

   GotoXY( 4, 4 );
   if ( Nota >= 5 ) and ( Nota <= 10 ) then
      Write( 'APTO' )
   else

      { Inicio del anidamiento }
      if ( Nota >= 0 ) and ( Nota < 5 ) then
         Write( 'NO APTO' )
      else
         Write( 'ERROR: Nota incorrecta.' );
      { Fin del anidamiento }

end.


Fíjese que, en este caso, se puede prescindir de las palabras reservadas beginend de la sintaxis de las alternativas dobles, ya que, los bloques de instrucciones sólo contienen una instrucción.

Como se puede observar, el anidamiento de instrucciones alternativas permite ir descartando valores hasta llegar al bloque de instrucciones que se debe ejecutar.


Alternativa múltiple en doble

En Pascal, para anidar una alternativa múltiple en una alternativa doble, se utiliza la sintaxis:


if <expresión_lógica> then
 begin

  { Inicio del anidamiento }
  case <expresión> of
   <lista_de_constantes_1> : begin
                             <bloque_de_instrucciones_1>
                             end;
   <lista_de_constantes_2> : begin
                             <bloque_de_instrucciones_2>
                             end;
   ...
   <lista_de_constantes_n> : begin
                             <bloque_de_instrucciones_n>
                             end
   [ else
        begin
           <bloque_de_instrucciones_n+1>
        end ]
  end

  { Fin del anidamiento }

 end
else
 begin
    <bloque_de_instrucciones_n+2>
 end
 

Ejemplo 2: Así por ejemplo, el primer ejemplo del apartado anterior, 2.3 Alternativa múltiple, también se puede resolver anidando una alternativa múltiple en una alternativa doble.

program EJE12081;

uses Crt;

var Dia : Integer;

begin
   ClrScr;
   GotoXY( 4, 2 );
   Write( 'Introduzca dia de la semana: ' );
   Read( Dia );

   GotoXY( 4, 4 );
   if ( Dia >= 1 ) and ( Dia <= 7 ) then

   { Solo si el dia es valido, se ejecuta la
   instruccion alternativa multiple }

      { Inicio del anidamiento }
      case Dia of
         1 : Write( 'Lunes' );
         2 : Write( 'Martes' );
         3 : Write( 'Miercoles' );
         4 : Write( 'Jueves' );
         5 : Write( 'Viernes' );
         6 : Write( 'Sabado' );
         7 : Write( 'Domingo' )
      end
      { Fin del anidamiento }

   else
      Write( 'ERROR: Dia incorrecto.' )
end.

 Más información
Texto extraído del libro EMPEZAR DE CERO A PROGRAMAR EN PASCAL.
 Contenidos > Apartado siguiente
3.1 Repetitiva mientras ( la instrucción while )