Está en la página 1de 9

ESTRUCTURAS REPETITIVAS

Las computadoras estn especialmente diseadas para todas aquellas aplicaciones en


las cuales una operacin o conjunto de ellas deben repetirse muchas veces. Un tipo muy
importante de estructuras es el algoritmo necesario para repetir una o varias acciones un
nmero determinado de veces. Un programa que lee una lista de nmeros puede repetir
la misma secuencia de mensajes al usuario e instrucciones de lectura hasta que todos los
nmeros de un fichero se lean.
Las estructuras que repiten una secuencia de instrucciones un nmero determinado de
veces se denominan bucles y se denomina iteracin al hecho de repetir la ejecucin de
una secuencia de acciones. Un ejemplo aclarar la cuestin.
Supongamos que se desea sumar una lista de nmeros escritos desde el teclado-por
ejemplo, calificaciones de los alumnos de una clase-. El medio conocido hasta ahora es
leer los nmeros y aadir sus valores de una variable suma que contenga las sucesivas
sumas parciales. La variable suma se hace igual a cero y a continuacin se incrementa
en el valor del nmero cada vez que uno de ellos se lea. El algoritmo que resuelve este
problema es:
algoritmo suma
var
entero : SUMA, NMERO
inicio
SUMA 0
Leer (nmero)
SUMA SUMA

nmero

nmero

Leer (nmero)
SUMA SUMA
Leer (nmero)
Fin
Y as sucesivamente para cada nmero de la lista. En otras palabras, el algoritmo repite
muchas veces las acciones.
Leer (nmero)
SUMA SUMA

nmero

Tales opciones repetitivas se denominan bucles o lazos. La accin (o acciones) que se


repite en un bucle se denomina iteracin. Las dos principales preguntas a realizarse en el
diseo de un bucle son Qu contiene un bucle? Y Cuntas veces se debe repetir?
Cuando se utiliza un bucle para sumar una lista de nmeros, se necesita saber cuntos
nmeros se han de sumar. Para ello necesitaremos conocer algn medio para detener el
bucle. En el ejemplo anterior usaremos la tcnica de solicitar al usuario el nmero que
desea, por ejemplo, N. Existen dos procedimientos para contar el nmero de iteraciones,
usar una variable TOTAL que se inicializa a la cantidad de nmeros que se desea y a
continuacin se decrementa en una cada vez que el bucle se repite (este procedimiento
aade una accin ms al cuerpo del bucle: TOTAL TOTAL 1), o bien inicializar la
variable TOTAL en 0 o en 1 e ir incrementando en uno a cada iteracin hasta llegar al
nmero deseado.
Algoritmo suma_nmero
var
entero : N, TOTAL
real : NMERO, SUMA
inicio
leer(N)
TOTAL N
SUMA 0
Mientras TOTAL

0 hacer

Leer (NMERO)
SUMA SUMA

+ nmero

TOTAL TOTAL-1
fin_mientras
escribir (la suma de los , N, nmeros es , SUMA)
fin
El bucle podr tambin haberse terminado poniendo cualquiera de estas condiciones:

Hasta_que TOTAL sea cero


Desde 1 hasta N

Para detener la ejecucin delos bucles se utiliza una condicin de parada. El


pseudocdigo de una estructura repetitiva tendr siempre este formato:
Inicio
//inicializacin de variables
Repetir
Acciones S1, S2,

Salir segn condicin


Acciones Sn, Sn+1,
fin_repetir
Aunque la condicin de salida se indica en el formato anterior en el interior del bucle y
existen lenguajes que as contienen expresamente1--, lo normal es que la condicin se
indique al final o al principio del bucle, y as se consideran tres tipos de instrucciones o
estructuras repetitivas o iterativas generales y una particular que denominaremos iterar,
que contiene la salida en el interior del bucle.
Iterar
mientras
hacer-mientras
Repetir
Desde

(loop)
(while)
(do-while)
(repeat)
(for)

El algoritmo de suma anterior podra expresarse en pseudocdigo estndar as:


Algoritmo suma_nmero
var
entero : N, TOTAL
real : NMERO, SUMA
inicio
leer(N)
TOTAL N
SUMA 0
Repetir

Leer(nmero)
SUMA SUMA

+ nmero

TOTAL TOTAL-1
hasta_que TOTAL = 0
escribir (La suma es, SUMA)
fin
Los tres casos generales de estructuras repetitivas dependen de la situacin y modo de la
condicin. La condicin se evala tan pronto se encuentra en el algoritmo y su resultado
producir los tres tipos de estructuras citadas.
1. La condicin de salida del bucle se realiza al principio del bucle (estructura
mientras)
Algoritmo SUMA1
Inicio
//inicializar K, S a cero
K0
S0
Leer(N)
Mientras K

n hacer

KK+1
SS+K
Fin_mientras
Escribir (S)
Fin
Se ejecuta el bucle mientras se verifica una condicin (K

n).

2. La condicin de salida se origina al final del bucle; el bucle se ejecuta hasta que se
verifica una cierta condicin.
Repetir

KK+1
SS+K

Hasta_que K n
3. La condicin de salida se realiza con un contador que cuenta el nmero de
iteraciones.
Desde i = vi hasta vf hacer
SS+i
Fin_desde
i es un contador que cuenta desde el valor inicial (vi) hasta el valor final (vf) con los
incrementos que se consideren; si no se indica nada, el incremento es 1.
ESTRUTURA mientras (while)
La estructura repetitiva mientras (en ingls while o dowhile: hacer mientras) es aquella
en que el cuerpo del bucle se repite mientras se cumple una determinada condicin.
Cuando se ejecuta la instruccin mientras, la primera cosa que sucede es que se evala
la condicin (una expresin booleana). Si se evala falsa, no se toma ninguna accin y el
programa prosigue en la siguiente instruccin del bucle. Si la expresin Booleana es
verdadera, entonces se ejecuta el cuerpo del bucle, despus de lo cual se evala de
nuevo la expresin booleana. Este proceso se repite una y otra vez Mientras la
expresin booleana (condicin) sea verdadera. El ejemplo anterior quedara as:
Estructura Mientras a) Diagrama de flujo;

Condicin

No

b)pseudocdigo;

Acciones

mientras condicin hacer


accin S1
accin S2
.

.
accin Sn
fin_mientras

pseudocdigo en ingls
while condicin do
<acciones>
.
.
endwhile
o bien
dowhile condicin
<acciones>
.
.
enddo

d) Diagrama N-S.

mientras

condicin

acciones

Ejemplo5.1
Leer por teclado un nmero que represente una cantidad de nmeros que a su vez se
leern tambin por teclado. Calcular la suma de todos esos nmeros.
algoritmo suma_numeros
var
entero : N, TOTAL
real : numero, suma
inicio
leer(N)
{leer numero total N}
TOTAL N
SUMA 0
mientras TOTAL > 0 hacer
leer(numero)
SUMA SUMA

+ nmero

TOTAL TOTAL-1
Fin_mientras
Escribir(la suma de los, N, numeros es , suma)
fin
En el caso anterior, como la variable TOTAL e va decrementando y su valor inicial era N,
cuando tome el valor 0, significar que se han realizado N iteraciones, o, lo que es igual,
se han sumado N nmeros y el bucle se debe parar o terminar.
Ejemplo 5.2

Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos
variables enteras NUMERO y CONTADOR (contar el nmero de enteros positivos). Se
supone que se leen nmeros positivos y se detiene el bucle cuando se lee un nmero
negativo o cero.
algoritmo cuenta_enteros
var
entero : numero, contador
inicio
contador

leer(numero)
mientras numero > 0 hacer
leer(numero)
contador

contador+1

fin_mientras
escribir(el numero de enteros positivos es, contador)
fin
inicio
contador

Leer numero
Mientras numero > 0
Leer numero
contador

contador+1

Escribir numeros enteros, contador


fin
La secuencia de las acciones de este algoritmo se puede reflejar en el siguiente
pseudocdigo:
paso
1

pseudocdigo

leer(numero)

contador

significado
Inicializar contador a 0
Leer primer nmero.

mientras numero > 0 hacer

4
5

sumar 1 a contador
leer(numero)

Regresar al paso 3

Escribir (contador)

Comprobar si numero >0. S


es as, continuar con el paso
4. Si no, continuar con el paso
7.
Incrementar el contador
Leer siguiente numero
Evaluar y comprobar
expresin booleana
Visualizar resultados

la