Si, por ejemplo, se desea trazar un rectángulo sólido de 100 por 200, una primera idea puede ser dibujar el rectángulo de 100 por 200: luego trazar un rectángulo de 99 por 199; luego un rectángulo de 98 por 198 ... hasta que el rectángulo quede coloreado completamente.
Empecemos por definir un rectángulo cuya altura y anchura dependan de dos variables:
para rec :alto :ancho
repite 2 [av :alto gd 90 av :ancho gd 90]
fin
Para rellenar nuestro rectángulo, vamos a ejecutar:
rec 100 200 rec 99 199 rec 98 198 ... rec 1 101algo que conseguimos de forma recursiva haciendo:
para rectangulo :alto :ancho
rec :alto :ancho
rectangulo :alto-1 :ancho-1
fin
Probando rectangulo 100 200 nos encontramos con un problema:
el procedimiento no se detiene cuando el rectángulo se ha rellenado
por completo, sino que ¡continúa dibujando rectángulos!
Vamos a añadir un condicional que permita detectar cuando la altura o anchura son nulas. En ese momento, pediremos al programa que se detenga con la primitiva alto:
para rectangulo :alto :ancho
si o :alto=0 :ancho=0 [alto]
rec :alto :ancho
rectangulo :alto-1 :ancho-1
fin
Nota: En vez de utilizar la primitiva o, se puede utilizar el
símbolo "|", y escribiríamos:
si :alto=0 | :ancho=0 [alto]
Loïc 2007-10-30