Pythagorean tree

[ UniComal ]


Hieronder staat de programma-listing behorende bij de figuur die op de UniComal-pagina is afgebeeld.
Het programma is geschreven in UniComal vs 3.11.

 // PYTTREE

 // Generating Pythagorean triangles, based on a Lindenmayer-Grammar
 // Axiom     : S
 // Constants : L R .
 // Rules     : see implementation

 //// implementation:
 //
 PROC square(n)
   LOOP 5 TIMES forward(n); right(90)	// 5th for next start
   left(90)				// correct pen heading
 ENDPROC square

 PROC tree(n)				// n is size; not level
   IF n<1 THEN
     RETURN
   ELSE
     square(n)				// tree node
     left(45) 				// turnleft
     tree(n/f) 				// draw left tree  (*)
     right(90); forward(n/f) 		// reset position
     tree(n/f) 				// draw right tree (*)
     back(n/f); left(45)                // reset position
     back(n) 				// ready
   ENDIF
 ENDPROC tree

 //// init graphic screen:
 //
 USE graphics
 graphicscreen(-1)
 window(-400,400,-300,300)
 moveto(-55,-240)

 //// program:
 //
 f:=SQR(2) 				// grow factor
 size:=130 				// initial size

 tree(size)
 plottext(-400,-300,"Press any key to stop")
 PAUSE
 textscreen

In het bovenstaande programma wordt gebruik gemaakt van recursie. Dit wil zeggen, dat een procedure (in dit geval de procedure TREE) zichzelf aanroept.
Zie de regels in de programma-listing aangegeven met (*). Als de recursieve aanroep beëindigd is, wordt de programma-uitvoering voortgezet met de op die aanroep volgende programma-regel.
Het programma PYTTREE zelf behoort bij een door mij geschreven "Recursion tutorial" die het gebruik van recursie (en daarop gebaseerde technieken) in de programmeertaal UniComal behandelt.
De tekst (geschreven in het Engels, beschikbaar in Word 7.0 formaat) kan worden gedownload via de MacharSoft-site [ZIP-bestand, 515Kb].


terug Terug  begin pagina Top

[pyttree.htm] laatste wijziging op: 16-03-2006