Upload
others
View
17
Download
2
Embed Size (px)
Citation preview
Vizualizacija postupaka rješavanja programskih zadataka u programskom
jeziku Python
Autor: Zoran Hercigonja, mag.edu.inf.
ISBN 978-953-59549-9-6
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
2
Predgovor
Publikacija „Vizualizacija postupka izvršavanja programa u programskom jeziku Python“, predstavlja
rješenja zadataka pomodu 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, 2017. godine
Vrsta publikacije: Stručna elektronička knjiga
Medij: Mrežna publikacija
Format: A4
Br. stranica: 36
Područje: Računalstvo/Programiranje
ISBN 978-953-59549-9-6
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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 pomodu 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
sljededi korak u programiranju to jest ukazuje na sljededu naredbu koja de 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šdu 2.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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 de se spremiti izračunata površina kvadrata ili pravokutnika.
Varijabli p pridružena je vrijednost 0. U idudem 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 de
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 de se blok naredbi u else dijelu if-else odluke.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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. 2017
6
Zadatak 2:
• Unesi tri dvoznamenkasta broja
• Izračunati sumu tri dvoznamenkasta broja koji su vedi od broja 55
• Ukoliko su sva tri broja veda 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 pomodu 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 veda od vriejdnsoti 55. Desno vidimo unesene
brojeve odnosno vrijednosti varijabli a,b,c. Vrijednosti idu redom: 56,96,78. Sljedede što de program
učiniti je ispisati redom unesene vrijednosti.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
7
Unesene vrijednosti su ispisane na monitoru. Postavljamo variajblu s u koju demo računati sumu.
Vriejdnost varijable s postavljamo na nulu. Zašto postavljamo vriejdnost variajble na nulu? Bududi 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 sljededem koraku demo vrijednost
varijable a=56 usporeditis vrijednošdu 55. Nakon provjere, utvrđeno je da je 56 vede od 55 i
vrijednost varijable s se mijenja u 56. Prelazimo na ispitivanje idudeg uvjeta.
Idudi je uvjet isto zadovoljen jer je broj 96 vedi od 55. Sadržaj varijable s se uvedava za taj broj.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
8
Iznimno je interesantan sljededi 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 ved
nalazi broj 56 i njemu dodamo broj 96 na način da pišemo s=b tada bismo postojedi broj 56
prebrisali brojem 96. Ako pišemo s=s+b primjerice, osigurali smo da prethodni sadržaj smješten u
varijablu s bude zapamden i uvedan za neki broj na primjer 96 u našem slučaju.
Provjeravamo i tredi uvjet.
I tredi uvjet je zadovoljen to jest broj 78 je vedi od 55 pa se suma uvedava 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 vedih od 55.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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 vedi od trede, sigurno se radi o geometrijskom liku trokuta. Ukoliko je
suma dvije stranice manja od duljine trede, 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 treda 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. 2017
10
Programsko rješenje:
Rješenje pomoću vizualizatora:
Ved 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. 2017
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 pripadajudih trokuta. Vrijednosti
varijabli a,b,c se ispituju po redu od prve if odluke do odgovarajude 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 sljededi korak
preskače naredbu print(„Jednakokračni“). U idudoj 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. 2017
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
de u sljededem koraku biti vidljivo na monitoru.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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
mogude riješiti uzastopnim elif odlukama.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
14
Zadatak 4:
• Omoguditi korisniku odabir jedne od 4 aritmetičke operacije (+,-,*,/).
• Nakon što korisnik odabere jednu od operacija
• omoguditi unos dva broja nad kojima de se operacija izvršiti
• Nakon toga ispisati rezultat operacije.
Postupak rješavanja:
Nasludujemo da ovaj zadatak možemo riješiti pomodu 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 demo koristiti elif odluku koja nam omogudava
višestruko postavljanje uvjeta. Naravno ovo možemo riješiti pomodu 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 omogudava 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 de se
operacija izvesti. Dakel potrebne su nam dvije varijable u koje demo spremati vriejdnosti brojeva te
treda varijabla u koju de 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. 2017
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. Bududi da smo operacije označili
rednim brojevima i bududi 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 idudu provjeru.
Ni sljededi uvjet nije ispunjen. Naš odabir (broj 3) nije jednak broju 2. Prelazi se na provjeru slejdedeg
uvjeta.
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
16
Sljededi vujet je ispunjen: 3==3. Sada program prelazi na blok naredbi za unos dva cijela broja i ispis
njihovog rezultata. Primjedujemo da su varijable unosa a i b popunjene vrijednostima 2 i 6. U
idudem 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 sljededi 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. 2017
17
Zadatak 5:
• Omoguditi unos 5 ocjena.
• Izračunati prosjek ocjena računanjem srednje ocjene.
• U slučaju negativnih ocjena ispisati poruku: Nije mogude izračunati prosjek ocjena; učenik
ima, ‘n’ , negativnih ocjena
Postupak rješavanja:
Za početak, potrebne su nam četiri varijable. U jednu varijablu de se spremati zbroj prolaznih ocjena
z, a u drugu broj negativnih ocjena n. Zatim je potrebna varijabla u koju de 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 ponavljajudi 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 mogude 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. 2017
18
Rješenje pomoću vizualizatora:
U početku je napravljena inicijalizacija varijabli z,n,p te se prelazi na for petlju. For petlja omogudava
unos pet ocjena. Rang petlje odredili smo na pet ocjena prema tekstu zadatka. U svrhu
demonstracije, koristiti de se samo prolazne ocjene. Bududi da se if-else odluka nalazi unutar tijela
for petlje, nakon unosa svake ocjene, provjeravati de 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 uvedavati
postojedu vrijednost varijable za novu vrijednost nego se postojeda vrijednost povedava za jedan.
Druga varijabla z zadana je u obliku z=z+o. Postojeda vrijednost varijable z uvedava 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. 2017
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. Idudi 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. Bududi da nije bilo negativnih
ocjena, prelazi se na ispis srednje ocjene na što ukazuje crvena strelica kao sljededi 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. 2017
20
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
21
Zadatak 6:
• Napisati program koji korisniku omogudava određivanje broja učenika
• te omogudava 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 de omoguditi
višestruk unos imena učenika. Sam korisnik određuje koliko učenika želi unijeti. To je potrebno
odraditi pomodu varijable za unos na početku programa. Varijablu unosa demo postaviti u rang petlje
na mjesto završne vrijednosti, jer de se petlja izvršavati upravo za broj unesenih učenika. Ako korisnik
unese pet učenika, petlja de se izvršavati pet puta. Unutar tijela petlje, potrebna je dodatna varijabla
u koju de 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.
Idudi 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. 2017
22
Prvo uneseno ime je „Marko“ i spremljeno u varijablu ime. Crvena strelica ukazuje na sljededi korak:
ispis pozdravne poruke s imenom.
Na monitoru se ispisala poruka Dobar dan Marko. Program se ponovno vratio na for petlju koja de 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. 2017
23
Zadatak 7:
• Napisati program koji de 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 de omoguditi generiranej brojeva do 10. Zatim demo
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 de 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 de se rabiti izraz poput „{0:5}“ kojim demo
odrediti razmak između redaka i stupaca. Konkretno to znači razmak od pet mjesta u memoriji koja
de 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. 2017
24
Rješenje pomoću vizualizatora:
U prvom koraku, izgenerirao se prvi redak u for petlji retka. Sada de 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 de 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 idudi redak, svaka vrijednost for
petlje stupca de 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. 2017
25
Iz priloženog vidimo da se u varijabli red nalazi vrijednost 2. Time je naznačena vrijednost retka s
kojom de se množiti svaka iduda 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. 2017
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 omoguditi unos elemenata niza preko tipkovnice. Za višestruki unos
elemenata niza, koristiti demo for petlju ograničenu na pet unosa. Nakon unosa, napraviti demo ispis
elemenata prvog niza. Tu de 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
demo postidi postavljanjem uvjeta za provjeru parnosti brojeva. Dakle koristiti demo if-else odluku.
Kako bi provjerili koji su brojevi parni, koristiti demo 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 demo ostatak. U suprotnom ako je zadani element niza djeljiv s dva ostatka nede 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 omoguditi 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 demo
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. 2017
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 sljededem koraku, unesen je prvi element niza niz1. Njegova vrijednost je parni broj 4. Programska
petlja for de 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. 2017
28
Prvi niz niz1 je popunjen sa sljededim 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. 2017
29
Stigli smo i do dijela programskog koda u kojem demo 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 idudi
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 idudi parni broj smješta na idudu 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 idudi 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 tredeg 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. 2017
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 tredeg 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. 2017
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 de omoguditi beskonačan broj ponavljanja dok je
uvjet ispunjen. Naravno govorimo o programskoj petlji while.Da bi korisniku bila data višestruka
mogudnost korištenja kalkulatora to jest odabira operacija i računanja, moramo omoguditi 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 de nam potrebna naredba
skoka: break. Pomodu nje demo izadi iz programa kada korinsik odabere opciju 5. Izlaz iz programa.
Svaku operaciju demo označiti nekim brojem kako bi lakše mogli uspostaviti provjeru uvjeta u
programskoj strukturi odluka. U ovom zadatku demo koristiti elfi odluku. Naime elif odluka de
omoguditi ispitivanje uvjeta na način da ako uvjet nije ispunjen, prelazi se na sljededi. Kada se uvjet
ispuni, izvršava se blok naredbi unutar elif-a i program se vrada u izvorno stanje.Unutar svakog elif-a
moramo kreirati varijable za unos brojeva nad kojima de 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. 2017
32
Programsko rješenje:
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python
Zoran Hercigonja, mag.edu.inf. 2017
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. 2017
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. 2017
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. 2017
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.
ISBN 978-953-59549-9-6