36
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 …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

Vizualizacija postupaka rješavanja programskih zadataka u programskom

jeziku Python

Autor: Zoran Hercigonja, mag.edu.inf.

ISBN 978-953-8200-16-8

Page 2: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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

Page 3: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 4: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 5: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 6: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 7: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 8: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 9: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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

Page 10: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 11: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 12: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 13: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 14: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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:

Page 15: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 16: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 17: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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:

Page 18: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 19: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 20: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python

Zoran Hercigonja, mag.edu.inf. 2019

20

Page 21: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 22: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 23: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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:

Page 24: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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).

Page 25: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 26: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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:

Page 27: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 28: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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]).

Page 29: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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|

Page 30: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 31: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 32: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python

Zoran Hercigonja, mag.edu.inf. 2019

32

Programsko rješenje:

Page 33: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 34: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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.

Page 35: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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“.

Page 36: Vizualizacija postupaka rješavanja programskih …...Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Zoran Hercigonja, mag.edu.inf. 2019 3 Zadatak

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