E N D
Napišite proceduru PRAVI :a :b koja će nacrtati pravokutni trokut s katetama duljina :a i :b, ali tako da dulja kateta leži vodoravno, a kraća okomito. Jedan vrh trokuta je u centru ekrana. Katete su kraće stranice pravokutnog trokuta koje stoje okomito jedna na drugu. • Primjer:PRAVI 50 100 i PRAVI 100 50 daju isti rezultat koji je prikazan na slici.
IF…THENIF … THEN … ELSE • Naredbe koje služe za grananje programa. • Koristi se kada izvršenje nekih naredbi ovisi o nekom uvjetu. • IF uvjet THEN [niz naredbi] • Ako je uvjet istinit (zadovoljen) niz naredbi će se izvršiti.
Primjer1 (IF… THEN) • Napišite proceduru TROKUT :d, koja će crtati jednakostraničan trokut sa stranicama duljine :d, ako je :d veći od nule. • Prije crtanja trokuta moramo provjeriti da li je :d veći od 0 (:d>0). • Ako jest tada će se izvršiti niz naredbi za crtanje trokuta.
TO TROKUT :D IF :D>0 THEN [REPEAT 3[FD :D RT 120]] END
Primjer2 Napišite proceduru PARAN :n koja ispisuje BROJ JE PARAN, ako je :d paran broj. Objašnjenje: Broj je paran ako pri dijeljenju sa dva daje ostatak nula. Funkcija REMAINDER vraća ostatak pri cjelobrojnom dijeljenju.
REMAINDER :a :b • Vraća ostatak pri dijeljenju broja :a s brojem :b. • Npr: remainder 3 2 • Rezultat: 1 (kada dijelimo 3 s 2, rješenje je jedan, a ostatak je 1)
Rješenje: TO PARAN :N IF (REMAINDER :N 2)=0 PR [BROJ JE PARAN] END
Primjer (IF…THEN…ELSE) • Napišite proceduru POZITIVAN :X koja ispisuje POZITIVAN ako je :x veći od nule, u protivnom ispisuje NEGATIVAN. IF uvjet THEN [niz naredbi] ELSE [drugi niz naredbi] Ako je uvjet zadovoljen izvrši se niz naredbi iza THEN, u protivnom se izvrši niz naredbi iza ELSE.
Rješenje: • TO POZITIVAN :X IF :X>0 PR [POZITIVAN] ELSE PR [NEGATIVAN] END
RJEŠENJE 1.ZADATKA: • Ne znamo duljinu hipotenuze, ali nakon crtanja kateta pod pravim kutom, moramo se vratiti na početak crtanja tj. U sredinu ekrana – naredbom HOME. to pravi :a :b cs rt 90 if :a>:b then [fd :a lt 90 fd :b] else [fd :b lt 90 fd :a] home end
FOR • Petlja u kojoj se neka varijabla u svakom ponavljanju mijenja za isti broj (najčešće se uvećava za jedan). FOR var pocetak kraj [niz naredbi]
Na početku izvršavanja niza naredbi varijabla poprima vrijednost pocetaki provjerava se da li je varveće ili jednako od kraj. Niz naredbi se izvršava i var se povećava za jedan. Postupak se ponavlja sve dok je var manje ili jednako kraj.
Primjer (FOR) • Napišite proceduru ISPIS koja ispisuje sve prirodne brojeve manje od 10. Rješenje: TO ISPIS FOR “i 1 9 [pr :i ] END
ZADATAK: • Napišite proceduru POLI :u :v :d koja crta pravilne mnogokute jedan unutar drugog. Svi mnogokuti imaju jednaku duljinu stranice :d. unutarnji mnogokut ima najmanje - :u stranica. Svaki sljedeći mnogokut ima jednu stranicu više od prethodnog, a vanjski mnogokut ima najviše odnosno :v stranica.
Rješenje: TO POLI :U :V :D FOR “i :u :v [REPEAT :i[FD :D RT 360/:I]] END
2. Napišite proceduru LIK :n :m :d koja će nacrtati mnogokut s :n stranica duljine :d te na svakoj stranici (s vanjske strane mnogokuta) mnogokut s :m stranica također duljine :d. • Primjer (vidi sliku): LIK 4 3 100 • RJEŠENJE: to lik :n :m :d cs repeat :n [fd :d vanjski :m :d rt 360/:n] End to vanjski :m :d repeat :m [lt 360/:m fd :d] end
3.Radnik Stipe bavi se jako teškim poslom. Gradi stupove. Ima puno blokova, jedan blok slaže na drugi i tako sve dok ne sagradi stup do kraja. Znam da vam se ovo čini jednostavno i lako, ali nije tako. Da bi si dočarali težinu posla, vi pokušajte samo nacrtati jedan stup. • Napišite proceduru STUP:n :a :b koja crta vertikalni stup koji se sastoji od :n blokova. • Svaki blok je pravokutnik širine :a i visine :b. (kao na slici desno za :n = 4, :a = 50 i :b = 30). • Varijable :n, :a i :b su veće ili jednake od 1. • Pozicija stupa na ekranu nije bitna. • Primjer (vidi sliku dolje): cs STUP 7 80 20RJEŠENJE: to pravokutnik :a :b repeat 2 [fd :b rt 90 fd :a rt 90] End to stup :n :a :b repeat :n [pravokutnik :a :b fd :b] end
4. Organizatori olimpijada, bojeći se da će Janici dosaditi okrugle medalje, odlučili su promijeniti im oblik. Svi znaju da je Janica najsjajnija zvijezda, pa su uzeli oblik zvijezde. Budući da su organizatori već prezauzeti organizacijom, netko treba nacrtati oblik medalja. Napišite proceduru MEDALJA :n :d :kut koja crta zvijezdu s :n krakova. Kut između svaka dva kraka je isti. Duljina brida svakog kraka je :d. • Kut na vrhu svakog brida je :kut. (na slici desno :n je 4, :d je 100, a :kut je 45) • Varijabla :n je veća ili jednaka od 3. • Varijabla :d je veća od nule. • Varijabla :kut je veća od 0, a manja od 180. • Pozicija zvijezde nije bitna. • RJEŠENJE: to medalja :n :d :k repeat :n [fd :d rt 180 - :k fd :d lt 180 - (360 / :n + :k)] end