Bucle for

Bucle for

Bucle for

El bucle for o ciclo for es una estructura de control en la que se puede indicar el número máximo de iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.

Contenido

Elementos del bucle


   {\color{Sepia}      \mathit{ para }} \;
   {\color{OliveGreen} \mathit{ i }} \;
   {\color{BlueViolet} \mathit{ \gets }} \;
   {\color{OliveGreen} \mathit{ x }} \;
   {\color{Sepia}      \mathit{ hasta }} \;
   {\color{OliveGreen} \mathit{ n}} \;
   {\color{Sepia}      \mathit{ a \; incrementos \; de }} \;
   {\color{OliveGreen} \mathit{ s }} \;
   {\color{Sepia}      \mathit{ hacer }}

   {\color{BlueViolet} \mathit{ instrucciones }}

   {\color{Sepia}      \mathit{ fin \; para }}


  • Variable de control: prácticamente un mandato impuesto por el uso habitual es utilizar la letra i como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra críptica quizás a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al código por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por una sencilla cuestión de explosión exponencial), las letras i, j y k suelen ser las únicas relacionadas con este uso. En C se define en el primer parámetro de la instrucción junto con la inicialización (opcional).
  • Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial), sin embargo, otros lenguajes más permisivos como C no lo requieren de forma obligatoria. De todos modos, la práctica de utilizar variables de control que no se inicializan en el bucle no es recomendada para la legibilidad del código. En C se define en el primer parámetro del bucle junto con la variable de control.
  • Condición de control: en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal). En C es el segundo parámetro y puede ser cualquier condición (ni siquiera es obligación que esté la variable de control, aunque una vez más, esto no se considera una buena práctica).
  • Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero (léase bien entero, o sea que técnicamente podemos decrementar). En C es el último parámetro.
  • Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. En pseudolenguaje pesa la restricción de no poder alterar el valor de la variable de control; esto no es requerido en C, pero no se considera una buena práctica.

Usos

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.

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 cuántas veces se iterará el mismo, lo cual muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programación estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

El bucle PARA se ha convertido en el bucle más ampliamente utilizado en la programación, ya que con la evolución de los lenguajes la mayoría de las condiciones de fin (casi siempre la longitud de un vector) puede determinarse con una función. Un ejemplo claro es el reemplazo del código de recorrido de una tabla:

PSEUDOLENGUAJE

MIENTRAS NoFinDeTabla(tabla) HACER
 PróximoRegistro(tabla)
 HacerAlgo(ElementoActual(tabla))
FIN MIENTRAS

Es lo mismo decir:

PARA i := 0 a CantidadRegistros(tabla) - 1, PASO = 1
 PróximoRegistro(tabla)
 HacerAlgo(ElementoActual(tabla))
FIN PARA

Otro uso común es utilizar los bucles PARA para recorrer vectores de dos o más 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 pseudolenguaje

PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento 
  Cuerpo
 FIN PARA

donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instrucción(es) del cuerpo se ejecutará(n) (ValorFinal - ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

Ejemplo en C

# include <stdio.h>
int main()
{
  int vector[10], i;
  for(i = 0; i < 10; i++)
  {
   vector[i] = i;
  }
}

En la definición del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condición de control que debe ser falsa durante su ejecución, para completar el ciclo; y por último, tenemos el incrementador en una unidad.

Si por ejemplo en la condición 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 definición) 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 evolución del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras repetitivas de datos de forma más simple y ágil. El bucle For Each puede describirse genéricamente (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 más típico es con vectores o -en programación orientada a objetos- clases del tipo Colección.
  • Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. Si bien no se impone una obligación al respecto, lo más común es que en este Cuerpo exista alguna operación sobre el elemento iterado.

Necesidad de una nueva estructura de control

Esta estructura surge como una innovación en los lenguajes para permitir un código más ágil y legible en una situación que es una de las principales causas del uso del bucle PARA: aplicar la misma operación sobre todos los elementos de un vector, y no necesitar conocer la posición del elemento en el vector. Esta estructura con el bucle PARA se resuelve de la siguiente manera:

PARA i := 1 A Vector.tamaño() HACER
 Vector[i] = AlgunaOperación(Vector[i])
FIN PARA

Donde i es la variable de control y Vector una estructura de datos.

Con el bucle POR CADA esto se reduce a:

POR CADA x DE tipo EN Vector HACER
 x = AlgunaOperación(x)
FIN PARA

Las ventajas de utilizar la estructura POR CADA son las siguientes:

  1. No es necesario llamar a una función que obtenga el tamaño del vector
  2. No es necesario utilizar la incómoda notación de subíndices para referirnos al valor en cuestión, 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 compilación sobre el tipo de dato que representa el elemento.


El bucle POR CADA 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 guía su iteración por una variable que se incrementa hasta cierto punto de corte; en cambio en el segundo lo que guía la iteración 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 requeriría inicializar y controlar manualmente las variables de control, con lo cual se perdería nuevamente legibilidad en el código. Por tanto, cuando en un lenguaje se nos da la posibilidad de utilizar ambas estructuras, la elección del POR CADA debe hacerse en aquellos casos para los que fue pensado: aplicar la misma operación 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 elección de estructura de control.

Véase también

Obtenido de "Bucle for"

Wikimedia foundation. 2010.

Игры ⚽ Поможем сделать НИР

Mira otros diccionarios:

  • Bucle for — (o en latinoamérica ciclo for), se denomina a aquel ciclo que se puede indicar la cantidad de veces de ejecución máxima …   Enciclopedia Universal

  • Bucle infinito — en programación es aquel ciclo que se repite de forma indefinida ya que su condición para finalizar nunca se cumple. Por definición un bucle debe contener condiciones que establezcan cuándo empieza y cuándo acaba, de manera que, mientras las… …   Wikipedia Español

  • Bucle repetir — Saltar a navegación, búsqueda El bucle repetir comprueba la condición de finalización al final del cuerpo del bucle, y si ésta es cierta continua con el resto del programa, a veces esto resulta más adecuado. Contenido 1 Sintaxis 2 En lenguajes de …   Wikipedia Español

  • Bucle (programación) — Un bucle o ciclo, en programación, es una sentencia que se realiza repetidas veces a un trozo aislado de código, hasta que la condición asignada a dicho bucle deje de cumplirse. Generalmente,un bucle es utilizado para hacer una acción repetida… …   Wikipedia Español

  • Control del bucle while do — Saltar a navegación, búsqueda Controla el bucle while o bucle mientras es una estructura de la mayoría de los lenguajes de programación estructurados cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera.… …   Wikipedia Español

  • GOTO — o GO TO (ir a en inglés) es una instrucción muy común en los lenguajes de programación con el objetivo de controlar el flujo del programa. El efecto de su versión más simple es transferir sin condiciones la ejecución del programa a la etiqueta o… …   Wikipedia Español

  • Estructuras de control — En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If …   Wikipedia Español

  • Python — Este artículo trata sobre el lenguaje de programación. Para el grupo de humoristas, véase Monty Python. Para otros usos de este término, véase Pitón. Python Desarrol …   Wikipedia Español

  • Pseudocódigo — Este artículo o sección necesita referencias que aparezcan en una publicación acreditada, como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas. Puedes añadirlas así o avisar al a …   Wikipedia Español

  • Resolución de problemas de programación — Saltar a navegación, búsqueda La resolución de un problema mediante un ordenador consiste en el proceso que a partir de la descripción de un problema, expresado habitualmente en lenguaje natural y en términos propios del dominio del problema,… …   Wikipedia Español

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”