|
|
| Contenidos > 10.2
Repetitiva hacer...mientras en pseudocódigo |
|
En
pseudocódigo,
para escribir una instrucción
repetitiva hacer...mientras
se utiliza la sintaxis:
hacer
<bloque_de_instrucciones>
mientras
( <expresión_lógica> )
|
Como se puede apreciar, la instrucción repetitiva hacer...mientras,
también hace uso de una condición.
En un bucle
hacer...mientras,
primero se ejecuta el bloque de instrucciones y, después, se
evalúa la condición. En el caso de que
ésta sea verdadera,
se vuelve a ejecutar el bloque de instrucciones. Y así
sucesivamente, hasta que, la condición sea falsa.
Por consiguiente, cuando el flujo
de un algoritmo llega a un bucle hacer...mientras,
existen dos posibilidades:
- Se ejecuta el
bloque de instrucciones y, después, si la
condición se evalúa a falsa, el bloque de
instrucciones no se vuelve a ejecutar, de manera que, el bucle hacer...mientras
finaliza, habiendo realizado una sola iteración.
- Se ejecuta el
bloque de instrucciones y, a continuación, si la
condición se evalúa a verdadera, el bloque
de instrucciones se vuelve a ejecutar. Y así sucesivamente,
hasta que la condición sea falsa.
El <bloque_de_instrucciones>
de un bucle hacer...mientras
puede ejecutarse una o más veces (iteraciones).
También hay que prevenir que el bucle no sea infinito.
En resumen, una instrucción
repetitiva hacer...mientras
permite ejecutar repetidamente (una o más veces) un bloque
de
instrucciones, mientras que, una determinada condición sea verdadera.
Ejemplo
1: De modo que, utilizando un
bucle hacer...mientras, el problema del
ejemplo 1 del apartado anterior, 10.1 Repetitiva mientras,
se puede resolver con el código:
algoritmo
Numeros_del_1_al_10
variables
entero
contador
inicio
contador ←
1 /*
Inicialización del contador */
hacer
escribir( contador )
/* Salida */
contador ←
contador +
1 /* Incremento */
mientras
( contador <=
10 )
/*
Condición */
fin |
La traza
del algoritmo es:
Secuencia: |
Acción
(instrucción): |
Valor
de:
contador |
| 1 |
contador ←
1 |
1 |
|
Inicio
de la iteración 1. |
|
| 2 |
escribir( contador ) |
1 |
| 3 |
contador ←
contador + 1 |
2 |
|
Fin
de la iteración 1. |
|
| 4 |
(Comprobar
si contador
<=
10) |
2 |
|
La
condición es verdadera.
Inicio de la iteración 2. |
|
| 5 |
escribir( contador ) |
2 |
| 6 |
contador ←
contador + 1 |
3 |
|
Fin
de la iteración 2. |
|
| ... |
|
|
| n-3 |
(Comprobar
si contador
<=
10) |
10 |
|
La
condición es verdadera.
Inicio de la iteración 10. |
|
| n-2 |
escribir( contador ) |
10 |
| n-1 |
contador ←
contador + 1 |
11 |
|
Fin
de la iteración 10. |
|
| n |
(Comprobar
si contador
<=
10) |
11 |
|
La
condición es falsa.
El bucle finaliza después de 10 iteraciones. |
|
Figura. Traza
del ejemplo 1.
Explicación de la traza:
- En primer lugar,
se le asigna el valor 1
a contador
(acción 1).
- A
continuación, se ejecuta el bloque de instrucciones del
bucle hacer...
mientras, mostrándose por pantalla el valor de contador
(acción 2) y, después, se incrementa en 1 el valor de la
variable contador
(acción 3).
- Una vez
ejecutado el bloque de instrucciones, se evalúa la
condición de salida del bucle ( contador
<=
10 ) (acción 4) y, puesto que, es verdadera, se
ejecuta, de nuevo, el bloque de instrucciones.
- Y así
sucesivamente, mientras que, la condición sea verdadera, o dicho
de otro modo, hasta que, la condición sea falsa.
- En este
algoritmo, el bloque de instrucciones del bucle se ejecuta diez veces
(iteraciones).
Al igual que ocurre con la
instrucción repetitiva mientras,
cualquier pequeño descuido o error al escribir el
código
del algoritmo, puede dar lugar a que la instrucción
repetitiva hacer...mientras
no funcione correctamente.
Como ya se ha dicho, el bucle hacer...mientras
puede iterar una o más veces, por tanto, cuando un bloque de
instrucciones debe iterar al menos una vez, generalmente, es mejor
utilizar un bucle hacer...mientras
que un bucle mientras,
como por ejemplo, en el siguiente problema.
Ejemplo 2: Se
quiere diseñar el algoritmo de un programa que:
1º)
Pida por teclado un número (dato entero).
2º) Pregunte al usuario si
desea introducir otro o no.
3º) Repita los
pasos 1º y 2º, mientras que, el usuario no responda
'n' de (no).
4º) Muestre por
pantalla la suma de los números introducidos por el usuario.
En pantalla:
Solución:
algoritmo
Suma_de_numeros_introducidos_por_el_usuario
variables
caracter
seguir
entero acumulador, numero
inicio
/*
En acumulador se va a guardar la suma
de los
números introducidos por el usuario. */
acumulador ←
0
hacer
escribir(
"Introduzca
un número entero: "
)
leer(
numero )
acumulador ←
acumulador +
numero
escribir(
"¿Desea
introducir otro número (s/n)?: " )
leer(
seguir )
mientras
( seguir <>
'n' )
/*
Mientras que el usuario desee introducir
más números, el bucle iterará. */
escribir(
"La suma de los números introducidos es: ",
acumulador )
fin |
|
|
|
| Más
información |
|
Texto extraído de los apartados:
13.2.2 Repetitiva hacer...mientras
13.2.2.2 Variable contador
13.2.2.3 Diferencias entre un bucle mientras y un bucle hacer...mientras
del libro EMPEZAR
DE CERO A PROGRAMAR EN LENGUAJE C,
(páginas 417-426). |
|
|
|
|