|
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 begin
y end
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.
|
|
|
|
Contenidos > Apartado siguiente |
|
3.1 Repetitiva mientras
( la instrucción while
) |
|
|
|
|