Anda di halaman 1dari 5

"Los sueos nunca

desaparecen siempre que las


personas no los abandonan."

Clase Tema 4 Algoritmos con repeticiones.


Bibliografa:
Notas de clases
Sumario:
1. ciclos con precondicin.
2. ciclos con poscondicin.
3. ciclos por variable de control.
Objetivos:

Que el estudiante conozca cmo resolver problemas lgicos mediante el uso de las estructuras repetitivas.
Algoritmos con repeticiones.
En la prctica, aparecen con frecuencia situaciones en las que se necesita que un conjunto de instrucciones se ejecute
repetidamente. En este caso se debe contar con estructuras de control que permitan la iteracin o repeticin de dicho
conjunto de instrucciones. Estas estructuras deben permitir la verificacin de condiciones que determinan si el conjunto
de instrucciones debe seguir siendo repetido o si debe detenerse dicha repeticin o iteracin
Ciclos con precondicin.
Como su nombre lo indica, en este ciclo la verificacin de la condicin ocurre antes de la ejecucin de la secuencia de
instrucciones que se desea iterar.
En seudo cdigo, esta instruccin tiene la sintaxis siguiente:
Mientras <condicin>
<secuencia de instrucciones>
Fin
En diagrama en bloques:

Si
<Condicin>

Observaciones:
Si la condicin nunca se hace falsa estamos en
presencia de un ciclo infinito, lo cual es
sinnimo de pasos infinitos, lo cual atenta
contra el concepto de algoritmo.
En el bloque de <Instrucciones> debe
garantizarse que la condicin se haga falsa en
algn momento.
Puede que nunca se ejecute el bloque de
instrucciones.

<Instrucciones>

No
Ejemplo1: Dado un nmero , calcular su factorial.

Motivacin: Con las estructuras que se han estudiado hasta este momento no se puede abordar este problema. Su
modelo matemtico es el siguiente:

= ! =

= ( )
=

Note que resolver este problema podra ser trivial si de antemano se conoce , pero en este caso se desea hacer un
algoritmo lo suficientemente general como para resolver el factorial de cualquier
Este problema se puede resolver expresando el factorial de la siguiente forma:
! = !

Suponga =
Obtener este resultado sera
! =
! = !
! = !
! = !
! = !

Observaciones:
Note que cada siguiente paso depende del anterior, mientas que el primer
paso queda definido claramente.
Solo necesitamos saber hasta cuando hay que repetirlo y esto queda
definido por

Necesitamos una variable entera que tome valores entre y . Esta la llamaremos y usualmente se denomina variable
de ciclo o de iteracin. Adems, necesitamos una variable para almacenar el resultado parcial de cada factorial hasta
llegar al valor de . Esta variable la llamaremos
El clculo anterior se puede expresar utilizando y de la siguiente forma:

Observaciones:
Es evidente que hay una repeticin de cdigo en las instrucciones
+

La cantidad de veces que se repite es

Utilizando un ciclo con precondicin se puede elaborar el algoritmo que da solucin al problema:
Algoritmo: Clculo de factorial
Observaciones:
Descripcin: calcula el factorial de cualquier nmero
Debemos comprobar el algoritmo utilizando una
natural:
tabla de iteraciones y un valor tpico de :
Precondiciones:

<
Poscondiciones: !
Iteracin
5
1
1
V
Entrada:
1
5
2
2
V
Salida:
2
5
3
6
V
Seudocdigo:
3
5
4
24
V
Entrar:
4
5
5
120
F

Note que en cada iteracin se obtiene el factorial

de
Mientras <
+

Fin
Mostrar:

Ciclos con poscondicin.


Como su nombre lo indica, en este ciclo la verificacin de la condicin ocurre despus de la ejecucin de la secuencia de
instrucciones que se desea iterar. En seudocdigo, esta instruccin tiene dos posibles lecturas:
repetir
<secuencia de instrucciones>
hasta <condicin>

hacer
<secuencia de instrucciones>
mientras <condicin>

En diagrama en bloques:

<Instrucciones>

<Instrucciones>
No

Si

<Condicin>

<Condicin>

Si

No

Observaciones:
Persiste el peligro de construir una secuencia de pasos infinita.
Aqu se garantiza que al menos una vez se ejecute el bloque de <instrucciones>
Ejemplo2: Dado un nmero , determinar si es primo o no
Observaciones:
Debemos comprobar el algoritmo
utilizando una tabla de iteraciones y
un valor tpico de :

= > 3.87
Iter 15 1
1
15 2 F
F
2
15 3 V
F

Algoritmo: Determinar primo


Descripcin: Para determinar si un nmero es primo o no
Precondiciones:
Poscondiciones: {, }
Entrada:
Salida:
Seudocdigo:
Entrar:

Repetir
+
Hasta ( > )
si ( > )

sino

fin
Mostrar:

Entrar:

Hacer
+
Mientras ( < )

si ( > )

sino

fin
Mostrar:

Iter
1
2
3
4

17
17
17
17
17

1
2
3
4
5

=
F
F
F
F

> 4.12
F
F
F
V

Ciclos por variable de control.


En este caso no aparece la condicin de forma explcita, sino que se utiliza una variable de control (vc) que determina la
cantidad de veces que se repite la secuencia de instrucciones:
La sintaxis en seudocdigo es:
Para < > < > hasta < >[ con paso < >]
<secuencia de instrucciones>
Fin
En diagrama en bloques sera

< > < >

Si
< > < >

<Instrucciones>

< >< > + < >

+
No
Observaciones:
Para no hacer una secuencia infinita de pasos se debe:
o Garantizarse que el valor final sea mayor que el valor inicial si el incremento es positivo.
o Garantizarse que el valor final sea menor que el valor inicial si el incremento es negativo.
Ejemplo 3: Calcular la suma de los nmeros enteros positivos que se encuentran en un determinado intervalo [, ].
Considere que > .
Algoritmo: Calcular suma
Descripcin: Para determinar la suma de nmeros
Precondiciones: , , >
Poscondiciones:
Entrada: ,
Salida:
Seudocdigo:
Entrar: ,

Para = hasta
+
Fin
Mostrar: -

Observaciones:
Debemos comprobar el algoritmo utilizando una
tabla de iteraciones y un valor tpico de , :

Iter
1
2
3
4
5
3
4
5

3
3
3
3
3
3
3
3
3

10
10
10
10
10
10
10
10
10

3
4
5
6
7
8
9
10

0
3
7
12
18
25
33
42
52

Estudio independiente
1.
2.
3.
4.
5.

Realizar una versin de los algoritmos estudiados con cada tipo ciclo estudiado
Modificar el Ejemplo 3 para no tener en cuenta la precondicin >
Realizar un algoritmo que permita calcular la potencia de cualquier numero , ,
Realizar un algoritmo que sea capaz de obtener el de dos nmeros utilizando el algoritmo de Euclides.
Realizar los algoritmos que calculen las series para un valor dado :

=1

=
=1

1
2 2 1

4
2 1