Transcript LOGO
METODIKA NASTAVE INFORMATIKE 1
1
PROGRAMSKI JEZIK LOGO
Zašto LOGO?
Radi se o verziji jezika Lisp kreiranoj 1967. za upotrebu u
nastavi
Jasan i jednostavan programski jezik
Posebno prikladan i za učenje kako učiti
Glavna karakteristika: kornjačina grafika (engl. turtle graphics)
Grafičke naredbe su kratke i jednostavne – sve se može
nacrtati sa 7 osnovnih naredbi, no postoje i klasične naredbe
koordinatne grafike
Ima i sve standardne naredbe/mogućnosti za programiranje,
uključivši liste, mogućnost rekurzivnih procedura isl.
2
OSNOVNA SVOJSTVA JEZIKA LOGO
LOGO je danas poznat kao interpretirani jezik, iako su
razvijene i neke verzije s compiler-om
Zadaća: Interpretirani i kompilirani programski jezici
Mogućnost interaktivnog rada jer ima mogućnost
zadavanja neposredno izvršivih naredbi
Proceduralnost: program se može podijeliti u procedure
Svaka definirana procedura postaje dijelom biblioteke
procedura (ne treba posebno uključivanje u program)
Besplatni intepreter: MSW Logo
3
KORNJAČINA GRAFIKA
kornjačina
glava
Metoda programiranja vektorske grafike koristeći kursor
(kornjaču) u Kartezijevom koordinatnom sustavu
Zadaća: Usporedba vektorske i rasterske grafike
Kornjača ima 3 atributa: pozicija, orijentacija i pisaljka (koja
ima daljne atribute: boju, debljinu, spusti/digni)
Kornjača je obično vizualizirana ili kao kornjača ili kao trokutić
– jasno je u kom smjeru gleda
Često se koristi analogija: zamisli kornjaču kojoj je za rep
zakačena pisaljka – kako se kornjača miče, tako za sobom
ostavlja crtu
Seminar: Uloga kornjače u učenju
(http://technologyhistory.blogspot.com/2007/05/logo-and-seymour-papert.html;
http://othes.univie.ac.at/5521/1/2009-06-09_9711007.pdf (str. 51-59))
4
POČNIMO CRTATI
Naredbe upisujemo u Commander
CS = CLEARSCREEN – briše ekran i postavlja kornjaču u sredinu
Skretanje ulijevo: LT = LEFT pa broj
Skretanje udesno: RT = RIGHT
Idi naprijed za određeni broj koraka: FD = FORWARD pa broj
Idi natrag za određeni broj koraka: BK = BACK pa broj
Zadatak 1. Nacrtajte kvadrat stranice 50 i sliku
Zadatak 2. Kako biste pomoću
kornjačine grafike objasnili da puni
okret kornjače iznosi 360?
5
DALJNJI ZADACI
Zadatak 3. Nacrtajte jednakostranični trokut trokut
kojemu su sve stranice jednake duljine
Zadatak 4. Nacrtajte sljedeće crteže…
6
Nacrtajte pravokutnik kojem je duljina veća od širine,
zakrivljenu crtu, npr. oblik puževe kućice,
pravilni n-terokut za n>5 po vlastitom izboru,
7
KAKO PRESKOČITI DIO?
PU = PENUP, PD = PENDOWN
8
BRISANJE
PE = PENERASE – kornjača će umjesto da piše brisati
Npr.
PE
BK 50
RT 90
FD 50
PPT
9
NIZ NAREDBI ČINI PROGRAM
Kako biste učenicima objasnili što je to programski jezik? A
što je to program?
Naredba je poruka računalu da obavi određenu operaciju.
Editor je prostor u koji prvo možemo upisati sve naredbe, a
tek onda ih izvršiti.
EDIT “KVADRAT”:
TO KVADRAT”
END
Tako upisane naredbe – sve skupa – ostaju zapamćene te ih
možemo mijenjati, ili ponovno izvesti. Sve one skupa čine
program:
Konačan niz naredbi razumljivih računalu zove se program.
10
PRVI PROGRAMI
Program počinje s TO ime, a završava s END
Da bi se program izveo, treba izaći iz editora: pritiskom na tipku
ESC
Program se pokreće tako da mu upišemo ime na komandnu
liniju
Ime smije biti niz znakova (ne: hrvatska slova!)
Dva različita programa moraju imati različita imena
Napiši programe koji crtaju kvadrat, jednakostranični trokut i
pravilni šesterokut.
Program se može pozivati u drugom programu – nacrtaj saće s 3
šesterokuta i kvadrat kojem su nad svakom stranicom nacrtani
jednakostranični trokuti
11
ZADACI
Itd. (zadaci str. 26/27 u Kniewald: Programski jezik LOGO)
12
OSNOVNE NAREDBE ZA RAD S KORNJAČOM
FD 100 – pomakni kornjaču naprijed za 100 koraka
RT 90 – zaokreni kornjaču udesno za pravi kut
LT 90 – zaokreni kornjaču ulijevo za pravi kut
BK 100 – pomakni kornjaču natrag za 100 koraka
PE – prebaci se u mod brisanja
HOME – vrati kornjaču na početni položaj
PU – podigni kornjačinu olovku od podloge
PD – spusti olovku
CS – očisti ekran
HT – sakrij kornjaču
ST – pokaži kornjaču
REPEAT 3 [FD 100 LEFT 90] – ponovi naredbe u
zagradama triput
13
KRUŽNICA I KRUG
Kako biste nacrtali kružnicu koristeći samo dosad poznate
naredbe?
Što pravilan mnogokut ima više stranica, to je sličniji kružnici
Pravilni n-terokuti nastaju (primjerice) naredbom tipa REPEAT
n [FD a RT kut], gdje je n puta kut jednako 360
Napišite program koji crta kružnicu. Zatim ga iskoristite da
nacrtate sliku poput one dolje lijevo.
Napišite program koji crta polukružnicu. Zatim ga iskoristite
da nacrtate sliku poput one dolje lijevo.
14
Nacrtajte zvijezdu poput gornje s proizvoljnim brojem
jednako dugih krakova
Kako biste nacrtali krug?
Što je više krakova, to je slika sličnija krugu
Napišite program koji crta četvrt kruga!
15
KAKO OBJASNITI RAD PETLJE?
Uočavanje da se u nekim programima određene sekvence
naredbi moraju ponoviti više puta (npr. u crtanju pravilnog
trokuta FD 30 RT 120)
Naredba REPEAT 20 [FD 100 RT 170] radi što?
Isprobati REPEAT __ [FD ___ RT ___ ] s različitim brojevima
Korisne su kad imamo dijelove koji jednako izgledaju, no
stvarni osjećaj za petlju se razvija kad imamo ponavljanje
_sličnih_ dijelova
Pogodite što se dobije s CS REPEAT 100 [FD 10 RT
REPCOUNT] (REPCOUNT je broj koji iznosi točno koliko puta
se prošlo kroz petlju)
16
NACRTAJTE ČETVRTASTU SPIRALU
REPEAT 100 [ FORWARD REPCOUNT * 2 RIGHT 90 ]
Što ako se promijeni kut zaokreta?
Što ako se faktor 2 promijeni u 3?
17
NIZOVI I MREŽE LIKOVA
Niz likova: nacrtaj lik, postavi kornjaču na novo mjesto
početka crtanja lika
Napiši program koji će nacrtati niz od 5 istovrsnih likova
po izboru tako da svaki sljedeći dodiruje prethodnu
Iskoristi taj program za crtanje mreže tih likova koja ima
4 reda i 5 stupaca, a svaki lik se dodiruje sa svojim
horizontalnim i vertikalnim susjedima
Nacrtaj pravilni šesterokut kojem je nad svakom
stranicom nacrtan pravilni trokut
18
BOJE
SETPENCOLOR = SETPC: postavlja boju kornjače (0,…,15)
SETSCREEN COLOR: postavlja boju pozadine (0, 1, … , 15)
SETFLOODCOLOR – boja popunjenja za FILL
FILL: kornjača u boji 1 ispuni dio u kojem se nalazi (ako je
ograđena zatvorenom krivuljom, inače oboji veći dio zaslona;
ako je na liniji, naredba nema efekta)
Nacrtaj plavo popunjeni kvadrat na žutoj pozadini (sami otkrijte
koje Vam boje za to trebaju)
Druge boje možemo navesti njihovim RGB-kodom
SETSCREENCOLOR [255 255 0]
Nacrtaj kućicu s plavim prozorima, smeđim vratima, crvenim
krovom i sivim zidom, na zelenoj pozadini
19
Nacrtajte zastavu neke države (ako sadrži grb, umjesto grba
nacrtajte pentagram)
Oznaka boje
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[R G B]
[0 0 0]
[0 0 255]
[0 255 0]
[0 255 255]
[255 0 0]
[255 0 255]
[255 255 0]
[255 255 255]
[155 96 59]
[197 136 18]
[100 162 64]
[120 187 187]
[255 149 119]
[144 113 208]
[255 163 0]
[183 183 183]
UVOD U KORIŠTENJE VARIJABLI – PRIJENOS U POTPOGRAM
Napišite program koji crta 5 kružnica jednu u drugoj, tako da
imaju jednu točku zajedničku
Vidimo da smo 5 puta crtali gotovo istu petlju – jedine razlike
su u vrijednosti koraka (stranice n-terokuta kojim
aproksimiramo kružnicu)
Skratite sad program tako da crta samo jednu kružnicu
Uz ime programa i umjesto duljine stranice napišite :A
Npr.
TO KRUZNICA :A
REPEAT 36 [FD :A RT 10]
END
21
Poziv: KRUZNICA 40
Možemo reći i ovako: ako se programskim jezikom
sporazumijevamo s računalom koje ga razumije, pisanjem
programa mi uvodimo nove riječi, a njih možemo uvesti i
tako da se moraju izreči skupa s nekim brojem – kad ih
definiramo, definiramo ih skupa s jednom nepoznanicom
čije ime počinje s :
Kad koristimo riječ s brojem, kornjača taj broj shvaća kao
stavljen na mjesto nepoznanice
Što radi REPEAT 100 [kruznica REPCOUNT RT 10]?
Nacrtajte kvadrata tako da su im po jedna stranica sve na
istom pravcu i svaki sljedeći je za isti faktor manji od
prethodnog (broj kvadrata i boju odaberite sami)
22
DVIJE NEPOZNANICE –
PROGRAMI S 2 VARIJABLE
TO POLIGON :STRANA :DULJINA
SETPENCOLOR 6
SETSCREENCOLOR 10
REPEAT :STRANA [ FORWARD :DULJINA RT 360 / :STRANA ]
END
TO ORNAMENT :DIJELOVA
REPEAT :DIJELOVA [ POLiGON 5 50 RT 360 / :DIJELOVA ]
END
23
Napomena: 4 računske operacije +, - , * , /
A MOŽE I TRI…
TO NIZ :K :N :A
PU
LT 90
FD 130
RT 90
REPEAT :K [PD LIK :N :A PU RT 90 FD 2 * :A LT 90]
END
Gdje je LIK program koji crta N-terokut stranice A (sami
ga napišite)
24
POJAM VARIJABLE
MAKE “B 10 – Na mjesto B stavi broj 10.
MAKE “C :B + 10 – Pročitaj što se nalazi na mjestu B, uvećaj
za 10 i stavi na mjesto C.
“X označava mjesto u memoriji koje se zove X
:X označava broj koji se nalazi na mjestu X
Naredba MAKE je naredba pridruživanja
Kako biste napisali naredbu koja crta kružnicu polumjera :R?
MAKE “O 6.28 * :R
REPEAT 36 [FD :O/36LT 10]
25
PRIMJER
TO LIST :A :KUT
REPEAT 2 [FD :A RT :KUT FD :A RT 180 - :KUT]
END
TO KNJIGA :A :KUT
LT 90
MAKE “N (180 - :KUT)/12
REPEAT :N [LIST :A :KUT MAKE “KUT :KUT + 12]
END
26
ZADACI
Napiši program koji crta zadani broj pravilnih šesterokuta
zadane duljine stranice, tako da je svaka sljedeća veća za
zadanu duljinu.
Napiši program koji crta šesterokutnu spiralu (zadaje se
duljina prve stranice i povećanje duljine za svaki korak).
Napiši program koji crta piramidu kvadrata (zadaje se duljina
stranice kvadrata i broj kvadrata u prvom retku, a svaki
sljedeći redak treba imati po jedan kvadrat manje; piramida
mora imati zrcalnu simetriju).
Napiši program koji crta kružnicu podijeljenu na zadani broj
dijelova.
Napiši program koji crta pravilni šesterokut skupa s opisanom
mu i upisanom kružnicom.
27
Napiši program koji crta mrežu jednako velikih krugova
zadanog polumjera, tako da im boje alterniraju.
PROGRAMSKI JEZIK LOGO - NASTAVAK
Kako uvesti element slučajnosti?
Slučajni (prirodni) brojevi generiraju se naredbom RANDOM
koju možemo koristiti na mjestu gdje pišemo broj u svim
naredbama
Ispis 20 slučajnih brojeva od 0 do 11:
REPEAT 20 [PRINT RANDOM 12]
Slučajna šetnja kornjače
REPEAT 1000 [ FORWARD 10 RIGHT RANDOM 360 ]
Crtanje slučajnih pravaca
Naredba SETXY 20 30 postavlja kornjaču u točku 20 desno i
30 gore u odnosu na HOME poziciju
TO LINES
REPEAT 100 [SETXY RANDOM 200 RANDOM 200]
END
28
JOŠ O SLUČAJNIM BROJEVIMA
Imate li ideju kako generirati slučajni broj između 10 i
19?
(RANDOM 10) + 10
A kako generirati slučajni višekratnik od 10 između -100 i
100?
(RANDOM 20) * 10 – 100
Koja je razlika između RANDOM 10 i RANDOM 5 +
RANDOM 5?
29
ŠTO RADI PROGRAM BOXPICTURE?
TO SQUARE :SIZE
REPEAT 4 [ FORWARD :SIZE RIGHT 90 ]
END
TO RANDOMBOXES
REPEAT 10 [ SQUARE RANDOM 100 ]
END
TO BOXPICTURE
REPEAT 4 [ RANDOMBOXES RIGHT 90 ]
END
30
KOORDINATNA GRAFIKA (7. I 8. RAZRED)
Zadatak: Nacrtati pravilni n-terokut s dijagonalama.
Problem: Kako spojiti vrhove bez trigonometrijskog
računa?
Svaki vrh je točka na zaslonu. Ona je određena s dva
broja. Jedan određuje pomak lijevo-desno, a drugi
pomak gore-dolje.
CS
RT 90 FD 40 LT 90 FD 30
PR POS
Dakle, trenutni položaj kornjače opisan je s 40 30
Položaj na poziciji HOME je 0 0
31
…
Osmislite zadačiće kojima će đaci otkriti značenje brojeva i
njihovih predznaka u opisu pozicije kornjače!
Nove naredbe:
POS: vraća koordinate kornjače; pojedine koordinate
dohvaćamo s XCOR i YCOR
SETX: postavlja kornjaču na poziciju sa zadanom apscisom,
bez promjene ordinate
SETY: analogno
SETXY a b postavlja kornjaču na poziciju (a,b)
HEADING: vraća broj koji kaže koliko je kornjača okrenuta
udesno od početnog položaja
SETH: postavlja kornjaču u zadanom smjeru
32
ŠTO RADI PROGRAM?
TO STRINGART
REPEAT 10 [ PENUP SETXY (REPCOUNT * 10) 0
PENDOWN SETXY 0 (REPCOUNT * 10) ]
END
Napišite program koji crta sliku
Osmislite zanimljiv skup točaka koje ćete spajati koristeći
SETCY.
Neki od programa koji ste radili bez koordinata
preformulirajte u novi kontekst.
33