Interaktivna komunikacija i suradnja.

ZADATAK:

Izradite jednu proceduru naziva "trokut.u.trokutu" s jednim ulaznim podatkom (broj) koji određuje veličinu osnovice istostraničnog trokuta. Unutar tog trokuta se crta novi istostranični trokut. Vrhovi unutrašnjeg se nalaze na polovici vanjskog. Unutar drugog je treći i tako dalje. Kad se osnovica najmanjeg trokuta smanji manje od jednog koraka (piksela), prestaje crtanje.

RJEŠENJE:

Ivan Rukavina, 7. razred, OŠ Čavle (okolica Rijeke)

to trokut :d
repeat 3 [fd :d lt 120]
end
to trokut.u.trokutu :d
if :d<1 [stop]
trokut :d
fd :d/2
lt 60
trokut.u.trokutu :d/2
end

KOMENTAR:
Bravo Ivane, lijepo rješenje! Lijepo je to što rabiš dvije procedure za rješenje- superproceduru koja je specijalizirana za crtanje traženog i proceduru koja crta samo pojedinačni trokut. Bitna je također rekurzija u superproceduri. Istina, u zadatku se tražila izrada "jedne procedure" (znači samo jedne koja obavlja sve) i mislim da bi ti to rješio bez pola muke samo u jednoj. Stvar je samo stila programiranja u rješavanju. Ti si se odlučio za jedan koji je po mom osobnom mišljenju bolji (bez obzira na tekst zadatka), iako se procedura repeat mogla ubaciti u superproceduru. Još jedna važna stvar je dodjeljivanje imena ulaznim podacima. Nije uputno (iako je u ovom kratkom zadatku nebitno) imenovati varijablu jednim slovom poput "d". Bolje bi bilo "duljina" ili "osnovica" i slično. Još jednom čestitam!