Iterar con un contador

En esta página, realizarás iteraciones para repetir y contar las repeticiones con el objetivo de usar un contador para dibujar formas con patrones repetidos.
espiral cuadrados anidados

Ya conoces las siguientes formas de repetir un grupo de comandos:

El bloque por siempre genera un ciclo infinito que funciona por siempre. Un ciclo infinito puede ser a veces el resultado de un error, aunque en algunos programas interactivos se desea que el programa se mantenga ejecutándose hasta que es detenido por el usuario.

: Iteración
AAP-2.J.1

Los científicos de la computación definen una estructura de programa repetitivo como un ciclo, repetición, o iteración (iteration).

AAP-2.K.1

El código puede repetirse por siempre, un número específico de veces (al usar repetir) o bien hasta que una condición específica se cumpla (por ejemplo al usar repetir hasta que, como se presentará en el Laboratorio 5).
repetir (4) (mover (100), girar (90)) repetir hasta que (tocando (líder)?)
{
    apunta hacia (líder)
    mover (1) pasos
}

Algunas veces el código dentro de un ciclo necesita saber en qué iteración se encuentra (primera, segunda, etc.). Se puede usar el bloque para(i)=(1) hasta (10){} para llevar el control, y se puede usar su contador en el código a repetir (está representado por defecto por la letra "i" i). Por ejemplo, el bloque para brinda la oportunidad de simplificar un código largo como el siguiente:
decir (1) por (2) segs, decir (2) por (2) segs, decir (3) por (2) segs... decir (10) por (2) segs       en para (i)= (1) hasta (10) {decir (i) por (2) segs}

Cada vez que el bloque para ejecuta el código en su interior, incrementa el valor del contador en 1, empezando con el primer valor y terminando en el último valor que aparece (en el ejemplo el 10).

El bloque para define con i (letra i significa "índice") el nombre de contador de forma predeterminada. Puedes cambiar el nombre haciendo clic sobre él. Para usar el contador, arrástralo a la ubicación requerida.
  1. Construye el siguiente código que hace que el objeto diga los números del 1 al 10.
    para (i) = (1) hasta (10) {decir (i) por (2) segs}
    1. Luego modifica el código para que el objeto diga 0, 2, 4, 6, 8... hasta 30.
    2. Discute tu solución con tu compañero.
  2. Experimenta con espirales.
    1. Construye el siguiente código y pruébalo:
      Este diseño recibe el nombre "cuadriral" porque es un cuadrado espiral.
      bajar lápiz; para(longitud)=(1) hasta (100){mover(2Xlongitud) pasos; girar (90)}
    2. Habla con tu compañero Asegúrate de poder explicar la razón por la que el "cuadriral" se dibuja hacia afuera.
    3. Intenta cambiar el orden de 100 y de 1 en el bloque para en el código anterior. ¿Cuál es el resultado?
    4. Intenta cambiar el ángulo de vuelta en el código a otros valores, por ejemplo a 92, 126, etc.
    5. Cambia los valores dentro de girar y mover para obtener un resultado más parecido a un espiral normal similar a:
      espiral
  3. "U1L3-Cuadriral"Guarda tu trabajo con el nombre U1L3-Cuadriral
  4. Abre el proyecto U1L3-Molinete. Construye un bloque cuadrados anidados que haga uso de los bloques para y polígono para dibujar cuadrados anidados. Proporciona un valor de entrada que dibuje número de cuadrados a especificar, con cada cuadrado más grande que el anterior:
    cuadrados anidados
  1. Construye el bloque polígonos anidados que reciba el campo de entrada número de polígonos y número de lados para los polígonos a dibujar.
  2. Construye un programa que dibuje 12 polígonos regulares, cada uno con un lado más que el polígono anterior, como se ve en el ejemplo a continuación.
    polígonos: triángulo que atraviesa un decágono
  3. Predice el comportamiento del código que se presenta a continuación antes de ejecutarlo:
    para (dieces) = (0) hasta (9){ para (unos) = (0) hasta (9){ decir (unir (dieces) (unos)) por (0.3) segs}}
  4. Construye un programa que cuente descendientemente números del 100 al 0, de 10 en 10 (esto es: 100, 90, 80, etc.).
  5. Abajo se encuentran dos animaciones que hacen uso del código molinete con campos de entrada. Encuentra la forma de crear tus propias animaciones artísticas.
    Animación de un conjunto de molinetes Animación de una corona de molinetes

    El código que se presenta a continuación puede darte la idea de cómo crear animaciones. El bloque unificar permite dibujar el molinete de inmediato.

    repetir y repetir{para(i)=(0) hasta (50){borrar;unificar{molinete, ramas:(12) tamaño:(50) respaldo:(i)}}}
  6. cuadro al estilo de mini Albers Asegúrate de guardar tu otro trabajo, luego Haz clic para cargar un proyecto nuevo. Entonces guárdalo.
    Experimenta con la secuencia. ¿Podrías cambiar los tamaños o los colores para hacerlo más interesante?

Cuadrados anidados al estilo de mini Albers       Cuadrados anidados al estilo de mini Albers       Cuadrados anidados al estilo de mini Albers       Cuadrados anidados al estilo de mini Albers
  1. Encuentra la forma de usar el bloque para con el objetivo de enlazar cuadrados de la forma que se presenta en las imágenes. Construye un bloque con dos campos de entrada que permitan especificar la cantidad de cuadrados que contendrá la pintura y qué tan grande será el cuadrado actual en relación al anterior.
    Actividades desafiantes Cuadrados concéntricos
Pintura de Josef Albers

A la derecha se muestra una pintura de Josef Albers. A este pintor le interesaba experimentar con una variación de colores dentro de una "familia" de colores similares. Snap! permite hacer experimentos similares.

  1. ¿Cuál es el color favorito del autor para esta actividad?
  2. En el caso que no hayas comletado la actividad basada en el trabajo de Kazimir Malevich pintura de Malevich entonces debes leerla ahora para aprender las funcionalidades de Snap! para rectángulos sólidos y familia de colores.
  3. Si todavía no has completado la actividad Si hay tiempo núm. 10, debes hacerla para conocer cómo una versión simple de la idea de este proyecto.
  4. Muy bien, ahora entremos en detalles.
    Aleatoriedad: Los cuatro ejemplos que se presentan arriba son diferentes a la pintura de Albers en el sentido que incluyen colores ocasionales que no son de la misma familia. Esto puede hacer las pinturas más interesantes para alguien que no comparta el interés de Albers en diferencias nínimas de color. Demasiada aleatoriedad puede, en cambio, hacer la pintura menos interesante. Compara los ejemplos que se presentan arriba; a la izquierda uno de ellos está basado claramente en la familia naranja. Otro de ellos tiene colores en violeta, verde, naranja, un poco de caos en el que se presenta en cuarta posición. Revisa de nuevo el proyecto "Conversando" en el caso que no recuerdes la forma de elegir algo en especial una de cada seis veces, o una de cada catorce veces. Otras opciones aleatorias que se pueden tomar son el número de cuadrados, la cantidad que se reducirá el tamaño del mismo en comparación con el siguiente, la posición horizontal y vertical de uno de los cuadrados en relación al siguiente (la figura es más interesante en las que la posición es diferente, con el resultado que el cuardado más pequeño no se encuentra necesariamente en el centro).
  5. Ícono de actividades desafiantes Ícono de actividades desafiantes Ícono de actividades desafiantes Este bloque es un cuadriral, pero en lugar de cambiar el valor de mover, cambia el valor de girar:
    inspirar, repetir:(num) tamaño:(tamaño) ángulo:(angle) : para (i) = (1) hasta (num) {mover (tamaño) pasos; girar ((i) * (ángulo)) grados}
    1. Intenta dibujar el resultado posible con un ángulo de 2.
    2. A continuación construye el programa y prueba los siguientes valores:
      Es posible detener cada una de las pruebas con el botón "detener". botón detener Es útil si estás seguro que no pasará nada nuevo, ¡pero no lo decidas tan rápido!
      inspirar, repetir (1000,10,80), (1000,5,1), (1000,5,7), (1000,5,13), (1000,10,77)
    3. ¿Qué ha pasado? ¿Puedes formular una teoría para predecir la forma que se dibuja para un ángulo en particular?
      Pista: Piensa en la divisibilidad.