Vizualizacija postupaka rjeĹĄavanja programskih zadataka u programskom jeziku Python
Autor: Zoran Hercigonja, mag.edu.inf. ISBN 978-953-8200-16-8
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Predgovor
2
Publikacija „Vizualizacija postupka izvršavanja programa u programskom jeziku Python“, predstavlja rješenja zadataka pomoću online visualizatora programskih jezika na stranici www.pythontutor.com. Publikacija je namijenjena učenicima srednje škole različitih usmjerenja s namjerom za usvajanje i učenje temeljnih koncepata programiranja u programskom jeziku Python. Svaki primjer zadatka je vizualiziran i detaljno objašnjen preko online vizualizatora programskih rješenja u Pythonu. Programski zadaci objedinjuju pojedine programske strukture te su poredani od lakšeg prema težem. Za svaki zadatak je naveden tekst zadatka, gotovo rješenje te vizualizacija rješenja po koracima. Publikacija je pisana u duhu metodike informatike i njezina svrha je pojednostaviti učenje programiranja u Pythonu.
Impressum Naslov: Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Autor: Zoran Hercigonja, mag.edu.inf. Lektor: Adela Brozd Nakladnik: Vlastita naklada autora Mjesto i godina izdavanja: Imbriovec Jalžabetski 45c, 11.11. 2019. godine Vrsta publikacije: Stručna elektronička knjiga Medij: Mrežna publikacija Format: A4 Br. stranica: 36 Područje: Računalstvo/Programiranje Drugo izdanje
ISBN 978-953-8200-16-8
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 1:
3
•
Unesite 2 broja
•
Provjeriti jesu li uneseni brojevi jednaki ili različiti
•
Ako su brojevi jednaki izračunati površinu kvadrata prema formuli (p=a**2)
•
U suprotnom izračunati površinu pravokutnika prema formuli (a*b)
Postupak rješavanja: Zadatak se može riješiti pomoću dvije varijable za unnos brojeva te jedna provjera postavljenog uvjeta. U ovom zadatku za provjeru uvjeta dovoljan je samo jedan if-else uvjet. Programsko rješenje:
•
Rješenje pomoću vizualizatora:
Zelena strelica pokazuje na trenutno stanje izvršavanja programskog koda. Crvena strelica ukazuje na sljedeći korak u programiranju to jest ukazuje na sljedeću naredbu koja će se izvršiti. Trenutno se izvršava prva anredba unos stranice a. S desne strane vidimo u Global frame da je varijabla a popunjena sdržajem odnosno vrijednošću 2.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
4
Uspješno smo unijeli i vrijednost varijable b koja iznosi 3. Crvena strelica ukazuje na varijablu p=0 koja je trenutno prazna i u nju će se spremiti izračunata površina kvadrata ili pravokutnika.
Varijabli p pridružena je vrijednost 0. U idućem koraku na koji ukazuje crvena strelica provjerava se uvjet a==b to jest uspoređuju se vrijednosti unesenih stranica. U našem slučaju provjera uvjeta će ukazati na različitost (a!=b) stranica a i b.
U koraku provjere uvjeta, vrijednost varijable p ostaje na nuli. Crvena strelica ukazuje na blok programskog koda u else dijelu if-else odluke. Uvjet if-else odluke glasi: ako je a==b onda izračunaj površinu kvadrata; u suprotnom izračunaj površinu pravokutnika. Upravo zbog tako postavljenih uvjeta i naredbi programskog koda, izvršiti će se blok naredbi u else dijelu if-else odluke.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
5
U varijablu p se upisuje vrijednost 6. Izračunata površina pravokutnika nakon unesenih stranica 2 i 3 iznosi ukupno 6. U suprotnom da su stranice bile jednake izvršio bi se bloki naredbi u if dijelu odluke i u varijablu p bi se upisao sasvim neka druga vriejdnost.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 2: •
Unesi tri dvoznamenkasta broja
•
Izračunati sumu tri dvoznamenkasta broja koji su veći od broja 55
•
Ukoliko su sva tri broja veća od 55 izračunati sumu brojeva i ispisati tu sumu
•
U suprotnom ne učiniti ništa
Postupak rješavanja:
6
Ovaj zadatak možemo riješiti pomoću tri uzastopne if odluke bez else dijela. U svakoj odluci ispitujemo pojedinačni unos odnosno vrijednosti varijabli a,b i c. Ukoliko je samo jedna od tih vrijednsoti manja od zadane vbrijednosti 55, program ne ispisuje sumu. U suprotnom brojevi se međusobno zbroje i ispisuje se suma brojeva. Programsko rješenje:
•
Rješenje pomoću vizualizatora:
U prvom koraku smo unijeli uzastopno tri broja veća od vriejdnsoti 55. Desno vidimo unesene brojeve odnosno vrijednosti varijabli a,b,c. Vrijednosti idu redom: 56,96,78. Sljedeće što će program učiniti je ispisati redom unesene vrijednosti.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
7 Unesene vrijednosti su ispisane na monitoru. Postavljamo variajblu s u koju ćemo računati sumu. Vriejdnost varijable s postavljamo na nulu. Zašto postavljamo vriejdnost variajble na nulu? Budući da je nula neutralni element ona ne mijenja vrijednost nekog broja kada taj broj zbrojimo s nulom što nam je u ovom programu iznimno bitno. Nakon toga prelazi se na ispitivanje uvjeta unesenih vrijednosti varijabli a,b,c.
Iz priloženog vidimo da je sadržaj variajble s jednak nuli. U sljedećem koraku ćemo vrijednost varijable a=56 usporeditis vrijednošću 55. Nakon provjere, utvrđeno je da je 56 veće od 55 i vrijednost varijable s se mijenja u 56. Prelazimo na ispitivanje idućeg uvjeta.
Idući je uvjet isto zadovoljen jer je broj 96 veći od 55. Sadržaj varijable s se uvećava za taj broj.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Iznimno je interesantan sljedeći zapis s=s+a. Zašto to tako pišemo? Kada bismo stavili s=a to bi značilo da vrijednost varijable a premještamo u varijablu s što je u redu. No ako se u varijabli s već nalazi broj 56 i njemu dodamo broj 96 na način da pišemo s=b tada bismo postojeći broj 56 prebrisali brojem 96. Ako pišemo s=s+b primjerice, osigurali smo da prethodni sadržaj smješten u varijablu s bude zapamćen i uvećan za neki broj na primjer 96 u našem slučaju. Provjeravamo i treći uvjet.
8
I treći uvjet je zadovoljen to jest broj 78 je veći od 55 pa se suma uvećava i za broj 78; u nastavku s=s+c. Desno vidimo ponovnu promjenu vriejdnosti varijable s koja sada iznosi 230. Sada je samo potrebno izvršiti naredbu an koju ukazuje crvena strelica print („Suma vecih od 55 je“, s). I na monitoru se ispisuje suma brojeva većih od 55.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 3: •
Unijeti 3 broja i ispitati da li postoji trokut čije su to stranice.
•
Trokut postoji kada je zadovoljen uvjet a+b>c, a+c>b i b+c>a
•
Kada je ovo ispunjeno, provjeriti kakav je trokut: raznostraničan, jednakokračan ili jednakostraničan?
Postupak rješavanja:
9
Za početak možemo inicijalizirati tri varijable za unos tri stranice trokuta. Nakon toga treba provjeriti uvjet postojanosti trokuta. Ako je a+b>c, a+c>b i b+c>a ispunjeno, trokut postoji. Drugim riječima ukoliko je zbroj dvije stranice veći od treće, sigurno se radi o geometrijskom liku trokuta. Ukoliko je suma dvije stranice manja od duljine treće, geometrijski lik sigurno nije trokut. Nakon toga treba preispitati uvjete za pojedinu vrstu trokuta. Ako govorimo o jednakostraničnom trokutu onda su sve stranice jednake to jest sve vriejdnosti varijabli a,b,c su iste.Uvjet bi glasio a==b==c. Ako imamo raznostraničan trokut, onda kao što sama riječ govori, stranice su to jest vrijednosti varijabli su različite. Uvjet bi onda izgledao a!=b!=c. Kada govorimo o jednakokračnom trokutu, onda mislimo na trokut čije su dvije i dvije stranice jednake duljine. Ovjde je potrebno ispitati svaku stranicu na način da postavimo uvjet da su dvije stranice jednake, a jedan različita. Npr. a==b & b!=c. Naravno treba takav uvjet postaviti za sve tri stranice spomenutog trokuta. Ovdje smo ispitivali da su stranice a i b jednake duljine, a da je treća stranica različita od b; sada treba ispitati da je b!=a i nakon toga da je c!=a u zadnjem dijelu uvjeta.
Provjera postojanja geometrijskog lika trokuta. Ako je zbroj dviju pripadnih stranica veći od treće stranice, onda trokut postoji. Ukoliko je zbroj dvije stranice trokuta manji od treće znači trokut ne postoji. Ako je zbroj dviju stranica veći od treće onda trokut ima svoj vrh kao u sljedećem primjeru.
a+b>c => 2+2>2
U primjeru ispod zbroj dviju stranica je manji od treće što znači da trokut nema pripadajući vrh i može se pretvoriti u pravac. b=1
a=1
c=6
a+b>c => 1+1<6
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Programsko rješenje:
10
•
Rješenje pomoću vizualizatora:
Već u prvom koraku, načinjena su tri unosa vrijednosti varijabli a,b,c. Nakon toga se prelazi na ispitivanje uvjeta o postojanju trokuta kao geometrijskog lika.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
11 Uvjet je uspješno ispunjen i na monitoru se ispisuje da postoji trokut. Nakon toga, prelazi se po višestrukom if odlučivanju i provjeravaju se uvjeti za neki od pripadajućih trokuta. Vrijednosti varijabli a,b,c se ispituju po redu od prve if odluke do odgovarajuće odluke. U prvom if-u, vidljivo je da su a i b jednake stranice, ali drugi dio uvjeta b!=c nije zadovoljen.
Primjetimo kako se na monitoru ništa ne ispisuje i crvena strelica koja ukazuje na sljedeći korak preskače naredbu print(„Jednakokračni“). U idućoj if-odluci stranice c i b su jednake ali ne vrijedi uvjet b!=a.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
12
Ponovno je preskočen ispis print(„Jednakokračni“). Prelazi se na if-odluku za ispitivanje uvjeta jednakostraničnog trokuta.
Vidimo da je uvjet ispunjen i crvena strelica ukazuje na ispis naredbe print(„Jednakostranican“) što će u sljedećem koraku biti vidljivo na monitoru.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
13
Na monitoru je ispisano da je trokut s unesenim vrijednostima Jednakostraničan. Program nakon provjere uvog uvjeta završava i preskače else dio odluke. Ovaj programski primjer, također je moguće riješiti uzastopnim elif odlukama.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 4: •
Omogućiti korisniku odabir jedne od 4 aritmetičke operacije (+,-,*,/).
•
Nakon što korisnik odabere jednu od operacija
•
omogućiti unos dva broja nad kojima će se operacija izvršiti
•
Nakon toga ispisati rezultat operacije.
Postupak rješavanja:
14
Naslućujemo da ovaj zadatak možemo riješiti pomoću odluka. Naravno od standardne odluke if-else ne bi imali baš previše koristi. Potrebno je odabrati jednu od četiri operacije. Dakle, trebala bi postojati četiri uvjeta odnosno četiri odluke. Ovdje ćemo koristiti elif odluku koja nam omogućava višestruko postavljanje uvjeta. Naravno ovo možemo riješiti pomoću if-else uvjeta, ali bismo dobili pretjerano kompleksan zapis programskog koda. Morali bismo rabiti ugniježđeni if. Isto tako mogli bismo koristiti i samo if-ove kao u prethodnom primjeru. No iz prethodnog primjera, vidjeli smo da je program nastavio s izvršavanjem i ispitivanjem uvjeta neovisno o tome što je uvjet bio prethodno ispunjen. Elif odluka omogućava da nakon što uvjet bude ispunjen, program se prebacuje na izvršavanje bloka naredbi unutar elif-a i dalje ne ispituje uvjete. Na samom početku, potrebna je varijabla unosa. Možemo odabrati samo jednu od aritmetičkih operacija. Ukoliko odaberemo neku od operacija, program zatraži unos dva broja nad kojima će se operacija izvesti. Dakel potrebne su nam dvije varijable u koje ćemo spremati vriejdnosti brojeva te treća varijabla u koju će se spremiti rezultat operacije. Unutar bloka naredbi elif odluke možemo jednako imenovati varijable za unos brojeva i spremanje rezultata za sve četiri aritmetičke operacije.One su lokalne varijable koje vrijede samo unutar bloka elif odluke.
Programsko rješenje:
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
•
Rješenje pomoću vizualizatora:
15
U izborniku je odabran broj 3 koji označava operaciju zbrajanja dva broja. U elif odluku stavljamo ispitivanje uvjeta. Crvena strelica ukazuje na pro ispitivanje uvjeta. Budući da smo operacije označili rednim brojevima i budući da smo u varijablu unosa unijeli broj, logično je da u uvjetima ispitujemo poklapanje brojeva. U prvom uvjetu, brojevi se ne poklapaju i prelazi se na iduću provjeru.
Ni sljedeći uvjet nije ispunjen. Naš odabir (broj 3) nije jednak broju 2. Prelazi se na provjeru slejdećeg uvjeta.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
16 Sljedeći vujet je ispunjen: 3==3. Sada program prelazi na blok naredbi za unos dva cijela broja i ispis njihovog rezultata. Primjećujemo da su varijable unosa a i b popunjene vrijednostima 2 i 6. U idućem koraku brojevi se zbrajaju u program ispisuje rezultat zbrajanja.
Na monitoru je ispisan rezultat zbrajanja: Zbroj = 8. Za primjetiti je da u programskom kodu nema crvene strelice koja bi ukazivala na sljedeći korak. Program je završio s radom nakon što je izvršne blok naredbi uslijed ispunjenja uvjeta elif odluke.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 5: •
Omogućiti unos 5 ocjena.
•
Izračunati prosjek ocjena računanjem srednje ocjene.
•
U slučaju negativnih ocjena ispisati poruku: Nije moguće izračunati prosjek ocjena; učenik ima, ‘n’ , negativnih ocjena
Postupak rješavanja:
17
Za početak, potrebne su nam četiri varijable. U jednu varijablu će se spremati zbroj prolaznih ocjena z, a u drugu broj negativnih ocjena n. Zatim je potrebna varijabla u koju će se spremiti rezultat izračuna srednje ocjene ili prosjeka ocjena p. Uz to potrebna je varijabla unosa ocjena. Da bi program radio kako treba, potrebno je uključiti jednu for petlju za ponavljajući niz unosa ocjena te dvije if-else odluke: jedna za ispitivanje broja negativnih ocjena, a druga za odlučivanje o ispisu srednje ocjene ili poruke Nije moguće izračunati prosjek ocjena; učenik ima, ‘n’ , negativnih ocjena. Programsko rješenje:
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
•
Rješenje pomoću vizualizatora:
18
U početku je napravljena inicijalizacija varijabli z,n,p te se prelazi na for petlju. For petlja omogućava unos pet ocjena. Rang petlje odredili smo na pet ocjena prema tekstu zadatka. U svrhu demonstracije, koristiti će se samo prolazne ocjene. Budući da se if-else odluka nalazi unutar tijela for petlje, nakon unosa svake ocjene, provjeravati će se da li je ocjena prolazna ili neprolazna (negativna). I tako pet puta. Ako je ocjena prolazna onda se sprema u variajblu n; u suprotnom se sprema u varijablu z. Za primijetiti je da je variajbla n zadana kao n=n+1. U nju se spremaju samo negativne ocjene, a postoji svega jedna negativna ocjena. Tako da nema potrebe svaki puta uvećavati postojeću vrijednost varijable za novu vrijednost nego se postojeća vrijednost povećava za jedan. Druga varijabla z zadana je u obliku z=z+o. Postojeća vrijednost varijable z uvećava se svaki puta za onu ocjenu koju je koirsnik unio u varijablu o.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Nakon prvog unosa unesene ocjene su prolazne redom: 2,4,3,2,5. Vidimo da je brojač petlje došao do vrhunca odnosno gornje granice. Idući korak u programu je ispitivanje uvjeta o negativnim ocjenama. Ako postoji negativna ocjena, potrebno je ispisati broj tih negativnih ocjena; u suprotnom ispisuje se srednja ocjena.
19
Zelena strelica ukazuje da se izvršila provjera uvjeta negativnih ocjena. Budući da nije bilo negativnih ocjena, prelazi se na ispis srednje ocjene na što ukazuje crvena strelica kao sljedeći korak programa.
Nakon ispisa na monitoru, program se završava.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rjeĹĄavanja programskih zadataka u programskom jeziku Python
20
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 6: •
Napisati program koji korisniku omogućava određivanje broja učenika
•
te omogućava unos imena učenika
•
i paralelni ispis pozdravne poruke s imenom
•
pozdravna poruka može izgledati kao („Dobar dan“, IME)
Postupak rješavanja:
21
Za rješavanje ovog programskog problema, potrebna je jedna programska petlja koja će omogućiti višestruk unos imena učenika. Sam korisnik određuje koliko učenika želi unijeti. To je potrebno odraditi pomoću varijable za unos na početku programa. Varijablu unosa ćemo postaviti u rang petlje na mjesto završne vrijednosti, jer će se petlja izvršavati upravo za broj unesenih učenika. Ako korisnik unese pet učenika, petlja će se izvršavati pet puta. Unutar tijela petlje, potrebna je dodatna varijabla u koju će se spremati ime učenika. Paralelno s upisom imena, a prema tekstu zadatka, potrebno je ispisati pozdravnu poruku s imenom učenika. Programsko rješenje:
•
Rješenje pomoću vizualizatora:
Za početka je određen broj učenika: 3. Varijabla unosa broja učenika n=3 što vidimo iz predloženog. Idući korak programa ukazuje na izvršavanje petlje for onjoliko puta koliko smao zadali. U našem slučaju to je tri puta odnosno tri imena.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
22 Prvo uneseno ime je „Marko“ i spremljeno u varijablu ime. Crvena strelica ukazuje na sljedeći korak: ispis pozdravne poruke s imenom.
Na monitoru se ispisala poruka Dobar dan Marko. Program se ponovno vratio na for petlju koja će se izvršiti još dva puta.
For petlja se izvrtjela još dva puta i ispisala još dva imena s pozdravnim porukama: Borna i Matej što je vidljivo desno na monitoru.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 7: •
Napisati program koji će generirati tablicu množenja brojeva do 10
•
Tablica treba izgledati kao na slici
23
Postupak rješavanja: Za rješenje ovog programa, potrebne su nam dvije for petlje. Kako bi dobili tablicu, moramo pomnožiti retke sa stupcima. Dvije for petlje će omogućiti generiranej brojeva do 10. Zatim ćemo pomnožiti brojeve redaka sa brojevima stupaca i dobiti tablicu. Naravno program mormao osmisliti na način da prva for petlja generira redak odnosno postavi prvi broj s kojim će se množiti generirani brojevi stupaca. Na primjer u prvom ciklusu petlje retka, generira se broj retka 1; s tim brojem se množi svaki broj unutar ranga (1-11) deset brojeva koje generira for petlja stupca. Dakle svaki broj stupca množimo s trenutnim brojem retka. U programu će se rabiti izraz poput „{0:5}“ kojim ćemo odrediti razmak između redaka i stupaca. Konkretno to znači razmak od pet mjesta u memoriji koja će biti prazna da bi se nakon njih upisala vrijednost. Programsko rješenje:
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
•
Rješenje pomoću vizualizatora:
24 U prvom koraku, izgenerirao se prvi redak u for petlji retka. Sada će for petlja stupca unutar tijela for petlje retka, generirati brojeve do 10 i množiti ih s brojem 1 kao brojem prvog stupca.
Nalazimo se upravo unutar for petlje retka. Ona će se izvršiti deset puta i svaku trenutnu vrijednost pomnožiti s vrijednosti retka.
U variajbli red vidimo da se nalazimo još u prvom retku, a u varijabli stupac trenutni broj stupca je 10. To znači da je for petlja obavila svoj posao i ispisala prvi redak tablice množenja brojeva do 10 što je vidljivo na monitoru. Ako nastavimo primjenjivati ovaj postupak za idući redak, svaka vrijednost for petlje stupca će se množiti s brojem retka for petlje retka dva (2).
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
25
Iz priloženog vidimo da se u varijabli red nalazi vrijednost 2. Time je naznačena vrijednost retka s kojom će se množiti svaka iduća vrijednost stupca for petlje stupca.
U posljednjem krugu for petlji, vidimo da su varijable retka i stupca postigle gornju vrijednost (10). Vrijednosti varijabli retka i stupca su međusobno izmnožene što se vidi iz tablice na monitoru.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 8:
26
•
Kreirajte dva niza od 5 elemenata naziva niz1 i niz2
•
Napravite unos elemenata niza niz1 preko tipkovnice
•
Ispišite sve elemente prvog niza niz1
•
Nakon toga premjestite samo „parne“ elemente prvog niza niz1 u drugi kreirani niz niz2
•
ispišite elemente drugog niza niz2.
Postupak rješavanja: Za početak je potrebno inicijalizirati dva niza naziva niz1 i niz2 te ih ograničiti na pet elemenata. Nakon inicijalizacije je potrebno omogućiti unos elemenata niza preko tipkovnice. Za višestruki unos elemenata niza, koristiti ćemo for petlju ograničenu na pet unosa. Nakon unosa, napraviti ćemo ispis elemenata prvog niza. Tu će biti ponovno potrebna for petlja za ispis. Prema zadatku za prvi niz smo koristili dvije for petlje. Sada je potrebno u drugi niz niz2 premjestiti samo parne elemente niza. To ćemo postići postavljanjem uvjeta za provjeru parnosti brojeva. Dakle koristiti ćemo if-else odluku. Kako bi provjerili koji su brojevi parni, koristiti ćemo dijeljenje brojeva s ostatkom odnosno modulo dijeljenje %. Kod modulo dijeljenja gleda se ostatak dijeljenja s nekim brojem. Ako postoji ostatak, zadani broj nije dijeljiv s nekim brojem. U našem slučaju ako zadani element niza nije djeljiv s dva (svi parni brojevi su djeljivi s dva i u postupku dijeljenja ostatak je jednak nuli) nakon operacije dijeljenja, imati ćemo ostatak. U suprotnom ako je zadani element niza djeljiv s dva ostatka neće biti. Dakle modulo dijeljenjem provjeravamo da li zadani broj nakon dijeljenja s određenim brojem ima ostatak. Ukoliko nema ostatka ili je ostatak jednak nuli, zadani broj je djeljiv s određenim brojem. Nakon zadovoljenja uvjeta, moramo omogućiti da se svaki element niza djeljiv s dva (parni element niza) premješta u drugi niz niz2. Za taj posao nam je potrebna još jedna for petlja. Nakon toga ćemo ispisati elemente novog niza niz2. Za to nam je potrebna još jedna for petlja. Programsko rješenje:
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
•
Rješenje pomoću vizualizatora:
27
Za početak, napravljena je inicijalizacija dva niza od pet elemenata. Da zadani nizovi sadržavaju pet elemenata, ukazuju nam indeksi od 0 do 4.
U sljedećem koraku, unesen je prvi element niza niz1. Njegova vrijednost je parni broj 4. Programska petlja for će ponavljati tekst unosa još četiri puta kako je zadano u rangu for petlje.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
28
Prvi niz niz1 je popunjen sa sljedećim brojevima: | 4 | 1 | 6 | 3 | 9|. Crvena strelica u programskom kodu ukazuje na naredbu za ispis svih elemenata prvog niza niz1.
Za ispis elemenata niza koristili smo for petlju ograničenu na završnu vrijednost 5. Petlja je pet puta izvršavala naredbu print(niz1[i]).
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
29
Stigli smo i do dijela programskog koda u kojem ćemo ispitati parnost naših unesenih brojeva. Od unesenih brojeva prvog niza | 4 | 1 | 6 | 3 | 9|, parni su samo 4 i 6. Primjetimo da unutar for petlje koristimo novu varijablu j=0. Koristimo je u izrazu j=j+1. Primjerice da nemamo tog izraza, svaki idući parni broj koji koji treba biti zapisan u drugom nizu niz2, bio bi zapisan na poziciji indeksa 0. Kada upotrijebimo izraz j=j+1 naredili smo programu da svaki idući parni broj smješta na iduću poziciju indeksa zadanog niza. Tako u slučaju kada nakon provjere uvejta, program utvrdi da je broj 4 paran broj i smjesti ga na poziciju niza s indeksom 0 idući prani broj smjesti na poziciju indeksa 1 zadanog niza. Timse smo dobili da se brojevi pravilno raspoređuju unutar nekog niza.
ILUSTRACIJA bez izraza j=j+1: Crvenom bojom su označeni indeksi pozicije niza Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 01| 02| 0 3| 0 4| Nakon prvog kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 0 1| 0 2| 0 3| 0 4| Nakon drugog kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 0 1| 0 2| 0 3| 0 4| Nakon trećeg kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 60| 0 1| 0 2| 0 3| 0 4|
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
ILUSTRACIJA sa izrazom j=j+1: Crvenom bojom su označeni indeksi pozicije niza Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 01| 02| 0 3| 0 4| Nakon prvog kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94|
30
Niz2| 40| 0 1| 0 2| 0 3| 0 4| Nakon drugog kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 0 1| 0 2| 0 3| 0 4| Nakon trećeg kruga petlje i ispitanog uvjeta if niz1[i]%2==0: Niz1 | 40 | 11 | 62 | 33 | 94| Niz2| 40| 6 1| 0 2| 0 3| 0 4|
Iz ilustracija smo shvatili zašto nam je izraz j=j+1 važan kod zapisivanja parnih elemenata niza niz1 u niz2.
Uzastopnom provjerom uvjeta, untvrđenli smo da u niz2 ulaze samo dva parna broja:4 i 6. Za kraj program je ispisao sve elemente niza2.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zadatak 9:
•
Program treba omogućiti korisniku odabir jedne od četiri aritmetičke operacije (+,,*,/)
•
Svakoj operaciji je potrebno dodijeliti neki broj (npr. 1. Zbrajanje, 2. Oduzimanje, 3. Mnozenje, 4. Dijeljenje, 5. Izlaz iz programa)
•
Kada korisnik odabere jednu od navedenih operacija, od njega se traži da unese dva broja i izvrši odabranu operaciju.
31
•
Ispisati rezultat odabrane operacije.
Postupak rješavanja: Za početak nam treba programsak struktura koja će omogućiti beskonačan broj ponavljanja dok je uvjet ispunjen. Naravno govorimo o programskoj petlji while.Da bi korisniku bila data višestruka mogućnost korištenja kalkulatora to jest odabira operacija i računanja, moramo omogućiti da se program „vrti“ tako dugo dok traje uvjet (while 1 ili TRUE) odnosno dok sam korisnik ne izađe iz programa to jest dok bude (while 0 ili FALSE). Kao izlaz iz programa biti će nam potrebna naredba skoka: break. Pomoću nje ćemo izaći iz programa kada korinsik odabere opciju 5. Izlaz iz programa. Svaku operaciju ćemo označiti nekim brojem kako bi lakše mogli uspostaviti provjeru uvjeta u programskoj strukturi odluka. U ovom zadatku ćemo koristiti elfi odluku. Naime elif odluka će omogućiti ispitivanje uvjeta na način da ako uvjet nije ispunjen, prelazi se na sljedeći. Kada se uvjet ispuni, izvršava se blok naredbi unutar elif-a i program se vraća u izvorno stanje.Unutar svakog elif-a moramo kreirati varijable za unos brojeva nad kojima će se izvršiti operacija. Nazivi varijabli mogu biti jednaki unutar svakog bloka elif odluke.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rjeĹĄavanja programskih zadataka u programskom jeziku Python
Programsko rjeĹĄenje:
32
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
•
Rješenje pomoću vizualizatora:
Za potrebe pokretanja i testiranja ovog programa, biti će odabrana samo jedan operacija i opcija izlaza iz programa.
33
Za početak program je kreirao izbornik koji olakšava korisniku odabire neke od operacija. Kreirana je varijabla izbor=0 u koju će se spremati korisnikov odabir. Ujedno sadržaj iste varijable će se uspoređivati sa zadanim uvjetima u elif odlukama.
Od pet aritmetičkih operacija, odabrana je operacija pod rednim brojem 3 (množenje) što je vidljivo u varijabli izbor=3. Sada slijedi provjera uvjeta. Program prolazi kroz prva dva uvjeta. Budući da uvjeti nisu zadovoljeni, prelazi se na idući.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
34
Treći uvjet je ispunjen i program izvršava blok naredbi unutar tog elif-a. Od korisnika se traži unos množenika i množitelja. Unesene su vrijednosti: 3 i 4. U idućem koraku program računa produkt ta dva broja.
Produkt je izračunat i ispisan na monitoru desno. Produkt brojeva 3*4 je 12. Po završetku bloka naredbi, program se vraća na početak gdje je while 1. Dok je while TRUE program će ponovno ispisati naslovnicu i omogućiti korisniku unos željene opcije.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
35
Ovaj puta korisnik odabire opciju 5 što je vidljivo iz varijable izbor=5. Program ispituje uvjete i prolazi svakom elif odlukom.
Program je naišao na zadovoljen uvjet i na monitoru desno ispisuje prigodnu poruku: „Hvala što ste koristili kalkulator“.
Zoran Hercigonja, mag.edu.inf. 2019
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
36
Zoran
Hercigonja,
rođen
je
13.04.1990.
školu "Petar Zrinski " završio je 2005. godine u Jalžabetu.
godine
u
Varaždinu.
Osnovnu
Iste godine upisuje Elektrostrojarsku
školu Varaždin, smjer "Tehničar za računalstvo" i uspješno položenom maturom završava 2009. godine. Daljnje školovanje nastavlja na Fakultetu organizacije i informatike Varaždin 2009. godine.Preddiplomski studij "Informacijski sustavi" završava 2013. godine. Nastavlja studirati na istom fakultetu na diplomskom studiju za informatičare usmjerenja "Informatika u obrazovanju" koji završava 2015. godine s velikom pohvalom (Magna cum laude). Akademske godine 2013/2014. dobitnik je dekanove nagrade za najboljeg studenta diplomskog studija informatike. Pripravnički staž obavlja na Drugoj gimnaziji Varaždin u razdoblju između 2015. i 2016. godine. Državno-stručni ispit za nastavnika informatike uspješno polaže na V. gimnaziji Zagreb 2017. godine. Radi kao profesor informatike i matematike. Autor je više stručnih radova koje redovito objavljuje u časopisima: Pogled kroz prozor, International Journal of Digital Technology and Economy, Matematika i škola, zborniku Carnetove korisničke konferencije te u Zborniku radova Veleučilišta u Šibeniku. Također je jedan od nagrađenih sudionika u izradi metodičke preporuke iz nastave informatike u sklopu kurikularne reforme “Škola za život”.
ISBN 978-953-8200-16-8
Zoran Hercigonja, mag.edu.inf. 2019