|
|
|
|
|
|
CarlosPes.com
> Curso
de Diseño de Algoritmos
> Repetitiva Hacer...Mientras en Pseudocódigo |
|
Instrucción
Repetitiva Hacer...Mientras en
Pseudocódigo
|
|
|
|
|
¿Qué es
una instrucción de control repetitiva hacer...mientras?
|
|
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 del apartado "Variable
Contador",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: |
|
|
|
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 |
|
|
|
|
|
|
|
|
|