14. Rješavanje problema programiranjem
74C. Vizualno programiranje
Rješavanje problema u Scratchu
razvija algoritme za rješavanje različitih problema kori-steći se nekim programskim jezikom pri čemu se koristi prikladnim strukturama i tipovima podataka, dizajnira i izrađuje modularne programe koji sadrže potprograme u programskom jeziku
Ponovite gradivo o Scratchu iz 6. raz: 65CScratch.pdf.
U šestom razredu naučili ste koristiti varijable i programske petlje. U varija-blama ste pohranjivali brojeve. I na kraju sastavili ste program za igru. Ove godine naučit ćete:
• u varijable pohranjivati druge vrste podataka (riječi i liste)
• podijeliti složeniji program na manje dijelove pa od njih sastaviti glav-ni program
• napisati program koji svira melodiju po notama
Osim brojeva, u varijabli možemo zapamtiti riječi.
Želite li u varijablu r staviti riječ VATRA sastavit ćete naredbu:
.
Kao što postoje opera-cije za rad s brojevima (npr. zbrajanje, oduzi-manje, itd.) tako po-stoje i operacije za rad s riječima. Otvorite iz-bornik i složite naredbe koje su prika-zane u zadnjem stupcu tablice. Svaku naredbu možete is probati kli-kom na nju.
Instalirajte Scratch Desktop s poveznice: https://scratch.mit.edu/download
Tablica 1. Naredbe za rad s riječima
Naredba Opis Primjervraća zadano slovo od riječi
vraća duljinu riječi (broj slova)
spaja dvije riječi u novu riječ; za spajanje tri ili više riječi umjesto jedne riječi treba ponovno umetnuti naredbu spoji.
provjerava sadrži li zadana riječ traženo slovo; ako sadr-ži vraća true (istina), a ako ne sadrži vraća false (laž).
Scratch ne razlikuje mala i velika slova.
Npr. , odgovara true: ri-ječ m sadrži M
2 4. Rješavanje problema programiranjem
Vježba 1. Maca pita leteću macu
Sastavimo program u kojem maca pita leteću macu da joj kaže koje je n-to slovo u riječi koje mu zada.
Ulazne vrijednosti su n – prirodni broj i riječ. Ako je n veći od broja slova u ri-ječi, leteća maca treba odgovoriti da riječ nema toliko slova.
Oba lika razgovarat će kad se na njih klikne.
Rješenje:
Postavite na pozornicu leteću macu i okrenite je prema maci (otvorite Kostimi pa kliknite Obrni vodoravno). Maca treba zadati riječ u varijabli riječ i broj n te izreći pitanje.
Leteća maca treba proči-
tati n-to slovo riječi riječ. Ali, postoji li to slovo? Ako je n veći od broja slova u riječi, onda treba reći da zadana riječ nema toliko slova, a inače reći n –to slovo od rije-či riječ.
Dakle:
ako n > dužina(riječ) onda
reci riječ nema toliko slova
inače
reci n-to slovo od riječ
Rješenje u datoteci 74Cvjezba1.sb3.
Slika 1. Primjer: slovo postoji u riječi
Slika 3. Skripta za macu
Slika 4. Skripta za leteću macu
Slika 2. Primjer: slovo ne postoji u riječi
34. Rješavanje problema programiranjem
Vježba 2. Je li riječ palindrom
Sastavimo program u kojem maca pita leteću macu je li neka riječ pa-lindrom ili nije.
Riječ je palindrom ako se jednako čita slijeva nadesno i obratno. Pri-mjeri palindroma su: KAPAK, NE-VEN, OKO.
Palindrom nije riječ OBLAK.
Ulazna vrijednost je riječ.
Kao i u prošloj vježbi mace razgo-varaju kad se na njih klikne.
Rješenje:
Maca treba zadati riječ u varijabli riječ i postaviti pitanje le-tećoj maci. Budući da se pitanje sastoji od 3 dijela: „Je li“, varijabla riječ i „palindrom?“ koristit ćete naredbu spoji ko-joj je prva ulazna vrijednost „Je li“, a druga ulazna vrijed-nost druga naredba spoji s ulaznim vrijednostima varija-bla riječ i „palindrom?“. To ste upoznali u 6. razredu.
Leteća maca mora provjeriti je li zadana riječ palindrom. Da bi to napravila prvo treba uzeti jednu novu varijablu (okreni) i u nju staviti riječ bez ijednog slova, tzv. praznu riječ:
. Sada svako slovo iz riječi u varijabli ri-ječ treba staviti na početak riječi u varijabli okreni.
Pritom trebate još jednu varijablu (n) koja broji na kojem ste trenutno slovu.
Primjeri:
Neka je u varijabli riječ OBLAK: Neka je u varijabli riječ KAPAK:
Slika 5. Riječ KAPAK je palindrom
Slika 6. Primjer: Riječ OBLAK nije palindrom
Slika 7. Skripta za macu
n slovo n od riječ okreni
1 O O
2 B BO
3 L LBO
4 A ALBO
5 K KALBO
n slovo n od riječ okreni
1 K K
2 A AK
3 P PAK
4 A APAK
5 K KAPAK
4 4. Rješavanje problema programiranjem
U varijablu n stavite 1: . Postavite petlju koju treba ponavlja-ti onoliko puta koliko riječ ima slova. U petlji ćete svako slovo dodati na početak riječi okreni i povećati n za 1:
Riječ je palindrom ako je riječ = okre-ni, a inače riječ nije palindrom. Da-kle,
ako okreni = riječ onda
reci riječ je palindrom
inače
reci riječ nije palindrom
Rješenje u datoteci 74Cvjezba2.sb3.
Slika 8. Skripta za leteću macuSlika 9. Dijaloški okvir za zadavanje liste
Tipovi podataka u Scratchu:• brojevi• znakovi (riječi)• liste
Kad bi maca trebala reći više od jednog broja ili riječi kako bi to učinila? Npr. treba reći sve brojeve od 1 do 10, ali da ih ne moramo pisati jedan po jedan. U Scratchu, kao i u drugim programskim jezicima postoji tip podataka lista koji omogućuje pohranu više različitih podataka.
U izborniku kliknite i u dijaloškom okviru upišite ime liste: lista.
54. Rješavanje problema programiranjem
Naredba Opis Primjerdodaje zadanu stvar u listu; članovi ili elementi liste (u primjeru nazivi voća) dodaju se u listu jedan po jedan
briše element liste koji se nalazi na za-danom mjestu u listi
umeće zadanu stvar na zadano mjesto u listi
zamjenjuje zadani element liste s no-vim elementom
vraća element liste koji se nalazi na za-danom mjestu u listi
vraća mjesto u listi na kojem se nalazi zadani element liste
vraća duljinu liste
provjerava nalazi li se u listi zadani ele-ment; ako se nalazi vraća true, a inače vraća false
briše sve članove liste; korisno je nared-bu upotrijebiti na početku programa, jer se pamte elementi liste iz ranijeg pokretanja programa
Tablica 2. Naredbe za rad s listama
6 4. Rješavanje problema programiranjem
Vježba 3. Popis 10 brojeva
Sastavimo pro-gram u kojem maca sastavlja listu od prvih 10 prirodnih broje-va i izgovara je.
Rješenje:
Zadajte listu popis i na početku ju izbrišite.
U listu treba staviti sve brojeve od 1 do 10. Uzmite varijablu x i postavite ju na 1.
Sada 10 puta treba ponoviti naredbe:
• dodaj x u listu popis
• povećaj x za 1
Preostaje da maca kaže sadržaj liste popis:
Naredbe će se izvršiti kad na njih kliknete.
Rješenje u datoteci 74Cvjezba3.sb3.
Slika 10. Lista od prvih 10 brojeva
Slika 11. Skripta za ispis prvih 10 brojeva
74. Rješavanje problema programiranjem
Vježba 4. Popis prvih n višekratnika od k
Maca treba sastaviti listu u kojoj je prvih n višekratnika broja k.
Ulazne vrijednosti programa su prirodni brojevi n i k.
Uputa: Višekratnici broja k su umnošci prirodnog broja s brojem k. Prvih 5 višekratnika broja 13 je: 1 ⋅ 13 = 13, 2 ⋅ 13 = 26, 3 ⋅ 13 = 39, 4 ⋅ 13 = 52, 5 ⋅ 13 = 65.
Rješenje:
Zadajte listu popis i na početku ju izbrišite.
U listu treba staviti prvih n višekratnika broja k. Zadajte varijable n i k te im zadaj-te vrijednosti.
S brojem k treba pomnožite redom broje-ve od 1 do n. Očito, koristit ćete petlju, ali trebate i varijablu na kojoj ćete pamtiti prirodni broj s kojim trenutno množite k. Zadajte varijablu broj i postavite ju na 1:
Slijede naredbe koje će se ponavljati n puta:
� izračunati pojedini višekratnik:
� dodati ga u listu popis
� povećati varijablu broj za 1
Preostaje da maca kaže sadržaj liste popis:
Naredbe će se izvršiti kad na njih kliknete.
Rješenje u datoteci 74Cvjezba4.sb3.
Slika 12. Prvih 5 višekratnika od 13
Slika 13. Skripta za ispis prvih 10 brojeva
8 4. Rješavanje problema programiranjem
Vježba 5.
Maca treba sastaviti listu popis od n slučajnih brojeva između 1 i 1000. U listu dje-ljivi treba prepisati one bro-jeve koji su djeljivi s k.
Rješenje:
Zadajte liste popis i djeljivi pa ih na početku izbrišite.
Zadajte varijable n i k te im zadajte vrijednosti.
U listu popis dodajte n slučajnih brojeva.
U petlji ćete n puta ponoviti sljedeće naredbe:
� u varijablu x staviti slučajni broj od 1 do 1000
� dodati x u popis
Sada u listu djeljivi prepišite one brojeve iz liste popis koji su djeljivi s k. U varijabli broj pamti se redni broj elementa liste popis.
Za svaki element liste popis treba provjeriti je li djeljiv s k, pa ako je dodati ga u listu djeljivi:
i povećati vrijednost varijable broj.
Preostaje da maca kaže sadržaj liste popis:
Naredbe će se izvršiti kad na njih kliknete.
Rješenje u datoteci 74Cvjezba5.sb3.
Slika 14. Brojevi djeljivi s 2
Slika 14a. Skripta za macu
Prozorčić na pozornici koji pri-kazuje listu možete povećati ako se ne vide svi članovi liste. Povucite mišem donji desni kut prozorčića i povećat ćete ga.
Podsjetite se:Ostatak pri dijeljenju 15 sa 4 daje operacija:
Je li 15 djeljiv s 3 provjerit ćete uvjetom:
94. Rješavanje problema programiranjem
Programi koje sastavljate u Scratchu postaju već prilično dugački. Takve probleme poželjno je rastaviti na manje dijelove. Za svaki dio napiše se po-seban manji program koji poslije koristiti u polaznom programu. Manji dije-lovi na koje rastavljamo program zovu se potprogrami. U sljedećim vježba-ma rješavat ćemo probleme rastavljajući ih na potprograme. U Scratchu se potprogrami zovu blokovi.
Dodajte proširenje da maca može crtati.
Vježba 6. Kućica
Maca treba nacrtati kućicu koja se sastoji od kva-drata i trokuta. Duljina stranice kvadrata i trokuta je 100.
Kvadrat i trokut treba crtati pomoću potprograma.
Rješenje:
Za zadavanje potprograma iz izbornika odaberite .
U dijaloškom okviru koji se otvorio (kao na slici 16.) upi-šite ime bloka: kvadrat.
Na isti način zadajte još jedan blok i nazovite ga trokut.
Primijetite da su se u prozoru gdje sastavljate naredbe pojavili kvadrat i trokut u obliku koji predstavlja poče-tak, a lijevo ispod Moji blokovi su dvije naredbe: kvadrat i trokut.
Dodajte naredbe za crtanje kvadrata bloku kvadrat i naredbe za crtanje troku-ta bloku trokut. Crtanje kućice neka poč-ne klikom na . Preostaje samo nacrta-ti kvadrat pomoću potprograma kvadrat i trokut pomoću potprograma trokut.
Rješenje u datoteci 74Cvjezba6.sb3.
Slika 15. Kućica
Slika 16. Zadavanje bloka
Slika 18. Blok kvadrat Slika 19. Blok trokut Slika 20. Skripta za macu
Slika 17. Blokovi kvadrat i trokut
potprogrami - manji dijelovi na koje rastavljamo programblokovi - potprogrami u Scratchu
10 4. Rješavanje problema programiranjem
Vježba 7. Niz kvadrata
Maca treba nacrtati niz od n kvadrata duljine stranice a. Kva-drat treba crtati pomoću potprograma.
Rješenje:
Napravite blok kva-
drat. Zatim kliknite Do-daj ulaz (broj ili tekst). U gornjem dijelu prozora pokraj riječi kvadrat po-javit će se bijeli prozor-čić. U njega upišite ime varijable: a.
Kažemo da je a ulazna vrijednost potprograma.
Sastavite potprogram za crtanje kvadra-ta duljine stranice a. Isto kao u prošloj vježbi samo umjesto broja 10 u naredbi idi umetnite varijablu a.
Maca će početi cr-tati kad se klikne na
zelenu zastavicu. Prvo zadajte vrijednosti va-rijablama a i n.
Niz od n kvadrata stranice duljine a nacrtat ćete tako da n puta ponovite naredbe:
� crtanje kvadrata duljine stranice a
� pomak za a do sljedećeg kvadrata u nizu.
Upotrebom potprograma skratili ste glavni program i učinili ga preglednijim. Da niste koristili potprogram, morali bi unutar petlje ponovi n koristiti još jednu petlju ponovi 4 za crtanje kvadrata.
Rješenje u datoteci 74Cvjezba7.sb3.
Slika 21. Niz od 5 kvadrata stranice 50
Slika 22. Zadavanje bloka s ulaznom vrijednosti
Slika 23. Blok kvadrat
Slika 24. Skripta za macu
114. Rješavanje problema programiranjem
Vježba 8. Odsviraj pjesmu
Dodajte proširenje .
Kad se klikne , treba odsvirati pjesmu Puž. Sa-stavite potprogram sviraj notu koji ima dvije ula-zne vrijednosti: ton i trajanje. Npr. ako treba odsvi-rati notu c koja je osminka pisat ćete: c8, gdje je c nota, a 8 trajanje.
Rješenje:
Istražite malo naredbe za sviranje. Postavite u skriptni prozor naredbu kao na slici 26. i kliknite na nju. Povećajte broj 0.25 na 0.5 pa na 1. Primijetili ste da ton traje dulje što je broj veći. 0.25 je jedna četvrtina i svira se če-tvrtinka. Za 0.5 (jedna polovina) svira se polovinka, a za 1 svira se cijela nota.
U pjesmi Puž imate samo četvrtinke (trajanje = 4) i osminke (trajanje = 8). Znači da trajanje note možete zadati naredbom:
.
Pitate se koji je to ton označen sa 60? Ili 62? Kliknite u polje u kojem piše broj i otvorit će vam se prava klavijatura na kojoj vidite kojim brojem je označen koji ton.
Da bi program mogao odsvirati pjesmu note sa slike 25. morate prepisa-ti note (bez razmaka) u neku varijablu, npr. pjesma.
pjesma = e8e8e8e8e8e8e8f8e4e8d8f8d4d4d4d4d4d8d8d4
Zadajte potprogram sviraj notu s dvije ulazne vrijednosti: nota i trajanje:
Na početku potprograma zadajte instrument po želji i namjestite tempo.
U pjesmi su samo note d, e i f. Za svaku notu u potprogramu treba jedna ako naredba:
Slika 25. Pjesma Puž
Slika 26. Naredba sviraj ton
Slika 27. Određivanje tona
Slika 28. Blok sviraj notu
12 4. Rješavanje problema programiranjem
Na početku glavnog programa zadajte note pje-sme u varijabli pjesma. Varijabla pjesma ima dvo-struko znakova nego pjesma ima nota, jer ste svaku notu pamtili s dva znaka: d4, e8, itd.
Stoga petlju ponavljaj treba ponavljati za polovi-cu duljine varijable petlja. U varijabli broj pamtite redni broj note u varijabli pjesma. Onda se traja-nje te note nalazi na mjestu broj + 1. U varijable nota i trajanje postavite podatke o noti koja se trenutno svira i pozovite potprogram sviraj notu. Preostaje varijablu broj povećati za 2, jer ste upravo odsvirali jednu notu koja je u varijabli pjesma prikazana s dva znaka.
Rješenje u datoteci 74Cvjezba8.sb3. Slika 29. Glavni program