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] endto 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!