Está en la página 1de 9

Algoritmos Quinta Semana

IS 141

ESTRUCTURAS REPETITIVAS

En la solución de algunos problemas es necesario ejecutar repetidas veces una


instrucción o un conjunto de instrucciones. En algunos casos, el número de repeticiones
se conoce con anterioridad, mientras que en otras depende de cálculos o estados de
variables que se dan dentro de la solución del problema.

Para solucionar este tipo de problemas, se utiliza un tipo de estructuras a las que se
conocen como estructuras de repetición, bucles o ciclos.

Las estructuras repetitivas (llamadas también bucles) se utilizan para realizar varias
veces el mismo conjunto de operaciones. Dentro de ellas encontramos aquellas donde la
cantidad repeticiones se manejan por un número, las que se realizan hasta que se cumple
cierta condición.

Son tres: la sentencia for y la sentencia while y la sentencia do while

Un ciclo consiste en un grupo de acciones que se ejecutan repetidas veces dependiendo


del cumplimiento de una condición. Al cual se les conoce como Ciclo, Bucle o Lazo.

Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el bucle.

Fases de un Programa Cíclico :


1. Entrada de datos e instrucciones previas
2. Lazo o bucle
3. Instrucciones finales o resto del proceso
4. Salida de resultado

Ejemplo de bucle infinito:

La flecha que se regresa hacia arriba nos está indicando que hay que volver a evaluar la
expresión. En este caso el bucle es infinito y no tiene una condición para terminar y se
estará haciendo siempre.

Ingeniería de Sistemas – UNSCH Página 1


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

Ejemplo de bucle finito:


En el siguiente ejemplo se agregó una condición, la cual nos permitirá finalizar la
ejecución del bucle en el caso en que la condición se cumpla.

CONTADOR:
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad
constante cada vez que se produce un determinado suceso o acción. Los contadores se
utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben
realizar una operación de inicialización y posteriormente las sucesivas de incremento o
decremento del mismo. La inicialización consiste en asignarle a un contador un valor.
Se situará antes y fuera del bucle.

ACUMULADOR O TOTALIZADOR :
Es una variable que suma sobre sí misma un conjunto de valores para de esta manera
tener la suma de todos ellos en una sola variable. La diferencia entre un contador y un
acumulador es que mientras el primero va aumentando de uno en uno, el acumulador va
aumentando en una cantidad variable.

1. CICLO MIENTRAS - WHILE


La sentencia while es un bucle condicional que incluye un test al principio. Este
ciclo consiste en un conjunto de instrucciones que se repiten mientras se cumpla una
condición. De igual manera que en las estructuras selectivas o condicionales, la
condición es evaluada y retorna un valor lógico, que puede ser verdadero o falso.

En el caso del ciclo mientras las instrucciones contenidas en la estructura de repetición


se ejecutarán solamente si al evaluar la condición se genera un valor verdadero; es decir,
si la condición se cumple; en caso contrario, se ejecutará la instrucción que aparece
después de Fin mientras.

A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresión


condicional, si el resultado es verdadero se ejecutarán las instrucciones que estén entre
Ingeniería de Sistemas – UNSCH Página 2
Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

el mientras y el fin mientras, al encontrarse la línea fin mientras se volverá a evaluar la


condición, si se cumple se ejecutarán nuevamente las instrucciones y así sucesivamente
hasta que la condición deje de cumplirse, en cuyo caso, el control del programa pasa a la
línea que aparece después de fin mientras.

Si en la primera pasada por el ciclo mientras la condición no se cumple las instrucciones


que están dentro del ciclo no se ejecutarán ni una sola vez. Con este mecanismo, la
sentencia puede no ejecutarse ni una sóla vez, si la condición es falsa nada más llegar al
bucle por primera vez. Por otro lado, es importante asegurarse de que, en algún
momento de la ejecución de la sentencia repetitiva, la condición va a ser falsa, pues de
lo contrario se caería en un bucle infinito.

Diagrama de Flujo

No
condición

Si

Acciones

Pseudocódigo

Mientras (condición) hacer While (condición) do


Acción S1 Acción S1
Acción S2 Acción S2
. .
. .
. .
Acción Sn Acción Sn
Fin_mientras End_while

Código Java

while (Condición)
{
Sentencias
}

Ingeniería de Sistemas – UNSCH Página 3


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

2. CICLO PARA - FOR


La sentencia for es un bucle predeterminado que ejecuta una sentencia repetidamente
mientras se asigne a la variable de control o contador una progresión de valores. Esta
progression puede ser ascendente (to) o descendente (downto).

Este ciclo, permite ejecutar repetidas veces una instrucción o un grupo de ellas, pero a
diferencia de otras instrucciones de repetición, ésta maneja el valor inicial, el valor de
incremento o decremento y el valor final de la variable de control como parte de la
instrucción.
Cuando al ejecutarse un algoritmo se encuentra una instrucción para la variable de
control (contador) toma el valor inicial, se verifica que el valor inicial no sobrepase el
valor final y luego se ejecutan las instrucciones del ciclo. Al encontrar la instrucción fin
para, se produce el incremento y se vuelve a verificar que la variable de control no haya
superado el límite admitido, y se vuelven a ejecutar las instrucciones que están dentro
del ciclo, y así sucesivamente tantas veces como sea necesario hasta que se supere el
valor final establecido.

El ciclo para termina en el momento en que la variable de control (contador) sobrepasa


el valor final; es decir, que la igualdad está permitida y las instrucciones se ejecutan
cuando el contador es igual al valor final.

Diagrama de Flujo

No

Desde a hasta b

Si

Acciones

Pseudocódigo

Desde valor_inicial hasta valor_final hacer For var=valor_inicial to valor_ final


Acciones acciones
Fin_desde End_for

Código Java

for(valor inicial, condición, incremento o decremento)


{
Sentencias
}

Ingeniería de Sistemas – UNSCH Página 4


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

3. CICLO HACER MIENTRAS (REPETIR) – DO… WHILE


La sentencia do … while es un bucle condicional con test al final. Ejecuta una sentencia
o sentencias hasta que sea cierta una condición (condición de salida). Con este
mecanismo, la sentencia siempre se ejecuta al menos una vez. Es importante asegurarse
de que, en algún momento de la ejecución, la condición va a ser falsa, pues de lo
contrario se caería en un bucle infinito.

Diagrama de Flujo Pseudocódigo

Español Inglés

Hacer Do
Acciones Acciones
Acciones Mientras <condición> While <condición>

Verdadero

Condicion

Falso

Código Java
do
{
Sentencias
}
while (condicion);

Ejercicios

1. Diseñar un algoritmo para mostrar los números del 1 al 100 y al finalizar


mostrar la respectiva suma de los números.

Definición del problema


Mostrar listado de números de 1 a 100 y luego la suma de éstos números.
Análisis del problema
Datos de entrada: ninguno
Datos de salida: números, suma
Proceso: suma
Diseño de la solución

Ingeniería de Sistemas – UNSCH Página 5


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

Inicio

S=0 Ojo
Lo primero a tener en cuenta es la
declaración e inicialización de la
variable: Num = 1. En este caso no solo
Num =1 100 se está declarando una variable de tipo
entero, sino también se está asignando
un valor inicial, que será el primer
número mostrado.
La condición o expresión relacional
Escribir Num con la cual se implementa el ciclo es
Num <= 100, dado que Num inicia en
1, la primera vez que se encuentra la
S =S +Num instrucción mientras, la expresión es
verdadera, por tanto se ejecutan las
instrucciones que aparecen al interior
del ciclo.
Después de haber mostrado el
contenido de la variable Num, éste
cambia, se incrementa en 1 (por usar el
ciclo para).

Escribir S

Fin

2. Leer 10 números y encontrar el valor promedio, el mayor y el menor


Definición del problema
Encontrar el promedio, el mayor y el menor de varios números
Análisis del problema
Para solucionar este problema, lo primero que hay que plantear es cómo se sabrá cuando
terminar la lectura de datos, en nuestro caso el programa termina después de leer los 10
números.
Datos de entrada: cantidad de números, número
Datos de salida: promedio, mayor y menor
Procesos:
suma = suma + número
promedio = suma / 10
Diseño de la solución

Ingeniería de Sistemas – UNSCH Página 6


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

Inicio

Con=1
Suma=0

Con<= 10

Leer Num

Con ==1

Ma=Num
Me=Num Nun < Me

Me=Num

Nun >Ma

Ma=Num

Suma=Suma+Num
Con=Con+1

P=Suma/10

Ma, Me, P

Fin

Ingeniería de Sistemas – UNSCH Página 7


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

Bucles Repetitivos:
• Independientes, son cuando los bucles se realiza uno primero hasta que se
cumple la condición y solo en ese caso se entra al bucle B.
• Anidados, al entrar a una estructura de repetición, dentro de ella se encuentra otra.
La más interna se termina de realizar y se continúa con la externa hasta que la
condición se cumple.
• Cruzados, los cuales no son convenientes de utilizar, se tiene que iniciamos un
bucle y no se ha terminado cuando empezamos otro, luego utilizamos estructuras
goto (saltos) para pasar al bucle externo y se quedan entrelazados.
Esto puede ocasionar que el programa pierda el control de cuál proceso se está
ejecutando y podamos obtener resultados erróneos. Veamos gráficamente el diseño de
estas tres formas cíclicas:

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 While controlado por tarea, la condición de While 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. Un ciclo Repetir
controlado por centinela es cuando el usuario digita una letra para salir como por
ejemplo S o N para indicar si desea continuar o no. El bucle debe repetirse hasta que la
respuesta del usuario sea "n" o "N".

Ingeniería de Sistemas – UNSCH Página 8


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz
Algoritmos Quinta Semana
IS 141

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 test (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. Los centinelas solamente pueden usarse con las estructuras Mientras y
Repetir, no con estructuras Desde/Para. ¿PODRÍAS DECIR POR QUÉ?

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.

Ingeniería de Sistemas – UNSCH Página 9


Elinar Carrillo Riveros
Jennifer Pillaca DE La cruz

También podría gustarte