sábado, 25 de abril de 2015

Lógica de Programación (17) - Estructura hacer-mientras



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.

algoritmo Promedio
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

Copyright © IsraelCapetillo.com - Un blog de tecnología, noticias geek y más Compartido por Gooyaabi Templates | Powered By Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com