En la lección anterior conocimos la estructura mientras-hacer, la cual evalúa una condición inmediatamente al inicio de la estructura, lo cual puede resultar en que el bloque de instrucciones que forman el cuerpo del ciclo no se repitan ni una sola vez.
La estructura que vamos a conocer hoy es muy parecida pero con una diferencia crucial: la condición se evalúa hasta el final de la estructura. Esta es la sintaxis de la estructura hacer-mientras:
hacer
sentencias
mientras (condición)
Esta particularidad permite que el cuerpo del ciclo se repita al menos una vez, mientras que la segunda repetición dependerá del resultado de la evaluación de la condición. Esta puede ser una elección correcta cuando necesitamos que unas determinadas instrucciones se ejecuten por lo menos una vez (como presentar un menú de opciones al usuario), pero puede conducir a errores si no se usa con cuidado. Por ejemplo, supongamos que necesitamos evaluar una lista de números; si la lista está vacía y tratamos de ejecutar instrucciones sobre ella sin verificar su contenido primero, generaremos muchos errores de programación. Por eso es importante conocer las diferencias entre los distintos tipos de estructuras de repetición, pues así sabremos cual nos conviene usar según sea la lógica necesaria para el algoritmo.
Veamos un ejemplo: en este algoritmo solicitamos al usuario las calificaciones de un grupo de alumnos (se desconoce la cantidad) y calculamos el promedio de las mismas.
var
entero: cal, suma, cont
real: promedio
caracter: respuesta
inicio
suma <- 0
cont <- 0
hacer
escribir("Escribe la calificación:")
leer(cal)
suma <- suma + cal
cont++;
escribir("¿Deseas capturar otra calificación?" S/N")
leer (resp)
mientras (resp = 'S') o (resp = 's')
promedio <- suma/cont
escribir("El promedio de las calificaciones capturadas es: " + promedio)
fin
En el ejemplo podemos ver que el cuerpo del ciclo se va a repetir al menos una vez, dado que la condición (mientras) se ejecuta hasta el final. Dentro del cuerpo del ciclo leemos la calificacion, la acumulamos en la suma y entonces preguntamos al usuario si desea capturar otra calificación, es decir, si desea dar otra vuelta al ciclo. Dependiendo de su respuesta, el cuerpo del ciclo se repetirá (o no). También usamos la variable cont para hacer un conteo de las calificaciones capturadas, de modo que podamos calcular el promedio una vez que se terminaron de capturar todas.
Esta es la prueba de escritorio del altoritmo para cuatro calificaciones:
Y este es el programa corriendo en C#:
Mira otro ejemplo de un algoritmo que recibe un número y nos regresa el número con los dígitos invertidos (por ejemplo, si se introduce un 198, nos regresa un 891):
algoritmo Invertir_numero
var
entero: num, digitoSig
inicio
escribir("Escribe un número: ")
leer(num)
escribir("El número en orden inverso es ")
hacer
digitoSig <- num mod 10
escribir(digitoSig)
num = num div 10
mientras (num > 0)
fin
Mira la prueba de escritorio:
Y el programa funcionando en C# :
Como vemos, el ciclo hacer-mientras tiene sus usos y ventajas sobre la estructura mientras-hacer. Perp dependerá de las necesidades de nuestro programa la elección que hagamos de la estructura de repetición más adecuada. En la próxima lección conoceremos una estructura de repetición más, pero por ahora toca practicar. ¡Hasta la próxima!
ACTIVIDADES DE APRENDIZAJE
- Repite los cuatro ejercicios de la lección anterior, pero ahora usa la estructura hacer-mientras.
Enlace: Índice del curso
0 comentarios:
Publicar un comentario