Origen
Carpetas de Proyectos
Recursos de Profesores
Recursos de Estudiantes
En INGLÉS
¿Cómo hago?
Lectura
Foro MW
Mapa del Sitio
Búsqueda
Equipo

espirales 1 2 3 4 5 6 7 8 9
Espirales 8
Pruébalo
114 KB


Meta:   Un espiral crece y se achica con recursión interna.


Screenshot


Código
Mapa del Proyecto

to spiral :length :pitch
pd
if :length > howbig [stop]
setc whatcolor
setpensize howthick
fd :length rt angle
carefully [note :pitch 3] [ ]
spiral :length + howtight :pitch - 1
fd :length rt angle
carefully [note :pitch 3] [ ]
end

to reset
cg
end



Notas

Este proyecto usa recursión interna, cuando la llamada recursiva no está en la última línea del procedimiento.   Al principio la computadora no realiza los comandos que están después de la llamada recursiva, pero tampoco los ignora; lo que hace es guardar estos comandos para usarlos más luego.   Cuando el procedimiento llega a detenerse en algún lugar (stop) - en este caso, cuando el valor de length es mayor que el número del control howbig - ya no se producen más llamadas recursivas...   pero ahora, los comandos guardados que estában debajo de la llamada recursiva empiezan a realizarse, desde el más reciente al más antigüo.

Esto significa que, si repites el comando que tenías antes de la llamada recursiva después de esta, la espiral primero crecerá y luego se achicará.   Las notas se harán graves y luego se harán agudas nuevamente.




¿Qué pasa si?
Experimenta con los controles para encontrar algunos diseños agradables.


Desafío
Como en Espirales 7, crea un procedimiento diferente (llámalo nueva_espiral si quieres), y coloca en este procedimiento los comandos que no cambian cuando el procedimiento spiral está siendo realizado (en este caso, los comandos setc y setpensize).   Retira estos comandos del procedimiento spiral.   Luego llama al procedimiento spiral desde el nuevo procedimiento.




© copyright 2001 - 2008  OpenWorld Learning.   All rights reserved.