Usar la abstracción para anidar triángulos

En esta página, usarás la abstracción para anidar tu guion de triángulo dentro de sí mismo a medida que aprendes sobre la recursión.

¿Te resulta incómodo todo ese copiar y pegar guiones de triángulos? Conoces una mejor manera: abstracción. En la Unidad 1, usaste el bloque molinete para implementar los programas similares de asterisco y polígono en lugar de copiar el código. Aquí, también puedes usar un bloque para administrar la abstracción. Pero en este caso, necesitamos el código similar (un triángulo más pequeño) anidado dentro, por lo que en realidad usaremos el mismo bloque dentro de sí mismo, un proceso llamado recursión.

  1. Si aún no está abierto, abre tu proyecto U3L1-ArteFractal.
  2. Crea un bloque llamado triángulo anidado que tome una entrada, tamaño, y, por ahora, solo dibuje un triángulo, pero solo si tamaño > 9. (Omite el código sobre el cambio de colores.)
    triángulo anidado, tamaño: (tamaño)

    ¿No debería ser azul?

    Cuando estés construyendo un bloque, puedes usar cualquier color que desees. Este bloque es de color violeta para que se destaque cuando lo uses en un guion más adelante.

    Haz clic para obtener sugerencias sobre cómo construir un bloque triángulo anidado.

    1. Usa tu primer guion de triángulo de la página anterior como modelo. Pero agrega una condición: dibuja el triángulo solo si es lo suficientemente grande:
      si(tamaño>9){repetir(3){mover 100 pasos; girar 120 grados}}
    2. Haz clic en el botón "Aplicar" en el Editor de bloques para que el bloque aparezca en la paleta de la izquierda.
  3. Prueba tu bloque con al menos las entradas 9, 18, 20 y 100 para asegurarte que funciona como esperas.

Hasta ahora, este es solo un procedimiento de triángulo, pero a continuación lo harás recursivo.

: Recursión

Llamar a un procedimiento desde dentro de sí mismo se llama recursión (recursion) .

En la página anterior, arrastraste una copia de la secuencia de comandos triangular entre los bloques mover y girar. Puedes hacer algo similar con tu bloque triángulo anidado.

  1. Desde la paleta, arrastra triángulo anidado en la definición de triángulo anidado entre los bloques mover y girar. Asigna a su entrada de tamaño la mitad del valor actual de tamaño.
    triángulo anidado, tamaño: (tamaño/2)
  2. Vuelve a probar tu bloque con al menos las entradas 9, 18, 20 y 100 para asegurarte que funciona como esperas.
    Estás usando triángulo anidado en su propia definición; esto lo convierte en un procedimiento recursivo. La recursividad es una de las técnicas más poderosas en informática y aprenderás más sobre ella en proyectos posteriores.
  3. Guarda tu trabajo
  1. Utiliza triángulo anidado como modelo para definir un bloque recursivo cuadrado anidado.
  2. Para dibujar el triángulo padre (principal), el objeto debe girar 120° entre los lados. Para el fractal que acabas de crear, ese giro ocurre después de dibujar al hijo (secundario), pero podrías girar antes de la llamada recursiva, o dividir el giro, con una parte antes y una parte después de la llamada recursiva. Prueba algunas modificaciones como estas:
    repetir(3){mover(tamaño) pasos; girar (120) grados; triángulo anidado nivel:(nivel-1) tamaño:(tamaño*0.5)}
    repetir(3){mover(tamaño) pasos; girar (60) grados; triángulo anidado nivel:(nivel-1) tamaño:(tamaño*0.5); girar (60) grados}
    repetir(3){mover(tamaño) pasos; girar (30) grados; triángulo anidado nivel, tamaño:(tamaño/2; girar (150) grados}
  1. Experimenta con el factor de escala para el tamaño de las llamadas recursivas. Un par de valores interesantes son \frac{1}{3} y \frac{1}{\sqrt{3}}.
  2. Usa para para hacer una animación que pase por diferentes colocaciones de ángulo de giro (es decir, 0° y 120°, luego 1° y 119°, luego 2° y 118°, etc. .).
    Animación de triángulo recursivo Animación de triángulo recursivo