x
Učitavanje

2.2 Računanje s nizom ulaznih vrijednosti

Što ću naučiti?
Europska unija - Zajedno do fondova EU
Prethodna jedinica Sljedeća jedinica
Sadržaj jedinice icon sadržaj jedinice

Na početku...

Leona je velika ljubiteljica Formule 1. Oduvijek ju je zanimalo kako se mjeri vrijeme koje je potrebno vozaču da završi krug. Pogledajmo u sljedećem videoprimjeru objašnjenje mjerenja vremena u Formuli 1:

F1

Kôd iz prethodnog primjera mogao bi izgledati ovako. Isprobajmo ga unosom različitih vrijednosti.

null

Da bismo saznali koji je od triju sektora vozač najbrže prošao, možemo se koristiti algoritmom za određivanje najveće/najmanje vrijednosti.

Pomoć:

Korisnik unosi tri decimalne vrijednosti, a algoritam provjerava koja je od njih najmanja. Nakon ključne riječi if slijedi provjera je li s1 manji od s2 te je li s1 manji od s3. Ako to nije zadovoljeno, algoritam provjerava uvjet nakon ključne riječi elif. Ako ni ti uvjeti nisu zadovoljeni, algoritam izvršava naredbu ispisa koja se nalazi nakon ključne riječi else.
Algoritam nužno izvršava samo jednu od tri moguće opcije.

null

Što će program ispisati ako su sva tri unesena vremena ista?

Pomoć:

Je li zadovoljen prvi uvjet?

Je li zadovoljen drugi uvjet?

Što ako nisu zadovoljena oba uvjeta?

null
Štoperica
Srebrna štoperica na dlanu. Štoperica ima bijeli brojčanik i crne brojke, a na dnu je mali natpis na ćirilici

Što ako znamo koliko je vozaču trebalo za prolazak određenog sektora, a zanima nas ukupno vrijeme koje je vozaču bilo potrebno da prođe cijeli krug?

Računanje s nizom ulaznih vrijednosti

Da bi smo pohranili niz ulaznih vrijednosti, koristimo varijable koje nazivamo akumulatorima, tj. akumulacijske varijable.

Akumulator

Akumulator

Varijabla u kojoj se postupno akumulira konačni rezultat naziva se akmulatorom.

Akumulator
Akumulacijske varijable prikazane su na primjeru razvrstavanja otpada. Ilustracija prikazuje pet kontejnera za razvrstavanje otpada. s lijeva na desno, poredani su Papir, Metal, Staklo, Tetrapak i Plastika.

Akumulacijske varijable, odnosno akumulatore možemo usporediti sa spremnicima za otpad. U svakom se spremniku akumulira pripadna ambalaža (vrijednosti) te pri pražnjenju spremnika (na kraju petlje) možemo izvagati (ispisati) točnu masu sadržaja svakog spremnika.

Primjer 1.

Pokrenimo primjer programa koji koristi akumulacijsku varijablu:

Program unosi n, broj kontejnera otpada koji su tog dana dovezeni na zbrinjavanje.

Nakon toga, za svaki se kontejner unosi njegova masa (vaga pokazuje samo zaokružene cijele vrijednosti u kilogramima).

Program ispisuje ukupnu masu otpada koji je tog dana dovezen na zbrinjavanje.

Pomoć:

Najprije unosimo broj kontejnera n. Potom postavljamo vrijednost akumulacijske varijable ukupna_masa na nulu.

For petlja izvršava se n puta, a toliko puta unosimo masu svakog kontejnera m, koju pribrajamo varijabli ukupna_masa.

Na kraju ispisujemo vrijednost varijable ukupna_masa.

null

Kao što vidimo u prethodnom primjeru, akumulator uvijek moramo postaviti na početnu vrijednost. Nakon toga toj početnoj vrijednosti akumuliramo druge vrijednosti.

Varijabli ukupna_masa pridružili smo vrijednost nula, s obzirom na to da na početku programa još nismo izvagali nijedan kontejner s otpadom.

Svaki put kada se unutar for petlje unese masa m, računa se zbroj vrijednosti mase m i vrijednosti koja je već pohranjena u akumulacijskoj varijabli ukupna_masa te se zbrojena vrijednost pohranjuje kao nova vrijednost akumulacijske varijable ukupna_masa.

To u programiranju zapisujemo na sljedeći način:

u k u p n a _ m a s a   =   u k u p n a _ m a s a   +   n  

ili skraćeno "pythonovski":

u k u p n a _ m a s a   + =   m .

Pogledajmo u sljedećoj tablici kako sve možemo akumulirati vrijednosti. Varijabla z označava akumulacijsku varijablu, dok varijabla a označava  vrijednost koja se akumulira.

Operacija akumulacije Zapis u Pythonu Skraćeni zapis u Pythonu
zbrajanje z = z + a z += a
oduzimanje z = z - a z -= a
množenje z = z * a z *= a
dijeljenje z = z / a z /= a
cjelobrojno dijeljenje z = z // a z //= a
ostatak pri dijeljenju z = z % a z %= a

Vježba

Pomozi učitelju sastaviti program koji će računati prolaznost učenika na ispitu. Program unosi broj učenika te ocjene iz Informatike za te učenike. Program treba ispisati koji je postotak prolaznosti na ispitu.

Upiši dijelove koda koji nedostaju.

Formula za postotak prolaznosti jest broj_pozitivnih / broj_učenika * 100.

Pomoć:

Koliko je učenika na početku dobilo pozitivnu ocjenu?​

Koliko puta ponavljamo petlju?

Što unosimo unutar petlje?

Što provjeravamo unutar petlje?

Kako računamo postotak prolaznosti ispita?

Postupak:

broj_ucenika = int(input('Unesi broj ucenika: '))

broj_pozitivnih = 0

for i in range(broj_ucenika):

    ocjena = int(input('Unesi ocjenu: '))

    if ocjena > 1:

        broj_pozitivnih += 1

print(broj_pozitivnih / broj_ucenika * 100, '% je pozitivno ocijenjenih ucenika!')

...i na kraju

Središte je ove jedinice akumulacijska varijabla, tj. akumulator. Kako bismo zbrajali, prebrajali ili na neki drugi način bilježili promjene unutar akumulacijske varijable, nužno joj je na početku programa zadati početnu vrijednost. Nakon toga, unutar petlje zadajemo svojstvo akumulacije (pribrajanja, prebrojavanja i sl.) te izvan petlje ispisujemo konačan rezultat.

Povratak na vrh