21 de octubre de 2019

Repetición controlada por centinela.

   No en todos los problemas es posible conocer de manera anticipada cuantas veces se repetirá un grupo de sentencias. Es en este tipo de situaciones cuando tenemos el tipo de repetición controlada por centinela.

   El centinela es un valor que se utiliza para determinar la continuidad o no del ciclo a partir de la evaluación de la expresión condicional del mismo, es decir, el centinela determina si el grupo de sentencias asociadas se procesarán o no nuevamente. Por lo general, el valor del centinela forma parte de la expresión condicional de la estructura de control de repetición, y puede estar dado de manera explícita o implícita.

    Considere el ejercicio de la división y su solución del Ejemplo 3.12, ahí el centinela está implícito, debido a que la descripción del problema no contempla la designación del cero como centinela, sino que la naturaleza misma del problema lo requiere de esa manera ante la posible indeterminación de la división.

   En otros casos, el centinela se describe de manera explícita, como en los siguientes ejemplos:
  • Determinar el promedio de una lista de calificaciones, en donde cada calificación será introducida desde el teclado una a la vez. El fin de la lista de calificaciones sera indicado con -1, debido a que la lista es variable.
  • Determinar la suma de los números enteros proporcionados desde el teclado, hasta que el número proporcionado sea cero.
  • Dada una lista de números enteros positivos, determine el mayor y el menor de ellos, la lista termina al proporcionar cualquier número negativo.
   Aunque la repetición controlada por centinela es menos frecuente, no es menos necesaria ni menos importante que la repetición controlada por contador, de ahí la importancia de presentarla, conocerla y dominarle como parte de su repertorio como programador y de las técnicas utilizadas en la resolución de problemas.

   Considere el Ejemplo 3.19, el cual resuelve el mismo problema que el Ejemplo 3.18 pero utilizando un enfoque diferente: el de la repetición controlada por centinela.

   Note que en la repetición controlada por centinela, podría ser que el primer dato procesado fuera el centinela, por lo que no habría calificaciones a promediar, lo cual no es posible de hacer en la repetición controlada por contador, en donde se está obligado a proporcionar las N (diez por ejemplo) calificaciones; sin embargo, es posible simular el mismo tipo de ejecución, tal y como se muestra en la siguiente figura:

Una posible salida para el Ejemplo 3.19.
 
   Compare los ejemplos y sus correspondientes salidas, y asegúrese de entenderlos.