ESTRUCTURA DESDE-HASTA
Esta estructura consiste en que la condición de salida se basa en un contador que cuenta el número de iteraciones. Por ejemplo, el ejemplo 8 podría hacerse de la siguiente manera:
desde i = 1 hasta N con_incremento 1 hacer leer número
SUMA ¬ SUMA + número
fin_desde
donde i es un contador que cuenta desde un valor inicial (1) hasta el valor final (N) con los incrementos que se consideren (de uno en uno en este caso). Esta es la llamada estructura Desde (“for”), que es la más simple desde el punto de vista de la condición de salida, ya que viene predeterminada por el código. Su utilidad reside en el hecho de que, en muchas ocasiones, se conoce de antemano el número de iteraciones. Esta estructura ejecuta las acciones del cuerpo del bucle, un número especificado de veces y de modo automático controla el número de iteraciones. Su formato en pseudocódigo es:
desde v=vi hasta vf hacer
<acciones>
fin_desde
v: variable índice
vi, vf: valores inicial y final de la variable
La variable índice o de control normalmente será de tipo entero y es normal emplear como identificador, las letras I,J,K como herencia de los índices y subíndices utilizados en cálculo científico. El incremento de la variable índice es 1 en cada iteración si no se indica expresamente lo contrario. Si debemos expresar incrementos distintos de +1 el formato de la estructura es:
desde v = vi hasta vf inc incremento hacer
<acciones> si vi > vf entonces usar
. en lugar de inc incremento
. la expresión dec decremento
fin_desde
Obviamente, si el valor inicial de la variable índice es menor que el valor final, los incrementos deben ser positivos, ya que en caso contrario la secuencia de acciones no se ejecutaría. De igual modo si el valor inicial es mayor que el valor final, el incremento debe ser en este caso negativo. Así:
desde I=20 hasta 10 hacer
<acciones>
fin_desde
no ejecutaría nunca el cuerpo del bucle.
FORTRAN
|
BASIC
|
DO n I =M1, M2, M3
<acciones> n CONTINUE
n : etiqueta de fin de bucle M1: valor inicial del contador M2: valor final del contador M3: valor de incremento (+ ó -)
|
FOR V = Vi TO Vf
<acciones> NEXT V
FOR V = Vi TO Vf STEP X
<acciones> NEXT V
|
PASCAL
|
C
|
for v:=vi to vt do
<accion o bloque de acciones>
for v:=vi downto vt do
<accion o bloque de acciones >
|
for(v=vi; v<=vf; vt+=step)
<accion o bloque de acciones >
(más genéricamente)
for(inicio;condición;actualización)
<accion o bloque de acciones >
|
ESTRUCTURA MIENTRAS
Cuando la condición de salida del bucle se realiza al principio del mismo, éste se ejecuta mientras se verifica una cierta condición. Es la llamada estructura repetitiva mientras (“while”); en ella el cuerpo del bucle se repite mientras se cumple una determinada condición. Su pseudocódigo es:
fin_mientras
mientras condición hacer
<acciones>
fin_mientras
Cuando se ejecuta la instrucción mientras, la primera cosa que sucede es la evaluación de la condición. Si es falsa, no se ejecuta ninguna acción y el programa prosigue en la siguiente instrucción a la finalización del bucle; si la condición es verdadera, entonces se ejecuta el cuerpo del bucle. No todos los lenguajes incluyen la estructura mientras.
PASCAL
|
C
|
while (condicion) do
<accion o bloque de acciones>
|
while (condicion)
<accion>
|
Obsérvese que en una estructura mientras si la primera evaluación de la condición es falsa, el cuerpo del bucle nunca se ejecuta. Puede parecer inútil ejecutar el cuerpo del bucle cero veces, ya que no tendrá efecto en ningún valor o salida; sin embargo, puede ser una acción deseada. Por ejemplo el siguiente bucle para procesar las notas de unos examenes contando el número de alumnos presentados dejará de ejecutarse cuando el numero leído sea negativo. Si la primera nota introducida fuera negativa, la acción deseada es, efectivamente, que no se ejecute el bucle ninguna vez.
C ¬ 0
leer nota
mientras nota ³ 0 hacer
{procesar nota}
C ¬ C+1
leer nota
fin_mientras
ESTRUCTURA REPETIR-HASTA_QUE
En esta estructura la condición de salida se sitúa al final del bucle; el bucle se ejecuta hasta que se verifique una cierta condición. Es la llamada estructura Repetir-hasta (“repeat-until”). Existen muchas situaciones en las que se desea que un bucle se ejecute al menos una vez, antes de comprobar la condición de repetición. Para ello la estructura repetir-hasta_que se ejecuta hasta que se cumpla una condición determinada que se comprueba al final del bucle. En pseudocódigo se escribe:
repetir
<acciones>
hasta_que <condición>
PASCAL
|
C
|
repeat
<accion>
...<accion>
until (condicion);
|
do
<accion o bloque> while (condicion); (*)
|
* (en C se “dice” mientras se cumpla la condición, no hasta que se cumpla)
El bucle repetir-hasta_que se repite mientras la condición sea falsa, justo lo opuesto a la estructura mientras. Sea el siguiente algoritmo:
inicio
contador ¬1
repetir
leer número
contador ¬contador+1 hasta_que contador > 30 escribir “números leídos: 30”
fin
Este bucle se repite hasta que el valor de variable contador exceda a 30, lo que sucederá después de 30 ejecuciones del mismo. Nótese que si en vez de 30 pusiéramos 0, el cuerpo del bucle se ejecutará siempre al menos una vez.
Ejemplo:
Calcular el factorial de un número N, usando la estructura repetir.
Ejemplo:
Calcular el factorial de un número N, usando la estructura repetir.
inicio
leer N Factorial ¬1 I ¬ 1
repetir
Factorial¬ Factorial * I I ¬ I+1
hasta_que I > N
escribir “el factorial del número”, N, “es”, Factorial
fin
Las tres estructuras repetitivas son susceptibles de intercambio entre ellas, así por ejemplo es posible, sustituir una estructura desde, por una mientras; con incrementos positivos o negativos de la variable índice. En efecto, la estructura desde con incremento positivo es equivalente a la estructura mientras marcada con la A), y la estructura desde con incremento negativo es equivalente a la estructura mientras marcada con la B).
A) v ¬ vi
mientras v < = vf hacer
<acciones>
v ¬ v + incremento
fin_mientras
B) v ¬ vi
mientras v > = vf hacer
<acciones>
v ¬ v - decremento
Comentarios
Publicar un comentario