Pared de ladrillo

Humpty Dumpty en una pared de ladrillo

En este proyecto, utilizarás la abstracción para dibujar una pared de ladrillo.

Imagen de ejemplo de una pared de ladrillo

Dibujar un ladrillo

Una imagen de un ladrillo es solo un rectángulo de un color rojo ladrillo. Sin embargo, no hay un bloque dibujar rectángulo en Snap!. Una forma de dibujar uno es pensar en un rectángulo como una línea muy gruesa. Aquí está la idea:

Cualquier buen lenguaje de programación puede tener muchas herramientas para dibujar y mover, pero no tendría sentido tener herramientas especiales para dibujar ladrillos porque la mayoría de los programas no involucran ladrillos. Ese es el tipo de herramienta que haces tú mismo cuando la necesitas.
dibujar ladrillo, longitud:(longitud) ancho:(ancho){fijar tamaño de lápiz a (ancho); mover(longitud) pasos}

  1. Habla con tu compañero El siguiente código tiene más detalles que la imagen de arriba. Revísalo y determina lo que hará.
    dibujar ladrillo, longitud:(longitud#) ancho:(ancho#){fijar color del lápiz a (rojo); fijar el parámetro punta de lápiz plana (verdadero); fijar tamaño de lápiz a (ancho); bajar lápiz; mover(longitud) pasos; subir lápiz}
    Haz clic para cargar un proyecto nuevo. Entonces guárdalo. Ejecuta el código. ¿Hace lo que esperabas?
  2. Normalmente, Snap! dibuja extremos redondeados en líneas gruesas: punta de lápiz redondeada. Esa es a menudo la mejor opción, y puedes ver por qué a continuación. Pero para ladrillos, queremos extremos de punta de lápiz plana :punta de lápiz plana, Y así lo usaremos establecer el parámetro (punta de lápiz plana) a 'ranura de entrada de predicado' para activar las puntas de las líneas planas.

    Puntas de línea cuadradas versus puntas de línea redondeadas
    puntas de línea planas versus redondeadas
    establecer el parámetro [captura de video] a 'ranura de entrada de predicado” con el menú abierto: modo turbo, punta de lápiz plana, captura de video, espejo sobre el video
: Abstracción
AAP-3.B.1, AAP-3.B.5

Como aprendiste en la Unidad 1, Laboratorio 2, Página 2: Hacer que los programas hablen, abstracción procesal (procedural abstraction) es el proceso de desarrollar un programa dividiendo un gran problema en subproblemas más pequeños.

Crear un bloque dibujar ladrillo te permite pensar en términos de un procedimiento con un nombre relacionado con el problema que estás resolviendo. Esto hace que tu código sea más fácil de leer; una vez que hayas codificado y depurado el bloque, no necesitas pensar en cómo funciona cada vez que lo usas. Esa es la belleza de la abstracción procedimental.

Uso de la modularidad

Necesitarías que el bloque de "nivel superior" fuera algo como esto:
dibujar pared de ladrillo, filas: (7)
Conseguirlo requiere modularidad.

: Modularidad
AAP-3.B.2, AAP-3.B.3

Modularidad (modularity) es el proceso de romper un problema en pedazos más pequeños. La modularidad es una forma de abstracción procedimental.

Hay dos tipos de filas, por lo que crearás bloques que se especialicen en cada uno:

    AAP-3.C.
  1. Usar el bloque dibujar ladrillo para hacer los bloques dibujar fila A y dibujar fila B.
  2. Leer más ¿Demasiada abstracción?

    Es posible exagerar la abstracción y construir tantos bloques que tu programa esté tan desordenado como lo estaría sin los bloques personalizados. Pero puede ser útil crear un bloque personalizado incluso cuando su definición es solo un bloque integrado. Por ejemplo, para dibujar el mortero entre bloques (los espacios en blanco), puedes usar mover (4) pasos, pero podría tener sentido definir un bloque dibujar mortero que use mover dentro de él.

    ¿Por qué? Es posible que luego decidas que cuatro pasos son el grosor incorrecto para el mortero y que preferirías tener cinco. O quizás prefieras que el mortero sea del color del mortero, ligeramente gris. Con muchas instrucciones de mover (4) pasos esparcidas por su programa, tendrías que encontrar y cambiar cada una. Para empeorar las cosas, tu proyecto completo podría tener bloques mover que no se refieran al mortero. Pero con un bloque dibujar mortero, puedes cambiar solo su definición, y se cambiará todo el mortero en tu imagen.

  3. Los dos tipos de filas deben tener exactamente la misma longitud. Tu primer intento de dibujar la Fila B probablemente sea demasiado largo. Si es así, depúralo.

    Depura pensando en lo que estás intentando lograr, no en tu código. Depura pensando en lo que estás intentando lograr, no en tu código. Por ejemplo...

    • ¿La fila B debería tener ladrillos de diferentes tamaños, espacios de diferentes tamaños o solo ladrillos de diferentes tamaños al final?
    • Si no estás seguro, prueba todas las posibilidades y observa cuál se ve bien en la pared terminada.
    • O piensa "¿Qué sería tendría más sentido en una pared de ladrillo real ?"
  4. Escribe y prueba el bloquedibujar pared de ladrillo, filas: (7).
    Es posible que desees utilizar el ¿extraño? predicado de tu proyectoU2L4-BibliotecaMatemática. Aprendiste sobre exportar e importar bloques en Unidad 2 Laboratorio 3, Página 1: ¿Qué es un predicado?
  5. Guarda tu trabajo
    AAP-3.B
  6. Habla con otra pareja ¿Cómo crees que la abstracción procesal maneja la complejidad de un programa?
  1. Añade más entradas a dibujar pared de ladrillo (y según sea necesario para dibujar la fila A y dibujar la fila B) para:
    1. Número de ladrillos por fila
    2. largo y ancho de un ladrillo
    3. Grosor de la brecha
    dibujar pared de ladrillo, filas: (21) ladrillos por fila: (11) longitud de ladrillo: (30) ancho: (10) grosor de la brecha: (5)
    Agrega estas entradas adicionales de una en una, ¡no todas a la vez! Cuando modificas la longitud de un ladrillo, eso también debería cambiar la longitud de un ladrillo final para la fila B. Cuando modificas el grosor del espacio, eso también debería cambiar la distancia entre las filas.