``````(* ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ Programated by Vladimir Zahoransky                        ³
³                Vladko software                            ³
³ Contact      : zahoran@cezap.ii.fmph.uniba.sk             ³
³ Program tema : Squards in squard - rekusion version       ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ *)

{
This program draw popular squards effekt. It is typical rekusive
algorithm.
Part 1 : Primitive part : Nathing
Part 2 : This is one part of rekusion, who work something. There is
only cycle for (parameters : 1 to 4) and some commands. One par of
commands (dopredu(s); and vlavo(90);) draw line and rotate turtle
for drawing other line. The cycle draw the squard.  And there is
a rekusion command. It is easy to undestand, but ... .
If you are in cycle (i have 2) and you are penetrate then i muth
have 1 not 2. Ohohoh!
If you thing all colors go periodicly then it is bed. For examplr :
N=2 go : 1 1 2 3 4 2 1 2 3 4 3 1 2 3 4 4 1 2 3 4,
One is when the rekusion penetrate to smallest direction of squard
two,tree is when the rekusion make middle two directions of squard
four is when the rekusion escape drawed part of sqaurds
So it is rekusion type for example snee flake. In penetrate part are
a lot rekusion commands. Here are all rekusion commands only ONE
command !!! (Squard(n-1,s/2.5);)  If rekusion finish the penetrate
(for i>1) then go emerge part where rekusion work nathing, but
go other penetrate. Zmenfp change the color. This reksion is good
to write in rekusion version outside. It is not so difficult for
all who good undestand this. This make rekusion. Easy writed, but
difficult realization.

If you want to have the effekt in one color, please change i in
Zmenfp to constant.
Part 3 : Emerge part    : Nathing
}

Uses Okor;

Type Mykor=Object(kor)
Procedure Squard(n:integer;s:real);
End;

procedure Mykor.Squard(n:integer;s:real);
var
i:integer;
begin
if n=0 then
else for i:=1 to 4 do
begin
Zmenfp(i);
dopredu(s);
vlavo(90);
Squard(n-1,s/2.5);
end;
end;

Var k:Mykor;
Begin

With k do Begin
Init(240,-240,0);
Squard(6,480);
CakajKlaves;
Koniec;
End;

End.

``````