|
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:
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:
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.
|
|
|
|
Contenidos > Apartado siguiente |
|
Próximamente
(cuarta entrega) |
|
|
|
|