Вы находитесь на странице: 1из 8

1) FOR Estructura repetitiva

1.1) Defincion: la estructura repetitiva for se utiliza cuando conocemos la cantidad de iteraciones(ciclos) que se
realizan en la operacin que estamos realizando
FOR es una estructura de repeticin empleada en la programacin de algoritmos para repetir un cdigo una o ms
veces dependiendo de un contador.
For permite controlar el flujo de ejecucin de sentencias de programacin permitiendo repetir un cdigo.
En general, los lenguajes de programacin que descienden de ALGOL usan el nombre "for", pero aquellos que
descienden de Fortran emplean el nombre "do" para implementar la misma estructura. En tanto, en lenguaje COBOL
se emplea "PERFORM VARYING".
La estructura For posee un contador explcito, esto permite al cuerpo del For (el cdigo que es ejecutado repetidas
veces) saber en qu repeticin est. Generalmente esta estructura se utiliza cuando se sabe de antemano el
nmero de iteraciones necesarias antes de entrar a las repeticiones. Se puede construir un For empleando un While
con un contador y agregando la condicin de "corte" asociada al contador en el While.
El FOR se emple por primera vez en ALGOL 58, traduccin directa del alemn fr usado en Superplan (19491951) de
Heinz Rutishauser, quien tambin estuvo involucrado en definir ALGOL 58 Y ALGOL 60.

Esquema del flujo de ejecucin en una estructura FOR tpica


Primero se crea la variable contador de tipo entero (ser la variable de control en el for). Luego se ejecuta la
estructura for iniciando la variable contador en 1. Luego se verifica que se cumple la condicin contador<=10 y se
ejecuta el bloque dentro de la estructura, o sea, imprime en pantalla el texto Repeticin nmero 1.

Luego la variable contador es incrementada en uno con la expresin contador++ y el ciclo se inicia otra vez. La
variable contador ahora vale 2, por lo tanto se verifica la condicin y se vuelve a ejecutar el cdigo.

Este proceso se ejecuta hasta que la variable contador toma el nmero 11 y la condicin se hace falsa, no ejecutando
el bloque o cuerpo del for.
2) Quebrando la estructura FOR
La mayora de los lenguajes de programacin tienen algn comando o funcin que rompe la repeticin de la
estructura For, independiente de si deba continuar iterando. Usualmente se emplean las funciones de nombres exit
o break.

Los puristas en programacin aseguran que estas funciones de ruptura de una estructura de repeticin no deberan
incluirse en el cuerpo de For o While, porque oscurecen el cdigo de programacin y a veces le quitan sentido a la
mismsima repeticin.

3) Elementos del bucle

a) 'Variable de control': prcticamente un mandato impuesto por el uso habitual es utilizar la letra i
Iterador como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra
crptica quizs a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al
cdigo por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por
una sencilla cuestin de explosin exponencial), las letras i, j y k suelen ser las nicas relacionadas con
este uso. En C se define en el primer parmetro de la instruccin junto con la inicializacin (opcional).
b) Inicializacin de la variable de control: en pseudolenguaje se pide explicitarlo (es la seccin:=
ValorInicial), sin embargo, otros lenguajes ms permisivos como C no lo requieren de forma obligatoria. De
todos modos, la prctica de utilizar variables de control que no se inicializan en el bucle no es
recomendada para la legibilidad del cdigo. En C se define en el primer parmetro del bucle junto con la
variable de control.
c) Condicin de control: en pseudolenguaje se ve representado por el valor final que puede tomar la
variable de control (la seccin A ValorFinal). En C es el segundo parmetro y puede ser cualquier condicin
(ni siquiera es obligacin que est la variable de control, aunque una vez ms, esto no se considera una
buena prctica).
d) Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de
la sentencia PASO = ValorPaso cualquier nmero entero (lase bien entero, o sea que tcnicamente
podemos decrementar). En C es el ltimo parmetro.
e) Cuerpo: es lo que se har en cada iteracin, pueden ser una o ms instrucciones. En pseudolenguaje
pesa la restriccin de no poder alterar el valor de la variable de control; esto no es requerido en C, pero
no se considera una buena prctica.
f) Usos
Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se
encuentren segn el ndice. Por esto ltimo, una condicin mnima del vector es que debe ser ordenado, por que si
se intenta leer un dato inexistente, esto genera un error de programacin.

g) For en Pseudolenguaje
La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede
determinarse al comienzo del bucle cuntas veces se iterar el mismo, lo cual muchas veces puede redundar en una
optimizacin del cdigo por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares
de la programacin estructurada, y su uso es una evolucin de una sentencia de lenguaje ensamblador que
ejecutaba la siguiente lnea o no en funcin del valor de una condicin.
El bucle PARA se ha convertido en el bucle ms ampliamente utilizado en la programacin, ya que con la evolucin
de los lenguajes la mayora de las condiciones de fin

MIENTRAS NoFinDeTabla(tabla) HACER


PrximoRegistro(tabla)
HacerAlgo(ElementoActual(tabla))
FIN MIENTRAS
Es lo mismo decir:

PARA i=0 a CantidadRegistros(tabla) - 1, PASO = 1


PrximoRegistro(tabla)
HacerAlgo(ElementoActual(tabla))
FIN PARA
Otro uso comn es utilizar los bucles PARA para recorrer vectores de dos o ms dimensiones, en cuyo caso se
anidan estas iteraciones.
h) PSEUDOLENGUAJE
Vector a[3][4][2]. // Estamos indicando un vector de 3 dimensiones y 24 elementos en total.
PARA i:= 0 A 2 HACER
PARA j:= 0 A 3 HACER
PARA k:= 0 A 1 HACER
HacerAlgo(a[i][j][k])
FIN PARA
FIN PARA
FIN PARA

i) Ejemplo de PARA en pseudocdigo


PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento
Cuerpo
FIN PARA
donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instruccin(es) del cuerpo se ejecutar(n)
(ValorFinal - ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

j) Ejemplo en C++
#include <iostream> vector[i] = i;
#include <conio.h> cout<< i<<endl;
using namespace std; }
int main() { system ("PAUSE");
int vector[10], i; return 0;
for(i=0; i<10; i++){ }
En la definicin del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condicin
de control que debe ser falsa durante su ejecucin, para completar el ciclo; y por ltimo, tenemos el incrementador
en una unidad.

Si por ejemplo en la condicin colocamos i < 11, entonces el ciclo for se ejecutar desde [0...10], lo cual, al intentar
acceder al elemento vector[10], esto generar error, ya que el vector (por definicin) va desde [0..(n-1)].

Cualquiera de los componentes en el parntesis se puede omitir, pero los separadores punto y coma deben
aparecer siempre. El resultado es un bucle infinito.

k) Ejemplo anterior escrito en Lxico


tarea
{
los objetos vector[10], i son cantidades
variando i desde 0 hasta 9 haga
copie i en vector[i]
}
l) Bucle Por Cada (For Each)
Este bucle es una evolucin del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras
repetitivas de datos de forma ms simple y gil. El bucle For Each puede describirse genricamente (en
pseudolenguaje) de la siguiente manera:

POR CADA elemento DE tipo EN conjunto HACER


Cuerpo
FIN FOR EACH
10.1) Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle.
10.2) Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar.
10.3) Conjunto: es la estructura de datos que se quiere iterar. El uso ms tpico es con vectores o -en
programacin orientada a objetos- clases del tipo Coleccin.
10.4) Cuerpo: es lo que se har en cada iteracin, pueden ser una o ms instrucciones. Si bien no se impone una
obligacin al respecto, lo ms comn es que en este Cuerpo exista alguna operacin sobre el elemento iterado.
11) Necesidad de una nueva estructura de control
Esta estructura surge como una innovacin en los lenguajes para permitir un cdigo ms gil y legible en una
situacin que es una de las principales causas del uso del bucle PARA: aplicar la misma operacin sobre todos los
elementos de un vector, y no necesitar conocer la posicin del elemento en el vector. Esta estructura con el bucle
PARA se resuelve de la siguiente manera:

Con el bucle POR CADA esto se reduce a:

POR CADA x DE tipo EN Vector HACER


x = AlgunaOperacin(x)
FIN PARA
Las ventajas de utilizar la estructura POR CADA son las siguientes:

1) No es necesario llamar a una funcin que obtenga el tamao del vector


2) No es necesario utilizar la incmoda notacin de sub-ndices para referirnos al valor en cuestin, sobre
todo teniendo en cuenta que si utilizamos esta estructura es porque no necesitamos el valor del ndice.
3) Nos permite hacer un chequeo en tiempo de compilacin sobre el tipo de dato que representa el elemento.
El bucle POR CADA o no es un sustituto del PARA, es una mejora para el muy frecuente caso anteriormente
mencionado. La diferencia esencial entre el bucle PARA y el POR CADA es que en el primero gua su iteracin por
una variable que se incrementa hasta cierto punto de corte; en cambio en el segundo lo que gua la iteracin es el
recorrido de todos los elementos de un vector. Ciertamente podemos transformar cualquier POR CADA en un
PARA, pero transformar un bucle PARA en un bucle POR CADA requerira inicializar y controlar manualmente las
variables de control, con lo cual se perdera nuevamente legibilidad en el cdigo. Por tanto, cuando en un lenguaje se
nos da la posibilidad de utilizar ambas estructuras, la eleccin del POR CADA debe hacerse en aquellos casos para
los que fue pensado: aplicar la misma operacin a todos los elementos de un vector sin importar el orden en que se
hagan; si bien no es necesario que la variable elemento sea utilizada en el cuerpo del bucle, su ausencia denota con
seguridad una mala eleccin de estructura de control.
ndice
1) FOR Estructura repetitiva
1.1) Definicion:
2) Quebrando la estructura FOR
3) Elementos del bucle
a) 'Variable de control':
b) Inicializacin de la variable de control:
c) Condicin de control:
d) Incremento:
e) Cuerpo:
4) Usos
5) For en Pseudolenguaje
6) PSEUDOLENGUAJE
7) Ejemplo de PARA en pseudocdigo
8) Ejemplo en C++
9) Ejemplo anterior escrito en Lxico
10) Bucle Por Cada (For Each)
10.1) Elemento:
10.2) Tipo de Dato
10.3) Conjunto
10.4) Cuerpo:
11) Necesidad de una nueva estructura de control