Potprogrami u Pythonu

Zadatak u dijelovima

Neki zadatci ponekad nemaju jednostavno rješenje pa nam je u njihovom rješavanju potrebna pomoć. Kako bi smo bili uspješniji u rješavanju takvih zadataka, potrebno je zadatak razdijeliti u dijelove na manje cjelina koje se mogu zasebno rješavati. Puno je lakše i brže riješiti manje dijelove problema (programa) pa ih na kraju posložiti u cjelinu koja rješava problem.

Potprogram (procedure)

Potprogram je dio koda/naredbi glavnog programa koji se izvršava samo kada ga se pozove. U prethodnom zadatku potprogrami su meni 1, 2, i 3, a može ih se pozvati koliko god puta želimo. Potprogrami se još nazivaju i procedure, a one ne izbacuju vrijednost na kraju izvršavanja zadatka već samo izvršavaju naredbe koje su u njemu. Svaki potprogram započinjemo pisati ključnom riječi def nakon čega slijedi naziv programa te otvorena i zatvorena zagrada.

Primjer: def meni1 ().

 

Funkcija RANDRANGE

Funkcija RANDRANGE neće raditi sve dok ne pozovemo modul RANDOM (from random import * ). Može imati do tri atributa. Prvi i drugi označavaju raspon u kojemu se biraju slučajni brojevi s tim da drugi broj ne ulazi u raspon. Treći broj, ako postoji, pokazuje korak za traženje slučajnog broja. Ako ga nema, korak je 1.

Primjer 1: randrange(1, 10, 2) odabire slučajni broj između brojeva 1, 3, 5, 7 i 9. 

Primjer 2: randrange(5, 8) odabire slučajni broj između brojeva 5, 6 i 7.

Zadatak: Što ću danas ručati?

Zadatak: Prenošenje vode

Napišimo program koji će tražiti upis količine vode u litrama koja se mora prenijeti iz bačve A u bačvu B te volumen kante s kojom će se ta voda prenositi. Program će ispisati rješenje u obliku broja kanti potrebnih da se isprazni bačva A.

U praksi je nemoguće prenijeti vodu od bačve A do bačve B da se voda ne ne prolije, ali uz dodatnu pažnju prilikom prenošenja vode pretpostavljamo da ćemo moći napuniti 95% bačve B.

Program je izračunao da kantom treba zagrabiti 105.263... puta i odnijeti ju, što je nemoguće jer ne možemo zagrabiti 0.263..puta. Da bi ovo rješenje bilo ispravno, potrebno je zaokružiti na cijeli broj i onda će nam program ispravno pokazati koliko puta trebamo zagrabiti kantom vodu.

Provjerimo funkcionalnost programa još jednom s drugim podatcima.

Točno rješenje ulaznih vrijednosti moralo bi biti 10 kanti, ako je iskoristivost kante 95%. No to je pogrešno zbog toga što pretvaramo varijablu broj_kanti u integer i dodajemo 1, ali taj 1 nije potreban kada je vrijednost varijable broj_kanti već cijeli broj.

Dodajemo naredbu IF

if broj_kanti!=int(broj_kanti):

    broj_kanti=int(broj_kanti)+1

Zadatak je sada u potpunosti točan, ali smo morali raditi korak po korak kako bi smo otklonili probleme koji su se pojavljivali prilikom rješavanja zadatka.

Zadatak: Broj članova u obitelji

Kreirati ćemo program unutar kojega ćemo upisati imena broja članova obitelji koji žive s nama u stanu/kući. Nakon toga ćemo taj broj članova moći upisati u listu bilo kojim redoslijedom. Ako je upisan paran broj članova obitelji, program će izbaciti dva imena člana iz sredine liste, a ako je upisan neparan broj članova, program će ispisati ime srednjeg člana.

Funkcijom if br_clanova%2==0  smo provjerili parnost članova u obitelji. Ako je taj broj paran, odnosno broj dijeljenja s 2 jednak 0, tada ide na funkciju p_clanovi(obitelji, br_clanova), a u suprotnom na funkciju n_clanovi(obitelj, br_clanova)

Ponovimo

Kreiraj program koji ima pet potprograma, a sastoji se od knjiga koja želiš pročitati u slijedećih pet mjeseci. Program neka slučajnim redoslijedom odabere koju ćeš knjigu pročitati prvu, a zatim redom do posljednje. 

Svoj program i redoslijed knjiga pošalji učitelju informatike.