Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas. Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando: {{subst:Aviso referencias|Bucle for}} ~~~~ El bucle for o ciclo for es una estructura de control en la que la pc nos muestra el como programar si es que nosotros queremos porgramar un robot B-bot , en este se puede indicar el modo en la que se puede indicar el nmero minimo de iteraciones. Est disponible en casi todos los lenguajes de programacin imperativos. ndice 1 Elementos del bucle 2 Usos 3 For en pseudolenguaje 4 Ejemplo de PARA en pseudocdigo 5 Ejemplo en C++ 6 Ejemplo anterior escrito en Lexico 7 Bucle Por Cada (For Each) o 7.1 Necesidad de una nueva estructura de control 8 Vase tambin 9 Referencias Elementos del bucle
'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). 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. 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). 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. 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. 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. 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(tabl 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. 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 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. Ejemplo en C++ 1. include<stdio.h> 2. include<conio.h> int main() { int vector[10], i; for(i = 0; i < 10; i++) { vector[i] = i; printf("%d ",i); } getch (); return 0; }
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)]. Ejemplo anterior escrito en Lexico tarea { los objetos vector[10], i son cantidades variando i desde 0 hasta 9 haga copie i en vector[i] } 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 Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle. Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar. 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. 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. 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 subndices 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 CADAo 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. Vase tambin Bucle (programacin) Saltar a: navegacin, bsqueda
Este artculo o seccin necesita referencias que aparezcan en una publicacin acreditada, como revistas especializadas, monografas, prensa diaria o pginas de Internet fidedignas. Puedes aadirlas as o avisar al autor principal del artculo en su pgina de discusin pegando: {{subst:Aviso referencias|Bucle (programacin)}} ~~~~
Este artculo o seccin sobre informtica necesita ser wikificado con un formato acorde a las convenciones de estilo. Por favor, edtalo para que las cumpla. Mientras tanto, no elimines este aviso puesto el 17 de enero de 2013. Tambin puedes ayudar wikificando otros artculos. Un bucle o ciclo, en programacin, es una sentencia que se realiza repetidas veces a un trozo aislado de cdigo, hasta que la condicin asignada a dicho bucle deje de cumplirse. Generalmente,un bucle es utilizado para hacer una accin repetida sin tener que escribir varias veces el mismo cdigo, lo que ahorra tiempo, deja el cdigo ms claro y facilita su modificacin en el futuro. El bucle y los condicionales representan la base de la programacin estructurada. Es una evolucin del cdigo ensamblador, donde la nica posibilidad de iterar un cdigo era establecer una sentencia jump (que en los lenguajes de programacin fue sustituida por el "ir a" o GOTO). Los tres bucles ms utilizados en programacin son el bucle while, el bucle for y el bucle repetir. Ejemplo en cdigo C de sentencias repetidas int var=0;
//cdigo que puede ser sustituido por un bucle var = var + 2; //var igual a 2 (puede ser sustituido por var+=2) var = var + 2; //var igual a 4 var = var + 2; //var igual a 6 var = var + 2; //var igual a 8 var = var + 2; //var igual a 10 // fin de cdigo que puede ser sustituido por un bucle
printf("el resultado es %i", var ); Ejemplo con un bucle: int var=0;
//Cdigo para el bucle int i;
// este es el Bucle for for(i=0;i<10;i+=2) { var += 2; }
printf("el resultado es %i", var); Algunos lenguajes de programacin tienen sentencias que permiten "escapar" de los bucles sin llegar a la condicin de fin, como el romper o el devolver. Ejemplo escapando de un bucle en Visual Basic 1: Dim h&, var& var = 0
'Codigo del Bucle do var = var + 2
if var = 10 then 'Codigo para salir del bucle goto escape end if loop
escape: print "El resultado es " & var Ejemplo escapando de un bucle en Visual Basic 2: Dim h&, var& var = 0
'Codigo del Bucle do var = var + 2
if var = 10 then 'Codigo para salir del bucle exit do end if loop
print "El resultado es " & var Ejemplo escapando de un bucle en Delphi: var iConta: Byte;
for iConta := 1 to 15 do if iConta = 10 then //Se sale al llegar el contador a 10