2. Estructura de control repetitivo
Las estructuras de control repetitivas son aquellas en
las que una sentencia o grupos de sentencias se repiten
muchas veces. Este conjunto de sentencias se
denomina bucle (loop). En este capítulo se introducen
las estructuras de control repetitivas disponibles en el
lenguaje turbo pascal; asimismo se describen un
conjunto de técnicas para diseñar algoritmos y
programas que utilicen bucles.
3. Tipos
La sentencia while: Es aquella en la que el número de
iteraciones no se conoce por anticipado y el cuerpo del
bucle se repite mientras se cumple una determinada
condición. Por esta razón, a estos bucles se le
denomina bucles condicionales.
El diagrama de flujo y el pseudocódigo de la sentencia
while se muestra en la figura
4. La sentencia Repeat: una variable de la sentencia
while es la sentencia repeat. Una de las características
de los bucles while-do es que la condición se evalué a
principio de casa iteración. En particular, si la
condición es falsa cuando la sentencia comienza,
entonces el bucle no se ejecuta nunca.
La sentencia repeat especifica un bucle condicional que
se repite hasta que la condición se hace verdadera.
En este ejemplo se repite siempre y cuando la condición
propuesta sea verdadera. Es como un if que repite una
y otra vez su bloque hasta que sea falso.
Se puede ver en el ejemplo:
5. Program leccion7;
Var
Salida: Integer;
Begin
Repeat
Write ('Introduce un valor (0.9): ');
Readln(salida);
Until (salida>=0) and (salida<=9);
Writeln ('Por fin un valor correcto. Terminando.');
End.
Prueba a introducir valores fuera del rango 0.9. El programa
continuará pidiendo que introduzcas una y otra vez un
valor, hasta que se cumpla la condición, momento en el que
saldrá del bucle.
6. La sentencia For: en numerosas ocasiones se puede
desear un bucle que se ejecute un número
determinado de veces, y cuyo número se conozca por
anticipado. Para aplicaciones de este tipo se utiliza la
sentencia For.
Sintaxis, diferencias y semejanzas:
Los lenguajes de programación modernos tienen
estructuras de control similares. Básicamente lo que
varía entre las estructuras de control de los diferentes
lenguajes es su sintaxis, cada lenguaje tiene una
sintaxis propia para expresar la estructura.
7. FOR:
realiza una iteración una cantidad de veces específica. Para ello necesita una variable de tipo
ordinal, a la que asignará valores dentro del rango que se le especifique, incrementándose
en uno. Por ejemplo, si se declara una variable llamada “cuenta” de tipo Integer, se puede
utilizar un For con el siguiente formato:
For cuenta:= 5 to 9 do
En este caso la sentencia se ejecutará cinco veces, ya que la variable “cuenta” primero
adoptará el valor 5, luego el valor 6, y así hasta llegar al 9, en que repetirá la sentencia por
última vez.
Por supuesto los valores pueden reemplazarse por variables o por constantes, siempre que
ellos hayan sido declarados y se les haya asignado algún valor previamente:
For cuenta:= 1 to máximo do
Una variante es asignar los valores excrementando la variable. Es decir, para el primer
ejemplo, la variable adoptaría primero el valor 9, luego el 8, y así sucesivamente hasta
llegar al 5 y terminar la iteración. Esto se efectúa mediante la palabra reservada “downto”:
For cuenta:= 9 downto 5 do
Su sintaxis es: Identificador:= inicio TO fin DO instrucción;
8. REPEAT:
similar al while, funciona a la inversa de él: evalúa una proposición o
una serie de ellas y repite una sentencia o un bloque de código hasta
que se cumpla una condición (hasta que la condición se vuelva
verdadera, es decir, hasta que valga “true”). En este caso, en primer
lugar se ejecutan las sentencias y luego se evalúa, y la iteración se
realizará mientras la proposición no sea verdadera. El formato es el
siguiente:
Contador:=0;
Repeat
Read (edad)
Contador:= contador+1;
Until edad > 21;
En este caso existe una excepción en cuanto a la regla de encerrar el
bloque de código entre etiquetas “Begin” y “End”, aunque si se colocan
no afectan la ejecución del programa.
9. WHILE:
Se evalúa una proposición (o un grupo de ellas unidas por conectores lógicos)
y, de resultar verdadera, se ejecutan las sentencias, repitiéndose el proceso
hasta que la proposición deje de ser verdadera. En este caso es importante
prever que en algún momento la proposición se vuelva falsa, porque de lo
contrario se entraría en un bucle infinito. Por ejemplo, si se utilizara un while
para llevar la cuenta de algo, el formato sería similar al siguiente:
Contador: = 0;
While edad <= 21 do
Begin
Contador:= contador + 1;
Read(edad);
End;
En este caso se utilizan dos variables de tipo entero, “contador” y “edad”, y el
bloque de código incrementa la variable “contador” en 1 cada vez que se lee de
teclado una edad menor o igual a 21.
Su sintaxis es:While condición DO instrucción
10. Diferencia For ejecuta la sentencia para cada valor de la
variable, while prueba la condición lógica y mientras
cumpla repite las sentencias que estén dentro de este
ciclo, y repeat es parecido a while solo que primero
ejecuta las sentencia y luego prueba si cumple con la
condición lógica para ver si repite de nuevo el bloque
de instrucciones, son similares sobretodo repeat que se
puede decir que es similar a while ya que la condición
se evalúa a principio de cada interacción por lo tanto
repeat y while son parecidas pero For se ejecuta el
número dependiendo las veces que el número se
conozca por anticipado.