Capítulo 5: Ciclos For


Una de las cosas en las que las computadoras son especialmente buenas es la repetición. ¿Cómo podemos convencer a Karel para que ejecute un bloque de código varias veces? Para ver cómo se puede usar la repetición, considere la tarea de colocar 42 conos :

Antes de:
Después:

Basic For Loop

Como sabe que hay exactamente 42 conos para colocar, la declaración de control que necesita es una ciclo for , que especifica que desea repetir alguna operación un número fijo de veces. La estructura de la for La declaración parece complicada principalmente porque en realidad es mucho más poderosa de lo que Karel necesita. La única versión del for la sintaxis que utiliza Karel es:

for i in range( contar ):
declaraciones a repetir

Repasaremos todos los detalles del for ciclo más tarde en la clase. Por ahora, debería leer esta línea como una forma de expresar "repita las declaraciones en el cuerpo de la funcióncontarveces. "Podemos utilizar este nuevo ciclo for para colocar 42 conos reemplazandocontarcon 42 y poniendo el mando poner_cono() dentro del for ciclo bloque de código. Llamamos comandos en el bloque de código al cuerpo :

El código anterior es editable . Intente cambiarlo para que coloque solo 15 conos .

Coincidencia de postcondiciones con condiciones previas

El ejemplo anterior da la impresión de que un for ciclo repite una sola línea de código. Sin embargo, el cuerpo del for ciclo (las declaraciones que se repiten) pueden tener varias líneas. Aquí hay un ejemplo de un programa que pone un cono en cada rincón de un mundo:

Preste mucha atención a la forma en que el programa fluye a través de estas declaraciones de control. El programa run s mediante el conjunto de comandos en el for ciclo cuerpo de uno en uno. Repite el cuerpo cuatro veces.

Quizás la parte más complicada de escribir un ciclo es que necesitas el estado del mundo al final del ciclo (el postcondición ) para ser un estado válido del mundo para el inicio del ciclo (el condición previa ). En el ejemplo anterior, las suposiciones coinciden. Buenos tiempos. Al comienzo de ciclo , Karel siempre está en un cuadrado sin conos frente a la siguiente esquina vacía. ¿Qué pasa si eliminas el girar_izquierda() al final del ciclo ? La Karel al final de la primera iteración ya no satisfaría las suposiciones hechas sobre Karel frente a la siguiente esquina vacía. El código es editable. Intente eliminar el girar_izquierda() Manda a ver qué pasa!

Bucles anidados

Técnicamente, el cuerpo de un for ciclo puede contener cualquier código de flujo de control, incluso otros ciclo s. A continuación se muestra un ejemplo de for ciclo que repite una llamada a una función que también tiene un for ciclo . A esto lo llamamos ciclo "anidado". Intente leer el programa y comprender lo que hace antes de ejecutando :


Siguiente capítulo