DiGrande.it

Ciegos, Braille y Tecnologías de Impresión

Este sitio utiliza cookies para personalizar el contenido y los anuncios, proporcionar funciones de redes sociales y analizar enlaces. Al cerrar este banner o continuar navegando, acepta su uso.
Leer la Política de Cookies de DiGrande.it

El ciclo For

El ciclo for es útil para repetir la ejecución de un bloque de código para un número definido de veces. La construcción del ciclo FOR es la siguiente:

- For x = 1 to 10

- ...

- EndFor

"x" es la variable de control usada como contador. Sigue el operador de asignación "=". El número "1" es el valor inicial del ciclo, mientras que "10" es el valor final. La palabra clave "to" separa el valor inicial del valor final.

Por ejemplo:

- For x = 1 to 10

- Circle(x*10, 50, 8)

- EndFor

Este ejemplo crea una línea horizontal de diez círculos que se intersectan entre sí. Como acabamos de ver, la instrucción FOR se utiliza cuando un ciclo debe ser ejecutado un número predeterminado de veces. La variable de control "x" del ciclo se inicializa, controla y modifica por las acciones de la instrucción FOR. Se puede usar en el cuerpo del ciclo, pero nunca debe cambiarse. Los valores de inicio y final del ciclo pueden ser ascendentes o descendentes: será tarea del intérprete aumentar o disminuir la variable de control.

Varios ciclos FOR pueden anidarse juntos. Por ejemplo, el siguiente código imprime un gráfico de círculos que se intersectan a lo largo de la hoja.

- For x = 1 to 10

- For y = 1 to 10

- Circle(x*10, y*10, 8)

- EndFor

- EndFor

El incremento o disminución del ciclo suele ser fijado por el agente usuario en el valor 1. Esto significa que la variable de control se incrementa o disminuye en una unidad por iteración. El paso de incremento o disminución, sin embargo, puede ser definido explícitamente usando la palabra clave "Step". La instrucción "Step" es opcional.

Por ejemplo:

- For x = 1 to 10 step 2

- Circle(x*10, 50, 8)

- EndFor

Hemos cambiado el paso de incremento explícitamente a 2. Concretamente significa que se dibujarán 5 círculos, y ya no 10. La variable de control "x" se incrementará en dos unidades, por lo que el bucle sólo se repetirá cinco veces en lugar de diez. El valor de Step sólo puede ser positivo, ya que el agente usuario lo utilizará como un incremento o un decremento de la variable de control. Incluso si se utilizaba un número negativo, se devolvía a positivo antes de su uso.

Los valores de inicio, final y paso sólo pueden ser numéricos. El tipo numérico incluye todos los números enteros y los de punto flotante. Por lo tanto, en el ciclo FOR también podemos usar números de coma.

Por ejemplo:

- For x = 0 to 3.13 step 0.01

- ...

- EndFor

La iteración de un ciclo FOR puede ser interrumpida usando la instrucción Break. Cuando se encuentra la instrucción Break, la ejecución cambia a la ejecución de la instrucción inmediatamente después del cuerpo del ciclo.

Por ejemplo:

- For x = 1 to 10

- If x > 5

- Break

- EndIf

- Circle(x*10, 50, 8)

- EndFor

El ejemplo es, por supuesto, un sinsentido, porque la instrucción If interrumpe el ciclo cuando la variable de control "x" pasa de 5. Por lo general no se debe utilizar la instrucción Break, ya que tiene herramientas más adecuadas para escribir un ciclo. Sin embargo, si es necesario, puede ser tolerado.

La instrucción "Continue" tiene un efecto similar a "Break" en la ejecución del ciclo. Se interrumpe pero, a diferencia de Break, la ejecución vuelve al principio, se actualiza la variable de control y, si es necesario, se vuelve a ejecutar el cuerpo del ciclo.

Por ejemplo:

- For x = 1 to 10

- If (x >= 4) and (x <= 7)

- Continue

- EndIf

- Circle(x*10, 50, 8)

- EndFor

En el ejemplo, se dibuja una línea horizontal de círculos. Sin embargo, los círculos cuarto, quinto, sexto y séptimo no se dibujan, gracias a la instrucción If que reinicia el ciclo si la variable "x" es igual o mayor que 4 y menor o igual que 7. Además de la instrucción Break, Continue puede ser reemplazada por instrucciones más poderosas que hacen el código más legible.