Modifica tu molinillo

Teacher feedback from 2017-2018: one teacher: "Pg 4. Some students really needed to be prodded to get to see how it becomes an asterisk or polygon. Maybe a hint button might help." --MF, 3/6/19

AC: They’ve experimented with the “second move” on the previous page. What’s new here is making the experiment programmatic by adding inputs. With a little surround, we could move directly to # 5. And is there a new idea in # 5?

AC: # 8 is repeated on the next page. Delete it here or there.

PG: Simplify. Al is right. The orange box feels like way too much, and too early.

En esta página vas a modificar el código existente de pinwheel con el objetivo de usarlo para dibujar una gran variedad de formas.
assortment of pinwheels

Agregando múltiples entradas

Recuerda la forma en la que generalizaste el programa original de molinillo: agregaste un campo de entrada llamado número de ramas, él cuál controlaba el ángulo de rotación del cursor. Si agregamos más campos de entrada, es posible generalizar otros aspectos del programa.

  1. Si aún no has abierto el proyecto U1L3-Pinwheel, ahora es el momento.
  2. AAP-3.A part b
    Experimenta con un campo de entrada para el segundo bloque move que se encuentra en el código de pinwheel. A continuación se muestra una toma de pantalla del lugar específico.
    1. Habla con tu pareja Inicialmente hagamos una predicción. ¿Qué crees que pasará al hacer cambios en dicho valor?
    2. pinwheel block definition with comment asking students to experiment with the input for the second move block
    3. Luego prueba con varios valores entre -100 y 0.
    4. Habla con tu pareja ¿Qué ha pasado? ¿Cómo se compara el resultado con tu predicción? ¿Cuál es el impacto en el cambio del valor en el comportamiento del cursor? ¿Cuál es el impacto en la imagen que se presenta en el escenario?
      Animation cycle from Asterisk to Polygon
  3. En el caso de ser necesario, revisa el procedimiento para agregar un campo de entrada en Unidad 1 Lab 3 Página 3: Bloques con campo de entrada.
    Agrega un segundo campo de entrada para controlar la cantidad de "espera" que el cursor realiza antes de cada giro para llegar a la vuelta completa a 360°.
    1. Edita el bloque pinwheel, haz clic en el signo "+" que se encuentra al final y agrega un parámetro (elige la etiqueta "Texto"). Escribe backup: como se muestra más abajo y haz clic en "Aceptar".
    2. Redo image with plain prototype labels. --MF, 5/14/19
      typing 'backup:' as Title text into Block Editor's Create input name window
    3. Luego haz clic en el signo "+" hacia el final y agrega un parámetro (elige "Parámetro"), y ponle nombre backup.
    4. Arrastra el nuevo parámetro backup, luego colócalo en el lugar que le corresponde en el código de pinwheel. Luego presiona en "Aceptar" o "Aplicar."
    5. Revisa que el cambio efectuado con el campo de entrada backup funcione correctamente al ejecutar el bloque pinwheel. Revisa que se obtenga el resultado experado. Depura cualquier problema de ser necesario.
  4. Usa un bloque de la categoría: "Operadores".
  5. Cambia el código de pinwheel para que el campo de entrada backup acepte únicamente valores positivos (entre 0 y 100).

La definición del comando personalizado pinwheel que se muestra a continuación
pinwheel, branches: (number of branches)
{
    repeat(number of branches)
    {
        move (100) steps
        move (-37) steps
        turn clockwise (360 / number of branches) degrees
    }
}
se escribe con la siguiente notación

AAP-3.C.1, AAP-2.K.2
El procedimiento
turn_clockwise()
no forma parte del lenguaje AP, por lo que está escrito en minúsculas, de la misma forma que otros procedimientos definidos por el programador.
The <pre> below used to be <pre class="indent"> but then its right edge runs off the page. -bh
PROCEDURE pinwheel(numberOfBranches)
{
    REPEAT numberOfBranches TIMES
    {
        MOVE_FORWARD(100)
        MOVE_FORWARD(-37)
        turn_clockwise(360 / numberOfBranches)
    }
}

Mary to add an APblocktran image here. Also, lowercase the MOVE commands. --MF, 8/27/19

Consejos para depuración: Organiza tu código

Una buena práctica para evitar errores en el programa es, prioritariamente, mantener el código organizado al borrar todos los bloques que no se utilizan. Normalmente arrastramos bloques para hacer pruebas, pero se pueden quedar en el espacio de trabajo sin uso. Se puede usar la opción ordenar haciendo clic-derecho (o control-clic en Mac) en el área de trabajo para organizar los bloques. Se puede eliminar o remover un bloque o código arrastrándolo hacia afuera del área de trabajo hacia la paleta de funciones al lado izquierdo, o bien seleccionando la opción "eliminar" en el menú emergente al hacer clic-derecho. Click here for a video. (Toma nota que es una funcionalidad diferente a la opción "eliminar definición de bloque..." la cuál borra permanentemente un bloque personalizado y todas sus instancias en todo el proyecto.)

Animation about deleting blocks by dragging them off to the palette or by choosing the delete option by right-clicking.

    redo image with plain prototype labels --MF, 4/9/19
  1. Agrega otro parámetro con el título size, su función será la de controlar el valor del primer bloque move.
    pinwheel, branches: (number of branches) size: (size) backup: (backup) hat block
  2. Prueba con una variedad de valores en el programa pinwheel ...
    setup; pinwheel, branches: (6) size: (80) backup: (20) image of result pinwheel, branches: (6) size: (80) backup: (20)
    To address part of Dan's concern, need to have an example where size is changed. --MF, 12/20/18
    setup; pinwheel, branches: (5) size: (80) backup: (60) image of result of  pinwheel, branches: (5) size: (80) backup: (60)
  3. From Dan: "mini-lesson on "input sliders" when showing how to make "pinwheel, branches" with "backup"." BH suggests a hinted yellow box here with link: "You can add a slider (with image showing) to watch what happens as you adjust an input." --MF, 4/9/19
  4. Talk with Your Partner Discute que valores dibujarán un polígono o un asterisco.
    polygon asterisk
Now Is a Good Time to Save
AAP-3.A.5
La siguiente instrucción setup; pinwheel, branches: (6) size: (80) backup: (20) tendría la siguiente notación
Pinwheel(6, 80, 20)
or a white rounded rectangle containing first the word 'PINWHEEL' in all caps and then a smaller white rectangle containing the inputs '6, 80, 20'.
There isn't a block example for calling a procedure in the last exam reference sheet. This is our best guess for now and needs to be revisited. --MF, 3/1/19

Posiblemente has escuchado que algunas personas utilizan el término "pseudocódigo" para referirse a este pseudo-lenguaje usado en el examen de principios AP CS, pero esto no es pseudocódigo. El pseudocódigo no es un lenguaje de programación, se usa cómo un lenguaje humano natural para describir un algoritmo.

  1. Encuentra los valores de entrada para pinwheel que hagan una figura en forma de círculo.
Kandinsky-style overlapping circles       Kandinsky-style overlapping circles       Kandinsky-style overlapping circles       Kandinsky-style overlapping circles
painting by Kandinsky
  1. Al lado derecho se muestra una pintura de Vassily Kandinsky. Las cuatro pinturas que se presentan en la parte superior están inspiradas por el trabajo de Kandinsky, pero el tamaño y posición de los círculos en la pintura original fueron cuidadosamente seleccionados, mientras las otras fueron incluidas aleatoriamente. También es posible notar que los círculos sólidos de Kandinsky no tienen un color uniforme. Por ejemplo, el círculo verde cerca de la parte superior derecha tiene destellos de verde claro en la orilla, un verde parcialmente oscuro dentro, un verde azulado en el borde del círculo interior y un fondo negro en el centro.
    Cuando dos colores sólidos se solapan, es posible apreciar los dos colores, o mejor dicho, un color nuevo entre dos. Para lograr este efecto en Snap!, antes de dibujar el segundo círculo debes usar el bloque . Una transparencia con valor 0 significa que únicamente se puede ver el nuevo color; una transparencia con valor 100 resulta en la totalidad del color de fondo. Los valores intermedios determinan que color tiene más predominancia en la zona común.
    La mayoría de los círculos en el trabajo de Kandinsky son sólidos, pero unos pocos no lo son. Es más evidente en el círculo grande blanco cerca del centro de la pintura. Este tipo de círculos no tienen un ancho constante; si deseas que tu círculo tenga un aspecto similar cambia el tamaño del lápiz poco a poco mientras dibujas. Por supuesto, no tienes que hacer que tu trabajo se vea igual que los ejemplos proporcionados. Úsalos de inspiración, pero sé creativo, ¡eres el artista!.
  2. Dibuja una pintura que se parezca más a un molinillo real como se aprecia a continuación:
    pinwheel photo
    Copyright 2010 Victoria Hudgins. Usado con permiso.

    (Guarda tu proyecto; vas a necesitar el bloque pinwheel más adelante.)

    No debe verse igual al de la foto. Pero cada rama del molinillo tiene esencialmente dos triángulos. Puedes encontrar útil para este ejercicio el bloque fill block.