Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
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
Zoran Hercigonja, mag.edu.inf. 2019
2
Predgovor
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, 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
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
3
Zadatak 1:
• 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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
6
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:
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
8
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.
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
9
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:
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.
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.
a+b>c => 2+2>2
a=1 b=1
c=6 a+b>c => 1+1<6
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
10
Programsko rješenje:
• 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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
14
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:
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:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
15
• Rješenje pomoću vizualizatora:
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
17
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:
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:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
18
• Rješenje pomoću vizualizatora:
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
19
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.
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
20
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
21
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:
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
23
Zadatak 7:
• Napisati program koji će generirati tablicu množenja brojeva do 10
• Tablica treba izgledati kao na slici
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:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
24
• Rješenje pomoću vizualizatora:
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).
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
26
Zadatak 8:
• 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:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
27
• Rješenje pomoću vizualizatora:
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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]).
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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|
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
30
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|
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
31
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.
• 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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
32
Programsko rješenje:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
33
• Rješenje pomoću vizualizatora:
Za potrebe pokretanja i testiranja ovog programa, biti će odabrana samo jedan operacija i
opcija izlaza iz programa.
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
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“.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2019
36
Zoran Hercigonja, rođen je 13.04.1990. godine u Varaždinu. Osnovnu
školu "Petar Zrinski " završio je 2005. godine u Jalžabetu. 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