41
SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO-MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Jelena Štimac ALGORITAMSKO RJEŠAVANJE PROBLEMA U NASTAVI INFORMATIKE U SREDNJOJ ŠKOLI KORIŠTENJEM PROJEKTNE NASTAVE Diplomski rad Voditelj rada: Dr. sc. Goran Igaly Zagreb, 2015.

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

Embed Size (px)

Citation preview

Page 1: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

SVEUČILIŠTE U ZAGREBU

PRIRODOSLOVNO-MATEMATIČKI FAKULTET

MATEMATIČKI ODSJEK

Jelena Štimac

ALGORITAMSKO RJEŠAVANJE PROBLEMA U NASTAVI INFORMATIKE U

SREDNJOJ ŠKOLI KORIŠTENJEM PROJEKTNE NASTAVE

Diplomski rad

Voditelj rada:

Dr. sc. Goran Igaly

Zagreb, 2015.

Page 2: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

Ovaj diplomski rad obranjen je dana _____________ pred nastavničkim povjerenstvom u

sastavu:

1. __________________________, predsjednik

2. __________________________, član

3. __________________________, član

Povjerenstvo je rad ocijenilo ocjenom _____________________ .

Potpisi članova povjerenstva:

1. __________________________

2. __________________________

3. __________________________

Page 3: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

Sadržaj 1. Uvod ........................................................................................................................................ 3

2. Projektna nastava .................................................................................................................... 5

2.1 Projekt ............................................................................................................................. 5

2.2 Cilj projektne nastave ...................................................................................................... 5

2.3 Faze projektne nastave ................................................................................................... 5

3. Nastavni plan i program iz informatike za srednje škole ........................................................ 7

4. Programski jezik Python .......................................................................................................... 8

4.1 Prednosti odabira programskog jezika Python ............................................................... 8

4.2 Povijest programskog jezika Python ............................................................................... 8

4.3 Interaktivno sučelje i uređivački dio ............................................................................... 9

5. Projekt u nastavi informatike u srednjoj školi korištenjem programskog jezika Python ...... 10

5.1 Odabir teme .................................................................................................................. 10

5.2 Priprema za projekt ....................................................................................................... 10

5.3 Postavljanje zadatka ...................................................................................................... 13

5.4 Podjela u timove i biranje predstavnika tima ............................................................... 13

5.5 Odabir problema ........................................................................................................... 14

5.6 Podjela zadataka po timovima ...................................................................................... 14

5.7 Trajanje projekta ........................................................................................................... 15

5.8 Prikupljanje materijala .................................................................................................. 15

5.9 Precizno zadavanje zadataka ........................................................................................ 17

5.10 Izrada početnih programa ............................................................................................. 17

5.11 Kritika rezultata i nove smjernice .................................................................................. 20

5.12 Prezentacija finalnih rješenja timova ............................................................................ 20

5.13 Integriranje rezultata u cjeloviti proizvod ..................................................................... 28

5.14 Uspostavljanje veze s nastavnim planom i programom ............................................... 34

5.15 Prezentacija proizvoda korisnicima ............................................................................... 34

5.16 Usporedba verzija 2.7 i 3.3 programskog jezika Python ............................................... 34

6. Zaključak ................................................................................................................................ 35

Page 4: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

2

7. Literatura ............................................................................................................................... 36

8. Sažetak .................................................................................................................................. 37

9. Summary ............................................................................................................................... 38

10. Životopis ............................................................................................................................... 39

Page 5: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

3

1. Uvod

Kvaliteta nastave u školama Republike Hrvatske često ovisi o stručnosti, kvaliteti i ambiciji

nastavnika koji je izvodi, o suradnji meĎu kolegama unutar škole, te o suradnji meĎu

kolegama iz istog predmeta na gradskoj, županijskoj ili čak državnoj razini. Nadalje, kvaliteta

nastave velikim dijelom ovisi i o unaprijed zadanom planu i programu odreĎenih predmeta

koji rijetko omogućavaju odstupanja u tipu nastave, a veliki problem vrlo često predstavlja

nedostatak vremena tijekom kojeg bi se učenicima pružila prilika da samostalno uče i budu

kreativni, primjenjujući istraživački, grupni i projektni rad.

Ministarstvo znanosti, obrazovanja i športa 2005. godine počelo je s ostvarivanjem

reformskoga projekta škola pod nazivom Hrvatski nacionalni obrazovni standard (HNOS) s

kojim su započele promjene u osnovnoj školi u dijelu koji se odnosi na programske sadržaje.

U 2007. godini izraĎena je Strategija za izradbu i razvoj nacionalnoga kurikuluma za

predškolski odgoj, opće obvezno i srednjoškolsko obrazovanje.

Prema [3] glavni cilj Hrvatskog nacionalnog obrazovnog kurikuluma je prelazak s

dosadašnjeg školovanja usmjerenog na učenje sadržaja na učenje kompetencija i ishode

učenja.

Drugim riječima, cilj je da nastava u školama u Republici Hrvatskoj prestane biti nastava

pretežito frontalnog tipa, gdje je nastavnik osoba koja nastavne sadržaje prepričava, diktira ili

piše po ploči, a učenici pritom slušaju, zapisuju činjenice, te je njihov jedini zadatak zapamtiti

te činjenice i prilikom ispitivanja njihovog znanja, bilo pisanim ili usmenim putem, te

činjenice reproducirati nazad. Naglasak se stavlja na procese i koncepte koje učenik

odreĎenim nastavnim sadržajima i metodama usvaja.

Glavni problem takve vrste nastave je malena mogućnost motiviranja učenika za nastavne

sadržaje, te kao ishod najčešće ima učenike koji napamet znaju reproducirati vrlo velike

količine podataka, koje teško povezuju sa stvarnim životom i mogućnošću praktične primjene

istih u rješavanju svakodnevnih problema.

Nastava informatike u osnovnim i srednjim školama je idealan primjer nastave tijekom koje bi

učenici mogli i trebali razvijati algoritamski i logički pristup rješavanju problema, ali pritom

pokušati te probleme povezati s drugim predmetima tijekom njihovog školovanja, a uz to

naučiti neke temeljne kompetencije za njihov daljnji život kao što su rad u timu, demokratski

pristup u donošenju odluka, samostalno sistematično istraživanje činjenica, prezentiranje

obavljenog rada, itd.

Cilj ovog rada je prikazati i detaljno opisati primjer kako se nastava informatike može

iskoristiti kako bi se kroz projektni rad učenike upoznalo s pojmom timskog rada,

samostalnim planiranjem, istraživanjem i razmišljanjem, jasnim definiranjem ciljeva, te

prezentiranjem rezultata. Osim toga, kroz projektne radove tijekom nastave informatike,

učenicima se na taj način pokušavaju približiti neki pojmovi iz matematike koji su primjereni

za njihov uzrast, te im na taj način pokazati kako matematika može biti zanimljiva, zabavna i

korisna.

Page 6: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

4

Uz to, cilj ovog rada je taj da nastavnici informatike koji to žele, mogu iskoristiti predloženi

projekt, u originalnom obliku, ili modificiran, te ga primjenjivati u nastavi informatike u

srednjim školama. Iz tog razloga je projekt najvećim dijelom napisan u obliku sličnom

opširnijim didaktičkim pripremama, s dodatnim uputama i objašnjenima.

Programski jezik koji se koristi za implementaciju navedenih algoritama je Python.

Page 7: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

5

2. Projektna nastava

2.1 Projekt

Prema [1] pojam projekt dolazi od latinske riječi koja označava plan, namjeru, nacrt ili skicu.

U modernom tumačenju projekt podrazumijeva zaokružen, cjelovit i složen pothvat čija se

obilježja i cilj mogu definirati, a mora se ostvariti u odreĎenom vremenu te zahtijeva

koordinirane napore nekoliko ili većeg broja ljudi, službi, poduzeća i sl.

Svaki dobar projekt bi trebao:

sadržavati jasno definirani cilj

rezultirati nekim proizvodom

podrazumijevati složeniji zadatak koji se može raščlaniti na manje podzadatke

imati jasno odreĎeni rok za završetak

sadržavati rad više skupina ljudi (nije nužan uvjet)

podrazumijevati suradnju izmeĎu tih skupina

2.2 Cilj projektne nastave

Tijekom projektne nastave unutar bilo kojeg obrazovnog predmeta učenici će razvijati

sposobnost za timski rad, razvijati sposobnost donošenja odluka pojedinačno i u timu,

razvijati kritički odnos prema vlastitom i tuĎem radu i sposobnost artikulacije te uvidjeti

nužnost i smisao podjele rada. Nadalje, učenici će razvijati samostalnost i odgovornost u radu,

doseći kompetencije planiranja, osposobiti se za korištenje raznih sredstava za rad i pravilnu

procjenu raspoloživih resursa, prakticirati samostalno pronalaženje informacija i kritički

odnos prema njima. Osim toga, osposobit će se za integriranje zajednički dobivenih radnih

rezultata, upoznati s procesom učenja i rada u jednoj socijalnoj grupi, upoznati s različitim

metodama rada, stvoriti proizvod za vlastito korištenje ili za korištenje od strane drugih,

savladati slučajeve razilaženja teorije i prakse, kao i strogo postavljenih granica nastavnih

predmeta, uzimajući u obzir aspekte koji nadilaze struku, prepoznati složenost realnog

postavljenog problema, te prepoznati utjecaje različitih dizajnerskih odluka.

2.3 Faze projektne nastave

Prva faza je priprema projekta koja sadrži sljedeće korake:

odabir teme projekta

priprema za projekt (upoznavanje učenika s potrebnim predznanjem za provedbu

projekta)

organiziranje projekta

Druga faza je postavljanje problema koje sadrži sljedeće korake:

postavljanje problema

brainstorming (ideje učenika)

sreĎivanje i grupiranje ideja (razlaganje problema na manje probleme)

izbor problema koji će se obraditi

preciziranje zadataka

odreĎivanje strukture tima

Page 8: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

6

podjela u grupe

Treća faza je rad u grupama sa sljedećim koracima:

prikupljanje materijala

upotreba pomoćnih sredstava

komunikacija s drugim grupama

dokumentacijski radovi

izvještaji o radu grupa,

prezentacija meĎurezultata, kritika

nove smjernice od tima ili nastavnika

Četvrta faza je integriranje radnih rezultata koja podrazumijeva:

završni izvještaji grupa i prezentacije rezultata

podnošenje dokumentacije, dopune

integriranje rezultata u cjeloviti proizvod

vrednovanje ostvarenog, kritika

finalno sreĎivanje

Završna faza je doprinos nastavnom predmetu kroz koju se provodi:

uspostavljanje veze s nastavnim programom

prezentacija proizvoda korisnicima

Page 9: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

7

3. Nastavni plan i program iz informatike za srednje škole

Prema [4] u prirodoslovno – matematičkim gimnazijama (B program) u Republici Hrvatskoj

tijekom obavezne nastave informatike u prvom i drugom razredu obraĎuju se sljedeće

nastavne cjeline iz programiranja:

Programiranje i faze programiranja (20 nastavnih sati u prvom razredu) koja sadrži

teme planiranje, specifikacija, algoritam, dijagram tijeka, pseudokod (upis,

pridruživanje, grananje, petlja, ispis), kodiranje, testiranje, ispravljanje, održavanje,

program, strukturno programiranje i rješavanje niza jednostavnijih problema na

algoritamskoj razini.

Jezici za programiranje (1 nastavni sat u drugom razredu razredu) koja sadrži teme

leksik, sintaksa i semantika

Uvod u jezik u kojemu će se programirati (11 nastavnih sati u drugom razredu) koja

sadrži teme ustroj programa, jednostavni tipovi podataka, naredbe za upis, ispis,

ureĎivanje tekstualnog zaslona i dodjeljivanje, stil pisanja programa i preglednost.

Složene naredbe i tipovi (16 nastavnih sati u drugom razredu) koja sadrži teme IF

THEN naredba, IF THEN ELSE naredba, petlje, skalarni i intervalni tipovi podataka.

Potprogrami (12 nastavnih sati u drugom razredu) koja sadrži teme strukturno

programiranje, postupno profinjenje i primjena potprograma u razradi problema.

Složeni tipovi podataka (20 nastavnih sati u drugom razredu) koja sadrži teme pojam

indeksa, jednodimenzionalno polje – niz, obrada niza petljom, osnovni algoritmi na

nizovima brojeva, pretraživanje, sortiranja i višedimenzionalna polja.

Složeni tipovi podataka – string, skup (16 sati) koja sadrži teme operacije i gotovi

potprogrami, koji se mogu primijeniti ili na stringu ili na skupu.

Iz službenog plana i programa za nastavu informatike vidljivo je kako su opisane teme

poprilično široke, a to daje slobodu odabira na koji način i pomoću kojih alata će se pojedine

teme obraditi, gdje dolazi do izražaja kreativnost i angažiranost samog nastavnika, ali i razina

znanja razrednog odjeljenja s kojim nastavnik radi. Iz navedenog programa je jasno da izbor

samog programskog jezika ovisi o sposobnostima i preferencijama nastavnika i resursima

škole u kojoj se nastava odvija.

Iako se većina pojedinih tema mora obraditi uz stalni nadzor i voĎenje nastavnika, u programu

za srednje škole iz informatike ima mjesta za projektni tip nastave u kojem učenici mogu

pokazati samostalnost, suradnju i kreativnost. Osim toga, nastava informatike, a posebno

nastava programiranja je dobar način kako se učenicima može prikazati neke sadržaje iz

nastave matematike na drugačiji, zanimljiviji i razumljiv način.

Primjer projektne nastave koji će biti predstavljen u ovom radu je prikladan za završetak

drugog razreda prirodoslovno – matematičke gimnazije programa B te se uglavnom

koncentrira na korištenje funkcija za generiranje nasumičnih brojeva koje učenici povezuju sa

znanjem iz vjerojatnosti te primjerima iz stvarnog života.

Osim učenja korištenja funkcija u programskom jeziku Python za generiranje nasumičnih

brojeva, učenici kroz prikazani projekt uvježbavaju prethodno stečeno znanje vezano uz

naredbe upisa i ispisa, petlje, naredbu if else, rad s nizovima, stringovima i listama.

Page 10: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

8

4. Programski jezik Python

4.1 Prednosti odabira programskog jezika Python

Tijekom podučavanja programiranja u osnovnim i srednjim školama tijekom nastave

informatike, svaki nastavnik ima odreĎenu slobodu izbora alata pomoću kojim će to ostvariti.

U osnovnim školama u Republici Hrvatskoj zasad prevladava učenje programiranja pomoću

programskih jezika LOGO, QBasic, Pascal, dok u srednjim školama prevlada korištenje

programskih jezika poput C, C++ i Java. Prilikom uvoda u programiranje, kako bi što bolje

usvojili algoritamski pristup rješavanju problema, bitno je da učenici nisu fokusirani na samu

sintaksu odreĎenog programskog jezika.

Programski jezici poput LOGO-a, QBasica i Pascala imaju poprilično jednostavnu sintaksu,

dok je u ostalim navedenim jezicima sintaksa samog jezika ipak nešto kompliciranija, ali su

bogatije i mogućnosti koje ti jezici pružaju. Na primjer, prema [2] programski jezik LOGO je

dobar način za sam početak učenja programiranja, no ne omogućuje implementaciju

apstraktnih tipova podataka. Programski jezici C ili C++ s druge strane omogućavaju takvu

implementaciju, no sintaksa tih jezika je poprilično zahtjevna za korištenje.

U situaciji gdje je cilj učenicima omogućiti jednostavnu i lijepu sintaksu programskog jezika

u kojem rade, s preglednim i kratkim kodovima, a da pritom za naprednije razine omogućuje i

naprednije mogućnosti programiranja, poput objektno orijentiranog programiranja,

programski jezik Python je dobar izbor.

4.2 Povijest programskog jezika Python

Programski jezik Python je devedesetih godina prošlog stoljeća razvio Guido von Rossum iz

Nizozemske. Glavna motivacija prilikom razvijanja programskog jezika Python bila je

stvaranje programskog jezika koji je pogodan za učenje programiranja. Prema [6] tvorac

programskog jezika Python je izjavio „Over six years ago, in December 1989, I was looking

for a "hobby" programming project that would keep me occupied during the week around

Christmas. My office ... would be closed, but I had a home computer, and not much else on

my hands. I decided to write an interpreter for the new scripting language I had been thinking

about lately: a descendant of ABC that would appeal to Unix/C hackers. I chose Python as a

working title for the project, being in a slightly irreverent mood (and a big fan of Monty

Python's Flying Circus).“1

Python je napisan u programskom jeziku C. Od 2003. godine programski jezik Python je

neprekidno rangiran meĎu 10 najpopularnijih programskih jezika prema [5]. Od 2015. godine

nalazi se na petom mjestu prema popularnosti, te je bio „Programski jezik godine“ u 2007. i

2010. godini.

Neki od razloga popularnosti programskog jezika Python su sljedeći:

besplatno se može preuzeti i instalirati na sve popularne operacijske sustave

1 „Prije više od šest godina, u prosincu 1989. godine, tražio sam progamerski hobi-projekt koji bi me držao

zauzetim tijekom Božidnih praznika. Moj ured....je bio zatvoren, ali sam imao kudno računalo i nisam imao previše obaveza. Odlučio sam napisati interpreter za novi skriptni jezik o kojem sam u posljednje vrijeme mislio: nasljednik ABC-a koji bi se svidio Unix/C hakerima. Kako sam bio buntovno raspoložen i veliki obožavatelj Letedeg cirkusa Montyja Pyhtona, odlučio sam da de Python biti radni naziv projekta.“

Page 11: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

9

lako se uči zbog jednostavne sintakse

omogućuje brzo pripremanje i testiranje programa

koristi se i u privredi za implementaciju profesionalnih projekata

4.3 Interaktivno sučelje i uređivački dio Programski jezik Python pokreće se otvaranjem razvojnog okruženja za Python koje se zove

IDLE (Integrated Development Environment). To sučelje funkcionira interaktivno.

Slika 1 Primjer korištenja interaktivnog sučelja programskog jezika Python

U sklopu tog razvojnog okruženja za Python postoji i ureĎivački dio, gdje se pišu programi

koji se kao datoteke pohranjuju na disk za kasnije korištenje. Ekstenzija programa pisanih u

programskom jeziku Python je .py.

Slika 2 Primjer korištenja uređivačkog sučelja programskog jezika Python

Page 12: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

10

5. Projekt u nastavi informatike u srednjoj školi korištenjem

programskog jezika Python

5.1 Odabir teme

Učenicima se predloži okvirna tema projekta, a to su igre na sreću. S učenicima se provodi

rasprava o tome što su to igre na sreću, zatim da navedu neke njima poznate primjere igara na

sreću, te kakvo je njihovo predviĎanje kolike šanse za dobitak ima igrač prilikom

sudjelovanja. Očekivani učenički odgovori: Loto, Bingo, bacanje kockica, bacanje novčića,

kladionica, kartanje, rulet, automati s igrama na sreću, itd.

Nakon toga slijedi priprema za projekt u trajanju od jednog nastavnog sata tijekom kojeg se

pobliže upoznaju s pojmom nasumičnosti, te se u programskom jeziku Python obraĎuju

nasumične liste.

5.2 Priprema za projekt

Prije početka, učenike treba upoznati s korištenjem funkcija iz modula random i kreiranjem

nasumičnih listi. Ta priprema se odvija tijekom jednog nastavnog sata informatike.

Glavni cilj nastavnog sata

Učenici će korištenjem funkcija iz modula random u programskom jeziku Python uočiti kako

mogu generirati liste pseudonasumičnih brojeva.

Očekivana učenička postignuća

Učenici će:

ponoviti osnovne naredbe za rad s listama

uočiti što su to nasumični i pseudonasumični brojevi

saznati kako računala generiraju pseudonasumične brojeve

generirati liste čiji su elementi pseudonasumični brojevi

Tip nastavnog sata

Sat obrade novog gradiva.

Nastavni oblici

Frontalna nastava, individualni rad na računalu.

Nastavne metode

Prema izvorima znanja: metoda dijaloga i metoda demonstracije.

Prema oblicima zaključivanja: metoda analogije.

Nastavna sredstva

PowerPoint prezentacija „Nasumične liste“.

Nastavna pomagala

Ploča, kreda, računalo za svakog učenika, LCD projektor i demonstracijsko računalo za

nastavnika.

Page 13: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

11

Tijek nastavnog sata

S učenicima se pokreće rasprava o tome kako bi opisali nasumično odabran broj.

Od učenika se očekuje da će znati da je to broj koji će biti odabran slučajno, a da pritom ništa

neće uvjetovati taj odabir. Učenicima se pojasni kako je stvarni nasumičan odabir ustvari

rijedak u praksi, odnosno da računala koriste pseudonasumičan odabir broja koji ustvari ovisi

o sistemskom vremenu računala. Na primjer, ako se u nekom programskom jeziku izvrši

naredba koja vraća nasumično odabran broj, taj broj će se generirati u ovisnosti o vremenu

koje je „zapisano“ negdje u računalu. Pritom će se gledati i godine, datumi, dani, sati, minute,

sekunde, milisekunde, pa će početni uvjet, prema kojem se generira neki slučajan broj, biti

jedinstven, jer ne postoje dva „ista“ vremena/trenutka.

Nakon toga, učenici, kroz diskusiju s nastavnikom, uočavaju koje funkcije u programskom

jeziku Python mogu koristiti za generiranje pseudonasumičnih brojeva, te kako generirati liste

pseudonasumičnih brojeva. Nastavnik s učenicima komentira kako u Pythonu postoje funkcije

koje vraćaju pseudonasumične brojeve. Te funkcije se u Pythonu nalaze u modulu random, pa

je na početku programa potrebno napisati da koristimo taj modul pomoću naredbe

from random import *

Zatim se učenici upoznaju s nekoliko značajnijih funkcija iz tog modula.

Funkcija randint(a,b) vraća nasumično odabran cijeli broj iz intervala ,a b .

Funkcija randrange(a,b,k) vraća nasumično odabran cijeli broj iz intervala ,a b s

korakom k .

Funkcija random()vraća nasumično odabran realni broj iz intervala 0,1 .

Na nekoliko primjera učenici isprobavaju kako rade navedene funkcije te se može primijetiti

kako za isti unos neće svaki puta dobiti iste rezultate.

Slika 3 Primjer korištenja funkcije randint()

Slika 4 Primjer korištenja funkcije randrange()

Page 14: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

12

Slika 5 Primjer korištenja funkcije random()

Nakon toga učenici u svrhu vježbe izraĎuju program koji generira listu od 5 nasumično

odabranih cijelih brojeva izmeĎu 1 i 50. Poslije toga program trebaju modificirati tako da se

prvo unosi prirodan broj n te se generira lista od n nasumično odabranih cijelih brojeva

izmeĎu 1 i 50.

from random import *

L = []

for i in range (5):

L.append(randint(1,50))

print L

Modificirani zadatak:

from random import *

n = int(input('Unesi duljinu liste: '))

L = []

for i in range (n):

L.append(randint(1,50))

print L

Zadatak za domaću zadaću

Napisati program koji simulira igru „Pogodi zamišljeni broj“ izmeĎu računala i korisnika.

Računalo treba „zamisliti“ jedan cijeli broj iz intervala 1 do 100. Korisnik ima 15 pokušaja za

pogoditi „zamišljeni“ broj. Program treba vratiti poruku korisniku kojom ga obavještava je li

pogodio broj ili nije, te koji je broj „zamišljen“.

from random import *

broj = randint(1,100)

a=[]

for i in range (15):

a.append(int(input('Pogodi broj: ')))

if a[i]== broj:

Page 15: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

13

print 'Bravo, pogodio si!'

i = 14

x = True

else:

print 'Nazalost, to nije zamisljeni broj!'

x = False

if x == False:

print 'Nisi pogodio broj!. Zamišljeni broj je bio', broj

Slika 6 Primjer korištenja programa za pogađanje zamišljenog broja

Nakon što su se učenici upoznali s nekim osnovnim funkcijama iz modula random, trebaju

razmisliti o tome koje bi igre na sreću ili njihove modificirane verzije s dosadašnjim znanjem

mogli uspješno simulirati pomoću programskog jezika Python i novonaučenih funkcija.

5.3 Postavljanje zadatka

Cilj projekta je pomoću programskog jezika Python izraditi simulaciju nekoliko igara na

sreću. Program treba omogućiti izbor željene igre nakon što su one ponuĎene. Prijedlozi

problema koji će se obraditi mogu biti loto, bacanje novčića, bacanje kocke, bingo,

kladionica, kartaške igre, itd.

5.4 Podjela u timove i biranje predstavnika tima

Učenike se ravnopravno podijeli na tri tima. Za podjelu učenika po timovima na raspolaganju

je nekoliko metoda.

Page 16: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

14

1. Nasumičan odabir, izvlačenjem listića s oznakom grupe.

2. Nastavnik dijeli učenike po timovima na način da svakom timu pridijeli učenike različitih

mogućnosti i dotadašnjih postignuća na nastavi informatike.

3. Učenici sami biraju s kojim će učenicima biti u timu.

Sve tri metode imaju svoje prednosti i nedostatke. Prednost prve metode je ta da ne postoji

nikakav utjecaj nastavnika i učenika na ishod podjele, te prilika učenicima da nauče suraĎivati

s učenicima s kojima na to do tog trena nisu navikli. Nedostatak te metode je mogućnost

podjele timova koji nisu uravnoteženi prema sposobnostima i prethodno pokazanom znanju i

postignućima. Prednost druge metode je ta da su odabrani timovi pravedno uravnoteženi s

obzirom na njihove sposobnosti. Nedostatak te metode su mogući prigovori na neobjektivnost

nastavnika, ali i učenika u procjeni njihovim sposobnosti i znanja. Prednost treće metode je

prilika da se učenicima omogući meĎusobna suradnja u odlukama, prilikom koje imaju priliku

pokazati sposobnost demokratskog odlučivanja, odnosno složiti se s mišljenjima većine

učenika. Nedostatak je, kao i u prvoj metodi, moguća neuravnoteženost sposobnosti i

prethodnih postignuća. Prilikom odabira timova trebalo bi uzeti u obzir i mjesto stanovanja

pojedinih učenika unutar jednog tima, s obzirom na to da će učenici unutar tima lakše

suraĎivati na zadatku ako su jedni drugima lakše dostupni.

Nakon podjele učenika u timove, svaki tim ima zadatak meĎu sobom odabrati predstavnika

tima. Predstavnik tima će nakon zadanog vremenskog roka za rješavanje problema

prezentirati rješenje svog tima ostalim učenicima u razredu. Osim toga, predstavnik će biti

zadužen za koordinaciju vremena i mjesta konzultacija s nastavnikom i ostalim članovima

tima, te za koordinaciju rada s ostalim timovima, točnije, objedinjavanje svih zadataka

pojedinih timova u jedan cjeloviti program. Prilikom odabira voĎe tima, učenici imaju priliku

upoznati se s demokratskim načinom odabira, meĎusobno raspravljati i razmjenjivati

prijedloge te argumentirano obrazložiti svoj izbor.

5.5 Odabir problema

Jedan od mogućih primjera odabira igara na sreću koje će se pokušati simulirati programima u

programskom jeziku Python su Loto 7/39, bacanje kocke i bacanje novčića.

5.6 Podjela zadataka po timovima

Neke od metoda za dodjelu pojedinog zadatka timovima su sljedeće:

1. Nasumičan odabir teme, tako da predstavnici timova biraju listić na kojem je napisano

ime pojedine igre na sreću.

2. Nastavnik svakom timu dodjeljuje odreĎenu igru na sreću.

3. Predstavnici timova meĎusobno dogovaraju kojem će timu pripasti koja igra.

Kao i kod podjele učenika na timove, za svaku metodu odabira teme postoje prednosti i

nedostaci. Prednost prve metode je ponovo nemogućnost utjecaja nastavnika i učenika na

odabir. Nedostatak je mogućnost da pojedini tim dobije zahtjevniji zadatak, a pritom su u

njemu učenici slabijih sposobnosti i dotadašnjih nastavnih postignuća iz nastave informatike.

Prednost druge metode je mogućnost nastavnika da procijeni kojem timu bi koji zadatak bolje

odgovarao, s obzirom na to da je nastavnik upućen u konkretnu zahtjevnost svakog zadatka.

Nedostatak je ponovo moguća neobjektivnost i kriva procjena nastavnika u vezi učeničkih

Page 17: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

15

sposobnosti. Treća metoda omogućuje učenicima suradnju, raspravu i dogovor. Nedostatak su

moguća prepiranja izmeĎu voĎa timova i neobjektivnost učenika.

S obzirom na odabrane zadatke, učenici unutar svog tima biraju ime tima. Nastavnik predlaže

da imena timova imaju veze sa zadatkom koji je dodijeljen njihovom timu radi lakše kasnije

komunikacije.

Neki prijedlozi za imena timova su:

Tim 1: Loto

Tim 2: Novčići

Tim 3: Kockice

5.7 Trajanje projekta

S učenicima se dogovora vremenski rok od sedam dana kako bi prikupili materijale te kako bi

izradili prve „nedotjerane“ verzije svojih programa. Nakon isteka roka, voĎe timova

prezentiraju i pojašnjavaju svoja prva rješenja ostalim učenicima i nastavniku tijekom dva

nastavna sata. Nakon toga, s učenicima se dogovara vremenski rok od tjedan dana kako bi

svoje programe dovršili na način da budu prikladni i jasni za korištenje korisnicima koji nisu

upućeni u njihovu izradu. Nakon toga, predstavnici timova u vremenskom roku od dva dana

trebaju zajednički kreirati glavni program koji će omogućavati odabir pojedine igre na sreću u

ovisnosti o želji korisnika. Uz to, dogovara se rok od tri radna dana kako bi učenici prikupili

osnovne informacije o igri na sreću koja je pripala njihovom timu, te o vjerojatnosti dobitka u

pojedinoj igri.

5.8 Prikupljanje materijala

Učenici skupljaju informacije o pravilima navedenih igara te vjerojatnostima za „dobitak“ za

svaku posebnu igru.

Učenici tima Loto ostatku razreda prezentiraju osnovna i pojednostavljena pravila igre Loto

7/39. Osoba koja želi sudjelovati u toj igri kupuje listić na kojem na bilo koji način odabire 7

prirodnih brojeva u rasponu od 1 do 39. Osoba ispunjeni listić uplaćuje na za to predviĎenim

mjestima. Jednom tjedno odvija se javno dostupno izvlačenje dobitnih brojeva iz bubnja u

kojem se vrte kuglice s brojevima od 1 do 39 te bubanj nasumično izbacuje sedam brojeva.

Ako sudionik igre na svom prethodnom uplaćenom listiću ima zaokruženih tih sedam brojeva,

dobitnik je Jackpot-a, gdje se redovito radi o dobitku višemilijunskog iznosa. Osim

pogoĎenih svih sedam brojeva, dobitne kombinacije za sudionike su i pogoĎenih 6, 5 ili 4

broja. Učenici, uz pomoć nastavnika, raspravljaju koja je vjerojatnost da osoba odabirom i

uplatom jedne odabrane kombinacije odabere svih sedam dobitnih brojeva.

Kako bi učenici razumjeli pojam vjerojatnosti nije im potrebno znanje nastavnih sadržaja

vjerojatnosti koji se formalno uče u završnim razredima samo nekih srednjih škola, već im je

za temeljno i intuitivno razumijevanje dovoljno znanje stečeno u osnovnoj školi na nastavi

matematike.

S učenicima se ponovi da je prema definiciji vjerojatnost nekog dogaĎaja jednaka omjeru

broja povoljnih ishoda za taj dogaĎaj i broja svih mogućih ishoda. Iz definicije slijedi kako je

najmanja vjerojatnost jednaka 0 (nemoguć dogaĎaj, koji nastupa kada nema niti jednog

povoljnog ishoda, ono za što se kolokvijalnim rječnikom govori „nema šanse“ te da je najveća

Page 18: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

16

vjerojatnost jednaka 1 (siguran dogaĎaj, kada su svi mogući ishodi povoljni, odnosno „100%

šansa“). Osim sigurnih i nemogućih dogaĎaja, svi ostali dogaĎaji imaju vjerojatnost jednaku

nekom broju izmeĎu 0 i 1. Svaka tako izračunata vjerojatnost se množenjem brojem 100 može

izraziti u obliku postotka.

Prilikom bacanja novčića vrlo je jednostavno intuitivno zaključiti kako je vjerojatnost da

padne pismo, odnosno glava upravo 0.5 odnosno 50%. No, matematički se to može pokazati

na sljedeći način. Broj mogućih ishoda je 2. Broj povoljnih ishoda (na primjer, da padne

pismo) je 1. Vjerojatnost da tijekom bacanja novčića padne pismo jednak je omjeru povoljnih

ishoda u odnosu na broj mogućih ishoda, odnosno 1: 2 0.5 50% .

Igrača kocka je kocka koja na svakoj plohi ima jedan cijeli broj od 1 do 6. S učenicima se

komentira vjerojatnost da će jednim bacanjem kocke na gornjoj plohi biti broj 6, odnosno da

će „pasti šestica“. Broj mogućih ishoda je 6. Broj povoljnih ishoda je 1. Vjerojatnost da na

kocki padne šestica jednaka je omjeru povoljnih ishoda u odnosu na broj mogućih ishoda,

odnosno 1:6 0,166666667 16,67% .

U igri Loto 7/39 od 39 ponuĎenih brojeva bira se 7 brojeva. S učenicima se izračuna kolika je

vjerojatnost da svi odabrani brojevi budu izvučeni, odnosno kolika je vjerojatnost dobitka

sedmice u igri Loto 7/39. Najprije se izračuna broj mogućih ishoda. U bubnju ima 39 kuglica i

u prvom izvlačenju može se izvući bilo koja od njih. To znači da prvo izvlačenje možemo

obaviti na 39 različitih načina. Prilikom drugog izvlačenja u bubnju je jedna kuglica manje, pa

drugo izvlačenje možemo obaviti na 38 načina. Analogno, treće se izvlačenje može obaviti na

37 načina, četvrto na 36, peto na 35, šesto na 34 i sedmo na 33 načina. Navedena izvlačenja

su nezavisna, odnosno kuglica koja je izvučena prilikom drugog izvlačenja ne ovisi o kuglici

koja je izvučena prilikom prvog. To vrijedi i za sva ostala izvlačenja. Zbog toga je ukupan

broj mogućih ishoda, prema pravilu prebrojavanja39 38 37 36 35 34 33 77519922 480 .

Broj povoljnih ishoda izračunat ćemo na sličan način. Prvi izvučeni broj smije biti bilo koji od

naših 7 unaprijed odabranih brojeva, drugi izvučeni broj smije biti bilo koji od preostalih 6,

treći broj smije biti jedan od preostalih 5, itd. Dakle, prvi se broj može odrediti na 7 načina,

drugi na 6 načina, treći na 5 načina, četvrti na 4 načina, peti na 3 načina, šesti na 2 načina i

posljednji, sedmi, na samo 1 način. Ukupan broj povoljnih ishoda je 7 6 5 4 3 2 1 5040 .

Vjerojatnost da se na lotu izvuče baš onih 7 brojeva koji su i odabrani, jednaka je omjeru

povoljnih ishoda u odnosu na broj mogućih ishoda, odnosno

5040:77519922480 0.000000065 0.0000065% .

Nakon što se izračunaju matematičke vjerojatnosti za povoljne ishode, s učenicima se

komentiraju vjerojatnosti koje su se dobile i zaključuje se da je najveća vjerojatnost za

dobitak prilikom igre bacanja novčića, iako ni ta vjerojatnost nije velika da bi je mogli zvati

sigurno ili gotovo sigurno, već su nam šanse samo pola. Prilikom bacanja igraće kocke,

vjerojatnost da se dobije šestica je još manja, jer je povoljan samo jedan od šest mogućih

ishoda. No, vjerojatnost da netko osvoji Jackpot u igri Loto 7/39 je toliko malena da možemo

reći da je zanemariva. Sve tri igre ipak imaju nešto zajedničko. Ako se igra pošteno, dobitak u

svakoj igri ovisi isključivo o faktoru „sreće“, a ne o odabiru ili postupku igrača koji u igri

sudjeluje.

Page 19: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

17

5.9 Precizno zadavanje zadataka

Zadatak Loto

Izraditi program koji će omogućiti korisniku izbor sedam cijelih brojeva brojeva te generirati

listu od sedam slučajno odabranih brojeva većih ili jednakih 1 i manjih ili jednakih 39.

Zadatak Novčić

Izraditi program koji će dvama korisnicima omogućiti odabir strane novčića (pismo ili glava)

te će nasumično ispisati rezultat bacanja novčića.

Zadatak Kockice

Izraditi program koji simulira bacanje igraće kocke za dva korisnika. Dobiveni broj svakog

korisnika treba biti nasumičan. Program treba ispisati da je pobjednik onaj igrač koji je

bacanjem kocke dobio veći broj. U slučaju izjednačenja, igra je neriješena.

5.10 Izrada početnih programa

Učenici tima Loto ostalim učenicima i nastavniku tijekom nastavnog sata izlažu i

objašnjavaju prve verzije svojih programa.

from random import *

L = []

M = []

for i in range (7):

M.append(int(input('Odaberi broj ')))

for i in range (7):

L.append(randint (1,39))

print 'Dobitni brojevi', L

Kako bi se mogle koristiti funkcije modula random u programskom jeziku Python, prvo treba

omogućiti korištenje tog modula naredbom from random import *. Naredbe L = []

i M = [] služe inicijalizaciji praznih lista u koje će se spremati dobitni, odnosno odabrani

brojevi. Prva for petlja omogućuje korisniku odabir sedam brojeva koje žele „zaokružiti“ na

listiću. Odabrani brojevi se pomoću funkcije M.append()pohranjuju u listu M. Druga for

petlja pomoću naredbe randint()nasumično generira sedam cijelih brojeva većih ili

jednakih od 1 i manjih ili jednakih od 39 koji se pohranjuju u listu L. Posljednja naredba samo

ispisuje listu dobitnih brojeva.

Page 20: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

18

Slika 7 Primjer korištenja prve verzije programa Loto

Učenici tima Novčići prezentiraju svoja rješenja.

from random import *

prvi = int(input('Prvi igrač bira 1 za pismo ili 2 za glava '))

drugi = int(input('Drugi igrač bira 1 za pismo ili 2 za glava '))

palo = randint(1,2)

if (palo == 1):

print 'Pala je glava'

else:

print 'Palo je pismo'

Kao i kod tima Loto, kako bi se omogućilo korištenje funkcija iz modula random u

programskom jeziku Python potrebna je naredba from random import *.

Varijabli prvi se pridružuje vrijednost s obzirom na odbabir prvog korisnika što je

omogućeno naredbom int(input()). Analogno, varijabli drugi pridružuje se odabir

drugog korisnika.

Naredba randint(1,2) nasumično generira broj 1 ili 2 te se pridružuje varijabli palo.

Ako je generirani broj 1, program će ispisati „Pala je glava“, a ako je generirani broj 2,

program će ispisati „Palo je pismo“ pa korisnici u ovisnosti o svom početnom odabiru znaju

tko je pobjednik igre.

Page 21: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

19

Slika 8 Primjer korištenja prve verzije programa Novčid

Učenici tima Kockice prezentiraju svoja rješenja.

from random import *

prvi = randint(1,6)

drugi = randint(1,6)

print 'Prvi igrac je bacio kocku i dobio broj ', prvi

print 'Drugi igrac je bacio kocku i dobio broj ', drugi

if prvi > drugi:

print 'Pobjednik je prvi igrac'

elif prvi < drugi:

print 'Pobjednik je drugi igrac'

else:

print 'Izjednaceno!'

Naredba randint(1,6)nasumično generira cijeli broj od 1 do 6 i time simulira bacanje

igrače kocke. Rezultati bacanja kocke se pridružuju varijablama prvi, odnosno drugi.

Naredbama print korisnike se obavještava koji broj im je „pao“ na kocki.

Pomoću naredbe if else usporeĎuju se dobiveni brojevi igrača. Igrač koji je „bacio“ veći

broj je pobjednik, osim u slučaju izjednačenja.

Slika 9 Primjer korištenja prve verzije programa Kockice

Page 22: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

20

5.11 Kritika rezultata i nove smjernice

Nakon prezentacije početnih rješenja, svi učenici imaju zadatak više puta koristiti programe

drugih timova. Program tima Loto trebaju koristiti samostalno, a programe timova Novčići i

Kockice podijeljeni u parove. Pritom se učenicima sugerira bilježenje dobivenih rezultata,

odnosno bilježenje pobjeda. Osim toga, svi timovi u suradnji s nastavnikom raspravljaju o

mogućnostima poboljšanja njihovih početnih programa.

Učenici koji sudjeluju u izradama ili testiranjima programa nakon prezentiranja svih rješenja

upućeni su u način korištenja programa i pravila igre o kojoj se radi. No, cilj projekta na

kojem rade je taj da konačni produkt bude jasan, precizan i zabavan korisnicima koji ne znaju

ništa o izradi i funkcioniranju njihovih programa. Učenici svih timova u svoje programe mogu

dodati sažete i jasne upute o igri koju njihov program simulira, te urediti program kako bi

korisnike jasnije obavještavao o odabranim i dobivenim rezultatima. Osim toga, radi

povećanja zanimljivosti igara, timovi svoje programe mogu proširiti dodatnim opcijama.

Učenici tima Loto u svoj program mogu uključiti ispise broja „pogodaka“. Osim toga,

korištenjem funkcije randint() program stvarno generira listu sedam nasumično

odabranih brojeva, ali ta funkcija neće osigurati da meĎu „izvučenim“ rezultatima neće biti

ponavljanja brojeva, jer u stvarnoj igri Loto 7/39 nikad dva izvučena broja neće biti ista.

Učenici tima Novčići zanimljivost igre mogu povećati s uvoĎenjem više uzastopnih bacanja

novčića, gdje je broj bacanja neparan, a pobjednik igre je onaj korisnik koji je više puta

pobijedio.

Učenici tima Kockice takoĎer mogu uvesti više uzastopnih bacanja kocke, pa pobjednikom

proglasiti onog korisnika koji je više puta pobijedio ili onog korisnika koju ima veći rezultat

kad se zbroje rezultati svih bacanja. Osim toga, timovi mogu dodati opciju upisivanja imena

korisnika (igrača), te ispise imena pobjednika.

5.12 Prezentacija finalnih rješenja timova

Učenici tima Loto prezentiraju svoje finalno rješenje u koje su unijeli prethodno dogovorene

promjene.

import random

print 'Dobrodošli u igru Loto 7/39!'

print ''

print 'Pravila igre:'

print ''

print 'Na prilozenom listiću odaberite sedam brojeva.'

print 'Nakon odabira brojeva i uplate Vašeg listića pratite'

print 'ovotjedno izvlačenje brojeva. Ako je Vaših sedam

odabranih brojeva '

print 'dobitna kombinacija, osvojili ste Jackpot koji ovog

tjedna iznosi'

print '36 000 000 kuna!'

print 'Sretno!'

print ''

L = []

Page 23: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

21

M = []

br = 0

for i in range (7):

M.append(int(input('Zaokruzite broj ')))

print 'Zaokruzili ste brojeve'

for i in range (7):

print M[i]

L = random.sample(range(1,39),7)

print 'Dobitni brojevi ovog kola Lota 7/39 su:'

for i in range (7):

print L[i]

for i in range(7):

for j in range(7):

if (M[i] == L[j]):

br = br+1

if (br == 4):

print 'Bravo! Pogodili ste četiri broja! Dobiveni iznos je

19 kn!'

elif (br == 5):

print 'Bravo! Pogodili ste pet brojeva! Dobiveni iznos je

970 kn!'

elif (br == 6):

print 'Bravo!!! Pogodili ste šest brojeva. Dobiveni iznos je

56 000 kn!'

elif (br == 7):

print 'JACKPOT!!!! Osvojili ste iznos od 36 milijuna

else:

print 'Nema dobitka. Vise srece drugi put! '

Promjene kojima je prva verzija programa tima Loto poboljšana su tekst koji se ispisuje

nakon pokretanja programa koji korisniku ukratko objašnjava pravila igre i korištenje

programa.

Osim toga, korištena je metoda sample iz modula random kako bi se spriječilo ponavljanje

„izvučenih“ brojeva u listi. S obzirom na to da u stvarnoj igri Loto 7/39 dobitni listići nisu

samo oni sa sedam pogoĎenih brojeva, već i sa četiri, pet ili šest brojeva, dodana je varijabla

br koja sprema broj pogoĎenih brojeva. To je omogućeno dvostrukom for petljom koja

usporeĎuje elemente liste M i elemente liste L te sprema broj elemenata koji se podudaraju. Na

kraju program pomoću naredbe if else provjerava postoji li značajan broj pogodaka te

obavještava korisnika o dobivenom iznosu u slučaju da on postoji, odnosno obavještava

korisnika ako nema novčanog dobitka, što će se dogoditi ako je korisnik imao nula, jedan, dva

ili tri pogotka.

Page 24: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

22

Slika 10 Primjer korištenja završne verzije programa Loto

Učenici tima Novčić prezentiraju svoja rješenja.

from random import *

print 'Dobrodošli u igru bacanja novčića!'

print 'Ovo je igra koju igraju dva igrača.'

print 'Odaberite broj bacanja novčića koji želite odigrati, a

zatim unesite imena igrača.'

print 'Ako broj bacanja nije neparan, može se dogoditi da igra

nema pobjednika.'

print 'Prvi igrač upisuje pismo ili glava. Drugom igraču

pripada neodabrana opcija.'

print 'Igrač koji pobjedi u više partija je pobjednik.'

print 'Sretno!'

print ''

n = int(input('Odaberite broj igara koji želite odigrati: '))

if ((n % 2) ==0):

print 'Odaberite neparan broj igara, inače bi igra mogla

Page 25: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

23

završiti bez pobjednika!'

n = int(input('Odaberite broj igara koji želite odigrati:'))

prvi = raw_input('Ime prvog igrača : ')

drugi = raw_input('Ime drugog igrača : ')

print prvi,', odaberite pismo ili glava?'

odabir =raw_input()

print ''

if (odabir == 'pismo'):

print drugi,'je glava!'

print ''

else:

print drugi,'je pismo!'

print ''

p=0

g=0

for i in range(n):

palo = randint(1,2)

print i+1,'. bacanje:'

if (palo == 1):

print 'Palo je pismo!'

print ''

p=p+1

else:

print 'Pala je glava'

print ''

g=g+1

if ((odabir =='pismo') & (p>g)):

print 'Pobjednik/ca je',prvi,'!'

elif ((odabir =='pismo') & (p<g)):

print 'Pobjednik/ca je',drugi,'!'

elif ((odabir =='glava') & (p>g)):

print 'Pobjednik/ca je',drugi,'!'

else:

print 'Pobjednik/ca je',prvi,'!'

Promjene koje su se dogodile od početne verzije programa su značajne, s obzirom na to da

ovaj program umjesto jednog bacanja novčića provodi broj bacanja koji bira korisnik.

Na početku su pomoću naredbe print dodane upute koje korisnike upućuju u pravila igre.

Novčić se baca n puta, gdje je n neparan broj. Igrač koji je imao više pobjeda je pobjednik.

Prilikom unosa parnog broja igara, korisnici dobivaju obavijest o tome kako zbog parnog

unosa broja igara, igra može završiti izjednačeno, te korisnicima nudi ponovni upis broja

igara.

Nakon toga, program omogućuje korisnicima upis imena. Igrač koji prvi upisuje ime, kasnije

prvi bira stranu novčića.

Page 26: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

24

U varijablu odabir sprema se odabrana strana prvog igrača. Igrač unosi riječ pismo ili riječ

glava. Taj unos je omogućen naredbom raw_input, kao i kod unosa imena igrača, kako bi

se kasnije u programu mogao upotrebljavati tip podataka string, bez znakova navoda koji

inače taj string označuju.

U odnosu na prvu verziju koda, drugi igrač je samo obaviješten o tome da je njemu preostala

glava, ako je prvi odabrao pismo ili obrnuto. Nepotreban je odabir jedine preostale opcije

drugog igrača. To je omogućeno naredbom if else.

For petljom koja se vrti do odabranog broja igara n, nasumično se generiraju brojevi 1 ili 2,

gdje se pritom generiran broj 1 interpretira kao da je „palo“ pismo, a generiran broj 2 kao da

je „pala“ glava. Pomoću naredbe print tijekom svakog bacanja korisnike se obavještava o

broju bacanja te o rezultatu bacanja.

Nakon prikazanih svih rezultata bacanja, program ispisuje ime pobjednika.

Postoje dva moguća ishoda, ali su to četiri mogućnosti s obzirom na odabir prvog igrača:

Prvi igrač je odabrao pismo, pismo je palo više puta nego glava, pa je pobjednik prvi igrač.

Prvi igrač je odabrao pismo, glava je pala više puta nego pismo, pobjednik je drugi igrač.

Prvi igrač je odabrao glava, glava je pala više puta nego pismo, pobjednik je prvi igrač.

Prvi igrač je odabrao glava, pismo je palo više puta nego glava, pobjednik je drugi igrač.

Slika 11 Primjer korištenja završne verzije programa Novčid

Nešto drugačiji pristup ovoj igri je taj da program sam nasumično odabire kojem će igraču biti

dodijeljena koja strana novčića. Time se pomalo gubi smisao originalno zamišljene igre

Page 27: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

25

bacanje novčića, ali je primjer dobre vježbe za učenike u radu s nasumičnim brojevima u

programskom jeziku Python.

from random import *

print 'Dobrodošli u igru bacanja novčića!'

print 'Ovo je igra koju igraju dva igrača.'

print 'Odaberite broj bacanja novčića koji želite odigrati, a

zatim unesite imena igrača.'

print 'Ako broj bacanja nije neparan, može se dogoditi da igra

nema pobjednika.'

print 'Svaki igrač će dobiti obavijest o tome koja strana

novčića je njegova.'

print 'Igrač koji pobjedi u više partija je pobjednik.'

print ''

print 'Sretno!'

print ''

n = int(input('Odaberite broj igara koji želite odigrati: '))

if ((n % 2) ==0):

print 'Odaberite neparan broj igara, inače bi igra mogla

završiti bez pobjednika!'

n = int(input('Odaberite broj igara koji želite odigrati:'))

prvi = raw_input('Ime prvog igrača : ')

drugi = raw_input('Ime drugog igrača : ')

odabir = randint(1,2)

if (odabir==1):

print prvi,', Vaša strana je pismo.'

print drugi,', Vaša strana je glava.'

else:

print prvi,', Vaša strana je glava.'

print drugi,', Vaša strana je pismo.'

print ''

p=0

g=0

for i in range(n):

palo = randint(1,2)

print i+1,'. Bacanje:'

if (palo == 1):

print 'Palo je pismo!'

print ''

p=p+1

else:

print 'Pala je glava'

print ''

Page 28: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

26

g=g+1

if ((odabir ==1) & (p>g)):

print 'Pobjednik/ca je',prvi,'!'

elif ((odabir ==1) & (p<g)):

print 'Pobjednik/ca je',drugi,'!'

elif ((odabir3==2) & (p>g)):

print 'Pobjednik/ca je',drugi,'!'

else:

print 'Pobjednik/ca je',drugi,'!'

Varijabli odabir se nasumično pridružuje broj 1 ili 2. Pomoću naredbe if else svakom

igraču pridružuje se strana novčića:

ako je odabir nasumično odabran broj 1, prvi igrač je pismo, a drugi glava

ako je odabir nasumično odabran broj 2, prvi igrač je glava, a drugi pismo

Time je u potpunosti izbačeno korištenje stringova 'pismo' i 'glava' iz samog programa, već

program radi samo s brojevima 1 i 2 na kojima radi uvjete i ispisuje rezultate.

Tim kockice prezentira svoja rješenja.

print 'Dobrodošli u igru bacanja kockica. Ovo je igra koju

igraju dva igrača.'

print 'Svaki igrač unosi svoje ime, te biraju broj bacanja

kockica koji žele'

print 'ostvariti. Igrač koji ima veći zbroj rezultata nakon

svih bacanja'

print 'je pobjednik!'

print ''

print 'Sretno!'

print ''

from random import *

prvi = raw_input('Ime prvog igrača: ')

drugi =raw_input('Ime drugog igrača: ')

n = int(input('Unesi broj igara: '))

P = []

D = []

zb1 = 0

zb2 = 0

for i in range (n):

P.append(randint(1,6))

zb1 = zb1 + P[i]

print prvi

print i+1,'. bacanje:'

print P[i]

Page 29: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

27

D.append(randint(1,6))

zb2 = zb2 + D[i]

print drugi

print i+1,'. bacanje:'

print D[i]

print ''

print prvi,',Vaš rezultat je:'

print (zb1)

print drugi,',Vaš rezultat je:'

print (zb2)

if zb1 > zb2:

print 'Pobjednik je',prvi

elif zb1 < zb2:

print 'Pobjednik je',drugi

else:

print 'Izjednačeno'

Modifikacije koje su napravljene u odnosu na prethodni program su unos imena igrača u

obliku stringa pomoću funkcije raw_input(). Osim toga, dodana je varijabla n kojoj se

pridružuje broj bacanja kocke koji biraju korisnici. Naredbama P = [] i D = [] stvaraju

se prazne liste u koje će se redom spremati rezultati svakog bacanja prvog, odnosno drugog

igrača. Početni zbrojevi rezultata svakog igrača su nula (varijable zb1 i zb2). Pomoću for

petlje odvija se odabrani broj bacanja n. Prilikom svakog koraka petlje, pomoću naredbe

randint(1,6) generira se prirodan broj izmeĎu 1 i 6 koji predstavlja rezultat bacanja

kocke pojedinog igrača. Pojedini rezultati se spremaju u listu, a zbrojevi svih dotadašnjih

rezultata u varijable zb1 i zb2. Na kraju program obavještava igrače, koristeći njihovo ime,

koliki je ukupni rezultat i tko je pobjednik.

Page 30: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

28

Slika 12 Primjer korištenja završne verzije programa Kockice

5.13 Integriranje rezultata u cjeloviti proizvod

Nakon što svi timovi prezentiraju i pojasne razredu rješenja svojih projektnih podzadataka,

učenici svih timova testiraju rješenja drugih timova te komentiraju rezultate.

Predstavnici timova dobiju zadatak integrirati rješenja pojedinih timova u jedan program.

Glavni program mora korisniku omogućavati izbor pojedine igre. Nakon izbora igre, pokreće

se potprogram koji korisnici mogu koristiti na prethodno opisan način.

Nakon testiranja, predstavnici timova dogovaraju daljnju suradnju, vrijeme sastajanja, prostor

za rad i plan rada kako bi ostvarili zadani zadatak. Za integriranje rješenja, s nastavnikom

dogovaraju vremenski rok u kojem proizvod mora biti spreman za prezentiranje (3 dana).

Osim toga, predstavnici meĎu sobom trebaju odrediti glavnog predstavnika koji će cijelom

razredu prezentirati i pojasniti završno rješenje.

Jedan od načina kako se postojeći programi mogu integrirati u jedan program je taj da se

programe loto, kockice i novcici definira kao nove funkcije unutar glavnog programa.

Kako bi se unutar programa definirala nova funkcija potrebno je početku pisanja programa

definirati sve funkcije koje želimo u programu koristiti. U ovom projektu svaki posebni

Page 31: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

29

program postaje nova funkcija koja u sebi sadrži sve naredbe koje je sadržavalo rješenje

pojedinih timova. Funkcije unutar programa koristimo na sljedeći način:

def ime_funkcije (parametri):

niz naredbi koje funkcija izvršava

Tako se na vrlo jednostavan način postojeći programi mogu integrirati u jedan program i

odreĎene funkcije pozivati u ovisnosti o odabiru igre korisnika.

U glavnom programu, nakon navoĎenja funkcija, korisniku treba ispisati upute za odabir igre i

osigurati opciju koja omogućuje ponovni izbor igre ako je slučajno pogriješio s upisom

naziva igre. Osim toga, u svakoj od funkcija se koristi modul random programskog jezika

Python, pa naredba from random import * može biti i u glavnom programu.

Primjer rješenja završnog programa:

def lotto():

print 'Dobrodošli u igru Loto 7/39!'

print ''

print 'Pravila igre:'

print ''

print 'Na priloženom listiću odaberite sedam brojeva.'

print 'Nakon odabira brojeva i uplate Vašeg listića

pratite'

print 'ovotjedno izvlačenje brojeva. Ako je Vaših sedam

odabranih brojeva '

print 'dobitna kombinacija, osvojili ste Jackpot koji ovog

tjedna iznosi'

print '36 000 000 kuna!'

print 'Sretno!'

print ''

L = []

M = []

br = 0

for i in range (7):

M.append(int(input('Zaokruzite broj ')))

print 'Zaokruzili ste brojeve '

for i in range (7):

print M[i]

L = random.sample(range(1,39),7)

Print 'Dobitni brojevi ovog kola Lota 7/39 su:'

for i in range (7):

print L[i]

for i in range(7):

for j in range(7):

if (M[i] == L[j]):

br = br+1

Page 32: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

30

if (br == 4):

print 'Bravo! Pogodili ste četiri broja! Dobiveni

iznos je 19 kn!'

elif (br == 5):

print 'Bravo! Pogodili ste pet brojeva! Dobiveni iznos

je 970 kn!'

elif (br == 6):

print 'Bravo!!! Pogodili ste šest brojeva. Dobiveni

iznos je 56 000 kn!'

elif (br == 7):

print 'JACKPOT!!!! Osvojili ste iznos od 36 milijuna

kuna!!!!'

else:

print 'Nema dobitka. Vise srece drugi put!'

def kockice():

print 'Dobrodošli u igru bacanja kockica. Ovo je igra koju

igraju dva igrača.'

print 'Svaki igrač unosi svoje ime, te biraju broj bacanja

kockica koji žele '

print 'ostvariti. Igrač koji ima veći zbroj rezultata

nakon svih bacanja'

print 'je pobjednik!'

print ''

print 'Sretno!'

print ''

prvi = raw_input('Ime prvog igrača: ')

drugi =raw_input('Ime drugog igrača: ')

n = int(input('Unesi broj igara: '))

P = []

D = []

zb1 = 0

zb2 = 0

for i in range (n):

P.append(randint(1,6))

zb1 = zb1 + P[i]

print (prvi)

print ("%d. bacanje:" %(i+1))

print (P[i])

D.append(randint(1,6))

Page 33: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

31

zb2 = zb2 + D[i]

print drugi

print i+1, '. bacanje:'

print D[i]

print ""

print prvi,' Vaš rezultat je:'

print zb1

print drugi,' Vaš rezultat je:'

print zb2

if zb1 > zb2:

print 'Pobjednik je',prvi

elif zb1 < zb2:

print 'Pobjednik je',drugi

else:

print 'Izjednačeno'

def novcici():

print 'Dobrodošli u igru bacanja novčića!'

print 'Ovo je igra koju igraju dva igrača.'

print 'Odaberite broj bacanja novčića koji želite

odigrati, a zatim unesite imena igrača.'

print 'Ako broj bacanja nije neparan, može se dogoditi da

igra nema pobjednika.'

print 'Prvi igrač upisuje pismo ili glava. Drugom igraču

pripada neodabrana opcija.'

print 'Igrač koji pobjedi u više partija je pobjednik.'

print 'Sretno!'

print ''

n = int(input('Odaberite broj igara koji želite odigrati:'))

if ((n % 2) ==0):

print 'Odaberite neparan broj igara, inače bi igra

mogla završiti bez pobjednika!'

n = int(input('Odaberite broj igara koji želite

odigrati: '))

prvi =raw_input('Ime prvog igrača : ')

drugi =raw_input('Ime drugog igrača : ')

print prvi,', odaberite pismo ili glava?'

odabir = raw_input()

print ''

if (odabir == 'pismo'):

Page 34: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

32

print drugi,'je glava!'

print ''

else:

print drugi,'je pismo!'

print ''

p=0

g=0

for i in range(n):

palo = randint(1,2)

print ("%d. bacanje:" %(i+1))

if (palo == 1):

print 'Palo je pismo!'

print ''

p=p+1

else:

print 'Pala je glava'

print ''

g=g+1

if ((odabir =='pismo') & (p>g)):

print 'Pobjednik/ca je',prvi

elif ((odabir =='pismo') & (p<g)):

print 'Pobjednik/ca je',drugi

elif ((odabir =='glava') & (p>g)):

print 'Pobjednik/ca je,drugi

else:

print 'Pobjednik/ca je',prvi

print 'Dobrošli u "Igre na sreću" 2.d razreda! Danas u ponudi

imamo'

print 'igre Loto 7/39 za jednog igrača ili ako ipak želite

igrati igre u paru,'

print 'nudimo Vam igre bacanja kockica i bacanja novčića.'

print 'Za igru Loto 7/39 unesite riječ loto. Za igru bacanja

kockica unesite riječ kockice,'

print 'a za igru bacanja novčića unesite riječ novcici. Želimo

Vam puno sreće i pobjeda!'

print''

from random import *

pogreska = True;

while (pogreska):

igra = raw_input('Odaberi igru ')

if (igra=='loto'):

Page 35: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

33

lotto()

pogreska = False

elif(igra=='kockice'):

kockice()

pogreska = False

elif(igra=='novcici'):

novcici()

pogreska = False

else:

print 'Krivo ste unijeli naziv igre!'

pogreska = True

Nakon pokretanja programa igre.py korisniku ili korisnicima se prikazuje početni tekst u

kojem su kratko navedena pravila odabira igre. Za igru Loto7/39 korisnik kod odabira igre

upisuje riječ loto, za bacanje kocke riječ kockice, a za bacanje novčića riječ novcici. Nakon

odabira igre, pokreće se odabrana igra, što je omogućeno naredbom if else. Ako je

korisnik krivo upisao riječ za pokretanje neke od željenih igara, program će ga na to upozoriti

i omogućiti mu ponovni odabir igre, a to je omogućeno korištenjem petlje while.

Slika 13 Primjer korištenja glavnog programa s ispravnim unosom naziva igre

Slika 14 Primjer korištenja glavnog programa s neispravnim unosom imena igre

Page 36: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

34

5.14 Uspostavljanje veze s nastavnim planom i programom

Tijekom izrade ovog projekta, učenici će:

uvježbavati rad s naredbama unosa, ispisa, stringovima, listama, petljama for i while te sa strukturiranim načinom programiranja

upoznati se s pojmom modula i modulom random programskog jezika Python,

koristiti nekoliko funkcija iz tog modula te se upoznati s pojmom nasumičnog

odnosno pseudonasumičnog broja, te generirati liste pseudonasumičnih brojeva analizirati situacije u kojima se funkcije modula random mogu primijeniti prilikom

programskog simuliranja situacija iz stvarnog života uspostaviti vezu sa sadržajima iz matematike iz područja vjerojatnosti analizirati metode pomoću kojih mogu poboljšati svoja rješenja suradnički raditi sa skupinom ljudi gdje će primjenjivati demokratski način donošenja

odluka, izmjenjivati ideje i raspravljati o njima, te ih prezentirati ostalim učenicima

5.15 Prezentacija proizvoda korisnicima Učenici svoj rad mogu prezentirati drugim učenicima iste ili druge škole koji nisu imali

prilike raditi na projektu. Osim toga, učenici tijekom Dana otvorenih vrata svoje škole ili na

školskom sajmu svoj proizvod mogu predstaviti roditeljima, nastavnicima, učenicima i

ostalim gostima, te im pružiti mogućnost da njihov proizvod koriste u svrhu zabave. Uz

predstavljanje se mogu organizirati i simbolične nagrade za dobitnike u ponuĎenim igrama.

5.16 Usporedba verzija 2.7 i 3.3 programskog jezika Python

Može se dogoditi da različiti timovi učenika koriste različite verzije programskog jezika

Python. Zato prilikom integriranja rješenja u cjeloviti proizvod timovi meĎusobno trebaju

dogovoriti koju će verziju koristiti kod prezentiranja finalnog rješenja, te sve potprograme

uskladiti kako bi radili u odabranoj verziji. Najbitnije razlike izmeĎu verzija koje su bitne za

njihove programe vezane su uz korištenje naredbe print i funkcije input().Korištenje

naredbe print u verziji 2.7:

print 'tekst za ispis' ili print "tekst za ispis"

Korištenje naredbe print() u verziji 3.3:

print ('tekst za ispis') ili print ("tekst za ispis")

Naredba input() u verziji 3.3 automatski sprema unos string,dok u verziji 2.7. umjesto

toga treba koristiti funkciju raw_input().

Page 37: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

35

6. Zaključak U školama Republike Hrvatske nastava se često se odvija na tradicionalan način, frontalnom

nastavom s nešto samostalnog rada učenika, gdje nastavnik nastavne sadržaje prenese

učenicima, a učenici ih kasnije jednostavno reproduciraju natrag. Iako zbog vremenskih i

materijalnih ograničenja drugačiji tip nastave često nije moguć, uvijek se može naći vrijeme i

prostor za odvijanje alternativnih načina nastave. Projektna nastava je poželjna u svim

obrazovnim predmetima osnovnih i srednjih škola, ali je u nastavi informatike uz malo truda

nastavnika i učenika jednostavno ostvariva, jer za provoĎenje projektne nastave u informatici

gotovo ništa osim računala nije potrebno. Tijekom projektne nastave učenici se motiviraju na

samostalno i grupno istraživanje, suraĎivanje s članovima svojeg tima, a zatim i sa članovima

ostalih timova. Osim toga, projektna nastava omogućuje korelaciju s drugim obrazovnim

predmetima te obraĎivanje problema koji se pojavljuju u njihovom svakodnevnom životu.

Programski jezik Python zbog svoje jednostavne, jasne i intuitivne sintakse dobar je izbor za

učenike koji su početnici u programiranju, ali i za one kojima su potrebne zahtjevnije

mogućnosti programskog jezika.

U radu je ukratko prikazan primjer provoĎenja projekta „Igre na sreću“ kroz koji učenici

drugih razreda srednjih škola na zabavan i jednostavan način mogu ponoviti gotovo sve što su

do tad naučili na nastavi matematike, a pritom učeći nove mogućnosti programskog jezika

Python i algoritamskim pristupom rješavanju problema mogu kreirati programe koji

simuliraju neke svima poznate i zabavne igre na sreću (Loto 7/39, bacanje kocke i bacanje

novčića). Nakon završetka projekta, proizvod koji su stvorili jasan je i jednostavan proizvod

koji se može prezentirati i onim korisnicima koji ne znaju i ne trebaju znati kako i na koji

način je sam proizvod kreiran.

Page 38: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

36

7. Literatura [1] A. Čižmešija, Projektna nastava matematike, dostupno na

http://web.math.pmf.unizg.hr/nastava/mnm1/Projekt.ppt (srpanj 2014.)

[2] ] P. Brođanac i suradnici, Python – jezik za podučavanje algoritamskog pristupa rješavanju

problema, dostupno na

http://www.mipro.hr/LinkClick.aspx?fileticket=Fq7zZKz0nZw%3D&tabid=134&language=h

r-HR (lipanj 2015.)

[3] Ministarstvo znanosti, obrazovanja i sporta, Nacionalni okvirni kurikulum za osnovne i srednje

škole, dostupno na http://public.mzos.hr/fgs.axd?id=16803 (lipanj 2014.)

[4] Ministarstvo, znanosti obrazovanja i sporta, Nastavni plan i program iz informatike za gimnazije,

dostupno na http://dokumenti.ncvvo.hr/Nastavni_plan/gimnazije/obvezni/informatika.pdf

(kolovoz 2015.)

[5] Python (programming language), dostupno na

https://en.wikipedia.org/wiki/Python_(programming_language)#Use (rujan 2015.)

[6] G. von Rossum, Foreword for "Programming Python", dostupno na

https://www.python.org/doc/essays/foreword (rujan 2015.)

Page 39: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

37

8. Sažetak Rad opisuje razvoj programskog jezika Python i prednosti korištenja tog programskog jezika.

U radu je opisan pojam projekta, faze koje bi trebao sadržavati svaki projekt u nastavi, te

prednosti korištenja projektne nastave informatike. U radu je prikazan primjer projektne

nastave informatike u drugom razredu srednje škole korištenjem programskog jezika Python.

IzraĎeni projekt se povezuju s ishodima iz nastavnog plana i programa iz informatike za prvi i

drugi razred srednje škole. Tijekom provoĎenja prikazanog primjera projekta, učenici uče

kako koristiti funkcije iz modula random za generiranje listi čiji su elementi nasumični

brojevi, te pomoću tih funkcija, podijeljeni u timove, izraĎuju programe koji simuliraju igre

na sreću Loto 7/39, bacanje igraće kocke i bacanje novčića.

Page 40: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

38

9. Summary Paper describes the development of the programming language Python and the advantages of

using this programming language. Paper describes the concept of the project, phases which

should be part of any project in the classroom and the benefits of using project based learning.

Paper shows an example of the project based learning in computer classroom in the second

year of secondary school using the programming language Python.

Project is associated with the outcomes of the curriculum in information technology for the

first and second year of secondary school. During the project, students learn how to use the

functions of the module random for generating lists whose elements are random numbers and

divided into teams and using those function, students are developing training programs that

simulate gambling games Loto 7/39, dice roll and coin tossing.

Page 41: SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO …digre.pmf.unizg.hr/4328/1/Algoritamsko rješavanje problema u... · programski jezik Python je dobar izbor. 4.2 Povijest programskog jezika

39

10. Životopis

Jelena Štimac roĎena je 14.6.1985. godine u Koprivnici. Od roĎenja živi u Novigradu

Podravskom, selu nedaleko Koprivnice. PohaĎala je osnovnu školu „Prof. Blaž MaĎer“ u

Novigradu Podravskom, a zatim smjer opće gimnazije u koprivničkoj školi „Gimnazija Fran

Galović“. Godine 2010. završila je preddiplomski studij edukacije matematike, te upisala

diplomski studij matematike i informatike, smjer nastavnički. Tijekom školske godine

2012./2013. radila je kao nastavnik matematike u Osnovnoj školi „Prof. Blaž MaĎer“ u

Novigradu Podravskom i kao nastavnik informatike u zagrebačkoj 12. gimnaziji. Od početka

školske godine 2013./2014. pa do danas radi kao nastavnik matematike u Srednjoj školi

Koprivnica.