CICLOS DE REPETICIÓN CONTROLADOS POR CONDICIONES
Es una estructura, la cual evalúa una expresión sencilla o combinada, en la que, si el resultado de ésta es verdadero se ejecuta un bloque de instrucciones. Cuando terminan de realizarse se verifica nuevamente la expresión, si el resultado vuelve a ser verdadero se repite el proceso y así sucesivamente hasta que el resultado de la condición sea falso.
Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada llamada cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta.
Cuando se hace falsa, finaliza la repetición. La estructura While y la estructura Repeat, se conocen como Iterativas. Se usan cuando no se conoce con anticipación el número de veces que se ejecutará la acción.
La diferencia entre ambas es que la condición se sitúa al principio (Mientras) o al final (Repetir) de la secuencia de instrucciones. Entonces, en el primero, el bucle continúa mientras la condición es verdadera (la cual se comprueba antes de ejecutar la acción) y en el segundo, el bucle continúa hasta que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción, es decir, se ejecutará al menos una vez).
La estructura Desde/Para suele utilizarse cuando se conoce con anterioridad el número de veces que se ejecutará la acción.
Las estructuras Mientras y Para/Desde suelen en ciertos casos, no realizar ninguna iteración en el bucle, mientras que Repetir ejecutará el bucle al menos una vez.
Aspecto Crítico. Uno de los errores más comunes dentro de un ciclo es no poner una instrucción que permita cambiar el valor de la variable que está siendo evaluada lo cual provoca un ciclo infinito.
CENTINELAS Y BANDERAS
Cuando no se conoce a priori el número de iteraciones que se van a realizar, el ciclo puede ser controlado por centinelas.
CENTINELAS
En un ciclo Mientras controlado por tarea, la condición de Mientras especifica que el cuerpo del ciclo debe continuar ejecutándose mientras la tarea no haya sido completada.
En un ciclo controlado por centinela el usuario puede suspender la introducción de datos cuando lo desee, introduciendo una señal adecuada llamada centinela.
Cuando una decisión toma los valores de -1 o algún posible valor que no esté dentro del rango válido en un momento determinado, se le denomina centinela y su función primordial es detener el proceso de entrada de datos en una corrida de programa.
Por ejemplo, si se tienen las calificaciones de un examen (comprendida entre 0 y 100); un valor centinela en esta lista puede ser -999, ya que nunca será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle. Si la lista de datos son números positivos, un valor centinela puede ser un número negativo.
BANDERAS
Conocidas también como interruptores, switch, flags o conmutadores, son variables que pueden tomar solamente dos valores durante la ejecución del programa, los cuales pueden ser 0 ó 1, o bien los valores booleanos True o False. Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están simulando un interruptor abierto/cerrado o encendido/apagado.
Es una estructura, la cual evalúa una expresión sencilla o combinada, en la que, si el resultado de ésta es verdadero se ejecuta un bloque de instrucciones. Cuando terminan de realizarse se verifica nuevamente la expresión, si el resultado vuelve a ser verdadero se repite el proceso y así sucesivamente hasta que el resultado de la condición sea falso.
Se llama Mientras a la estructura algorítmica que se ejecuta mientras la condición evaluada resulte verdadera. Se evalúa la expresión booleana y, si es cierta, se ejecuta la instrucción especificada llamada cuerpo del bucle. Entonces se vuelve a evaluar la expresión booleana, y si todavía es cierta se ejecuta de nuevo el cuerpo. Este proceso de evaluación de la expresión booleana y ejecución del cuerpo se repite mientras la expresión sea cierta.
Cuando se hace falsa, finaliza la repetición. La estructura While y la estructura Repeat, se conocen como Iterativas. Se usan cuando no se conoce con anticipación el número de veces que se ejecutará la acción.
La diferencia entre ambas es que la condición se sitúa al principio (Mientras) o al final (Repetir) de la secuencia de instrucciones. Entonces, en el primero, el bucle continúa mientras la condición es verdadera (la cual se comprueba antes de ejecutar la acción) y en el segundo, el bucle continúa hasta que la condición se hace verdadera (la condición se comprueba después de ejecutar la acción, es decir, se ejecutará al menos una vez).
La estructura Desde/Para suele utilizarse cuando se conoce con anterioridad el número de veces que se ejecutará la acción.
Las estructuras Mientras y Para/Desde suelen en ciertos casos, no realizar ninguna iteración en el bucle, mientras que Repetir ejecutará el bucle al menos una vez.
Aspecto Crítico. Uno de los errores más comunes dentro de un ciclo es no poner una instrucción que permita cambiar el valor de la variable que está siendo evaluada lo cual provoca un ciclo infinito.
CENTINELAS Y BANDERAS
Cuando no se conoce a priori el número de iteraciones que se van a realizar, el ciclo puede ser controlado por centinelas.
CENTINELAS
En un ciclo Mientras controlado por tarea, la condición de Mientras especifica que el cuerpo del ciclo debe continuar ejecutándose mientras la tarea no haya sido completada.
En un ciclo controlado por centinela el usuario puede suspender la introducción de datos cuando lo desee, introduciendo una señal adecuada llamada centinela.
Cuando una decisión toma los valores de -1 o algún posible valor que no esté dentro del rango válido en un momento determinado, se le denomina centinela y su función primordial es detener el proceso de entrada de datos en una corrida de programa.
Por ejemplo, si se tienen las calificaciones de un examen (comprendida entre 0 y 100); un valor centinela en esta lista puede ser -999, ya que nunca será una calificación válida y cuando aparezca este valor se terminará de ejecutar el bucle. Si la lista de datos son números positivos, un valor centinela puede ser un número negativo.
BANDERAS
Conocidas también como interruptores, switch, flags o conmutadores, son variables que pueden tomar solamente dos valores durante la ejecución del programa, los cuales pueden ser 0 ó 1, o bien los valores booleanos True o False. Se les suele llamar interruptores porque cuando toman los valores 0 ó 1 están simulando un interruptor abierto/cerrado o encendido/apagado.
Controles para ciclos por condiciones:
Repetición controlada por contador. Se debe utilizar cuando se conoce el número de veces que se requiere repetir un conjunto de instrucciones. La variable que será evaluada como condición del ciclo, será comparada contra el valor límite, es decir, contra el número de repeticiones que deben ejecutarse. Por lo tanto, ésta requerirá ser incrementada dentro del propio ciclo para garantizar la salida de éste.
Repetición controlada por centinela o por bandera. El bloque de instrucciones se ejecuta hasta que un dato específico (centinela o bandera) sea ingresado.
Repetición controlada por respuesta del usuario. El bloque de instrucciones se repite, siempre que el usuario lo indique al preguntárselo (¿Hay más datos?).
Cabe recordar que toda estructura se puede anidar. Pero en lo que respecta a colocar un ciclo dentro de otro, el ciclo más interno se repite n número de veces por cada repetición del ciclo externo. Es decir, si hay 2 ciclos, uno dentro del otro y se requiere que el primero se repita 5 veces y el más interno 10 veces por cada vuelta del primero, el ciclo interno se repetirá un total de 50 veces.
Ejemplo 1
Leer un número entero N y calcular el resultado de la siguiente serie: 1 - 1/2+ 1/3 - 1/4 +.... +/- 1/N.
Algoritmo:
Inicio
Serie = 0
I = 1
Leer (N)
Band = "T"
Mientras I <= N hacer Si band = "T" entonces Serie = serie + (1/I) Band = "F" Sino Serie = serie - (1/I) Band . "T" Fin_si I = I + 1 Fin_mientras Escribir (serie) Fin.
Ejemplo 2
Obtener suma de los términos de la serie: 2, 5, 7, 10, 12, 15, 17, .... 1800.
Sumser de tipo entero, es el acumulador de términos de la serie.
Band de tipo carácter, es variable auxiliar que indica si al siguiente término de la serie hay que sumarle 3 ó 2.
Algoritmo:
Inicio
I = 2
Sumser = 0
Band ="T"
Mientras (I <= 1800) hacer Sumser = sumser + I Escribir (I) Si Band = "T" entonces I = I + 3 Band ="F" Sino I = I + 2 Band ="T" Fin_si Fin_mientras Escribir (sumser) Fin. RESUMEN
Se ha visto que la estructura Mientras tiene una pequeña variante a la estructura Para-Hacer en cuanto a la representación algorítmica. La estructura Para-Hacer, se inicializa automáticamente en su sintaxis y el incremento también es automático. En cambio, la estructura Mientras usa un contador que es inicializado antes de entrar al ciclo y dentro del ciclo es incrementado. También se verificó que los centinelas son valores que se le dan a la condición para permitir que un ciclo pueda terminar. Los centinelas solamente se pueden usar en estructuras Mientras y Repetir, ya que sirven para finalizar el ciclo cuando no se sabe las veces que se va a realizar, y la estructura Para-Hacer es usada cuando ya se conoce a priori el número de veces que se va a realizar el ciclo.
PREGUNTAS
1.- Los centinelas solamente pueden usarse con las estructuras Mientras y Repetir, no con estructuras Desde/Para. INDIQUE EL POR QUÉ.
2.- Entre las estructuras repetitivas conocidas, ¿cuál es para usted la más ventajosa y por qué?