You are on page 1of 14

De estructuras Iterativas y Recursividad

Lewis Yuburi Alexis Gurrola

Las estructuras iterativas, bucles o ciclos son un conjunto de instrucciones del programa que se ejecutan repetidamente un nmero determinado de veces, o bien mientras se cumpla una determinada condicin.
Todo bucle contiene:

Iniciacin de las variables referentes al bucle. Decisin (seguimos con el bucle o terminamos.) Cuerpo del bucle.

El bucle es una evolucin del cdigo ensamblador, donde la nica posibilidad de iterar (repetir) un cdigo era establecer una sentencia jump (que en los lenguajes de programacin fue sustituida por el "ir a" o GOTO).
La utilizacin de ciclos en un programa es esencial y el uso de ellos es realmente importante, ya que nos permite el ahorro de cdigo y hacer bloques de instrucciones mucho mas cortos y funcionales. Los bucles ms utilizados en programacin son el bucle while, el do-while, y el for.

Estructuras While y do-while


Estos bucles iteran indefinidamente mientras se cumpla una condicin. La diferencia entre ellas es que la primera comprueba dicha condicin antes de realizar cada iteracin y la segunda lo hace despus. Estructura while
While (condicin) { accin; }

Estructura do-while
do { accin; } while (condicin)

Estructura for
En la accin for, el contador y la sentencia que incrementa el contador son parte de la accin, y tiene la siguiente estructura:

Estructura for
for (inicio; condicin; incremento) { accin; }

Bucles anidados
Los bucles internos y externos no necesitan ser generados por el mismo tipo de estructura de control. Sin embargo, es esencial que: Un bucle se encuentre completamente incluido dentro del otro, adems, cada bucle ha de ser controlado por un ndice diferente. Bucle anidado usando for
for (inicio; condicin; incremento) { for (inicio; condicin; incremento) { accin; } }

Bucles anidados
En los bucles anidados, el bucle ms exterior es el que tienen el control, es decir, cuando deje de cumplirse la condicin del bucle exterior, no se ejecutar ms veces; si por el contrario, entramos dentro del bucle interior, en cada vuelta del exterior, se producirn sucesivas vueltas del bucle interior, hasta que nos salgamos de ste, cuando se produzca esto, el exterior podr dar su segunda vuelta (si se cumple su condicin).

Sentencias que rompen ciclos


Sentencia break: Se utiliza para salir de un bucle cuando se da alguna condicin especial. Cuando se ejecuta esta sentencia, el control del programa pasa inmediatamente a la instruccin siguiente al bucle. Sentencia continue: Fuerza a que comience una nueva vuelta dentro de la estructura correspondiente. Dentro de los ciclos while, y do-while, se evala la condicin de salida; en el for, se efecta un salto a la expresin de incremento.

Sentencias que rompen ciclos


Sentencia exit: Esta funcin devuelve el control al sistema operativo o a cualquier otro proceso anterior. La funcin permite devolver un valor indicando si es una terminacin errnea o correcta. Esta funcin, incluida en <stdlib.h>.

Sentencia goto: La sentencia goto se utiliza para alterar la secuencia de ejecucin normal del programa, transfirindose el control a otra parte de l.

Ejemplos While y do-while en Gambas


Cabe destacar que en Gambas el equivalente a while es while-wend y a do-while es repeat-until.
Estructura while-wend
PUBLIC SUB Form_Open() DIM a AS Integer a = 1 WHILE a <= 10 PRINT "Hola Mundo "; a INC a WEND END

Estructura repeat-until
PUBLIC SUB Form_Open() DIM I AS Integer REPEAT PRINT Timer UNTIL Timer > 10 END

Ejemplos for en Gambas


El equivalente en Gambas para la estructura for es fornext. Estructura for-next
DIM I AS Integer FOR I = 1 TO 20 STEP 1 PRINT I & " "; NEXT

Se habla de recurrente o recursivo cuando un proceso es realizado un numero de veces indefinido, es decir la cantidad de veces que se repite el mismo proceso es desconocido, o puede ser infinito.
La recursividad es una alternativa diferente para implementar estructuras de repeticin (ciclos). Los mdulos se hacen llamadas recursivas (se implementa el mtodo dentro de si mismo).

Entonces, se dice que una funcin es recursiva cuando se define en funcin de si misma. Considerando que: No todas la funciones pueden llamarse a si mismas, sino que deben estar diseadas especialmente para que sean recursivas, de otro modo podran conducir a bucles infinitos, o a que el programa termine inadecuadamente. No todos los lenguajes de programacin permiten usar recursividad. La recursividad consume muchos recursos de memoria y tiempo de ejecucin, y se debe aplicar a funciones que realmente le saquen partido.

Ejemplo
Podramos crear una funcin recursiva para calcular el factorial de un nmero entero.
funcin factorial ( n ) { si (n = 0) { retornar 1; } si no { retorna n * factorial(n-1); } }