74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2....

12
1 4. 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 isprobati kli- kom na nju. Instalirajte Scratch Desktop s poveznice: https://scratch.mit.edu/ download Tablica 1. Naredbe za rad s riječima Naredba Opis Primjer vrać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

Transcript of 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2....

Page 1: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 2: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 3: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 4: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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.

Page 5: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 6: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 7: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 8: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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:

Page 9: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 10: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 11: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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

Page 12: 74C. Vizualno programiranje · 2020. 4. 21. · 4. Rješavanje problema programiranjem 3 Vježba 2. Je li riječ palindrom Sastavimo program u kojem maca pita leteću macu je li neka

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