Vizualizacija postupaka rješavanja programskih zadataka u ... · Vizualizacija postupaka...

36
Vizualizacija postupaka rješavanja programskih zadataka u programskom jeziku Python Autor: Zoran Hercigonja, mag.edu.inf. ISBN 978-953-59549-9-6

Transcript of Vizualizacija postupaka rješavanja programskih zadataka u ... · Vizualizacija postupaka...

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