PONAVLJANJE 5.-7. RAZREDA

Neke stvari se najbrže rade polako.

O JEZIKU: Python je moćan i lako razumljiv programski jezik. Programi pisani njime obično su kraći, a za njihovo pisanje utroši se manje vremena. Svojim karakteristikama privlači programere širom svijeta, a pokazao se i kao jezik koji može zamijeniti Basic i Pascal u učenju osnova programiranja.

Naziv jezika izraz je poštovanja autora, Guidea van Rossuma, prema britanskoj komičarskoj skupini Monty Python. Logo jezika svojim izgledom podsjeća na zmiju slična imena.


5. RAZRED

INSTALACIJA PROGRAMA PYTHON (na računalo)

Python je besplatan programski jezik i može se instalirati na skoro sve poznatije operativne sustave (Windows, Mac OS i Linux). Instalacijska datoteka može se jednostavno preuzeti na sljedećoj poveznici. Za pomoć pri instaliranju pogledaj video.

Instaliranjem Pythona dobijemo radno-razvojno okruženje pod imenom IDLE. IDLE (Python GUI) je nastalo od Integrated Development Environment što prevodimo kao integrirano razvojno okruženje. GUI dolazi od Graphical User Interface što znači grafičko korisničko sučelje. IDLE podržava dva načina rada: interaktivno (interpretativni) i skriptni (uređivački).


PYTHON ONLINE

Ako nemaš pri ruci svoje računalo, ne brini jer Python online ne trebaš instalirati i možeš ga koristiti na mobitelu, tabletu ili bilo kojem drugom računalu koje nema instaliran Python. Sve što izradiš možeš podijeliti ili preuzeti. 🙂


SUČELJE PROGRAMA PYTHON

Klikni na sliku i istraži!
Klikni na sliku i istraži!

U interaktivnom načinu upisane se naredbe interpretiraju u realnom vremenu, pa tako odmah možemo vidjeti njihov ishod (rezultat). Na taj način možemo jednostavno isprobati neku ideju ili provjeriti kako se ispravno koristiti nekom naredbom. Opisana interakcija odvija se u okruženju koje zovemo Python Shell.

Interaktivno sučelje koristi se tako da se na mjesto unosa (>>>) upisuju neke vrijednosti te uneseni sadržaj potvrdi tipkom Enter. Ako interaktivno sučelje prepozna uneseni sadržaj kao neku naredbu ili vrijednost, izvršit će zadatak ili ispisati zadanu vrijednost. U suprotnom, pojavit će se poruka o pogrešci. Poruke o pogrešci pri unosu sadržaja ili pozivu naredbi se ispisuju crvenom bojom. Kada u Pythonu upišemo riječ koju on ne prepoznaje, dobijemo poruku o pogrešci. To se događa svaki put kada Python ne zna što napraviti s onim što smo mu zadali. Računalna pogreška naziva se još i bug. Danas je bug općeprihvaćen naziv za pogrešku pri pisanju naredbi, iako taj izraz u doslovnom prijevodu znači mali insekt. Taj se naziv počeo upotrebljavati tijekom istraživanja pogrešaka u radu računala još davne 1946. godine kada se pokazalo da su sve pogreške u radu računala uzrokovali mali insekti koji su se zalijepili za releje računala.

* Relej je vrsta prekidača čije je stanje (uključeno ili isključeno) upravljano električnim nabojem, tj. posredstvom elektromagneta ili nekoga drugog mehanizma. Sklopni aparat koji mjeri neku pogonsku veličinu (struju, napon, tlak, brzinu vrtnje, temperaturu, snagu itd.) te pri određenoj vrijednosti te veličine automatski zatvara ili otvara svoje kontakte.


MATEMATIČKI OPERATORI

U Pythonu se upotrebljavaju poznati matematički operatori +, -, *, /, ali i operator cjelobrojnog dijeljenja // te operator ostatka dijeljenja %. U Pythonu je, kao i u matematici, definiran redoslijed izvršavanja matematičkih operatora.

OPERATOR OPIS DJELOVANJA
+zbrajanje
oduzimanje
*množenje
/dijeljenje
//cjelobrojno dijeljenje
%ostatak dijeljenja
PRIORITETOPERATORREDOSLIJED IZVRŠAVANJA
1.()od unutarnjih zagrada prema vanjskim zagradama
2.// * / %slijeva nadesno u izrazu
3.+ –slijeva nadesno u izrazu

PRIMJER: 11 : 4 = 2 i ostatak 3
Rezultat cjelobrojnog dijeljenja (//) bio bi 2 -> 11 // 4 = 2
Rezultat ostatka dijeljenja (%) bio bi 3 -> 11 % 4 = 3


ZNAKOVNI NIZOVI I MATEMATIČKI OPERATORI

Zanimljivo je da se sa znakovnim nizovima mogu upotrebljavati matematički operatori, ali samo operatori zbrajanja (+) i množenja (*).


VARIJABLE

Varijabla je mjesto u memoriji računala označeno simboličkim imenom (npr. a ili b) u koju zapisujemo vrijednost ulaznog podatka.

KAKO ISPRAVNO NAPISATI NAZIV VARIJABLE?

  • U nazivu se mogu koristiti sve znamenke (0-9) i slova
  • Naziv varijable ne može početi znamenkom
  • U nazivu se ne mogu koristiti simboli kao što su @ – / #
  • Razmak se ne može koristiti, ali se za povezivanje riječi koje čine naziv varijable može koristiti znak _ npr.: p_znak, p_broj
  • Ne smiju se koristiti riječi koje Python upotrebljava za naredbe, npr. print, int, min, max, True itd….
  • Ne preporučuje se (iako je dopušteno) u nazivu varijable upotrebljavati dijakritičke znakove hrv. abecede (š, č, ć, ž, đ)
  • Python razlikuje velika i mala slova. Varijable a i A dvije su različite varijable.

ISPIS U VIŠE REDOVA

Ako želimo ispis u više redaka pomoću naredbe print, tada za prelazak u novi red koristimo parametar \n
Oznaku dobijemo kombinacijom tipki, tj. i stodobnim pritiskom desne tipke Alt Gr i tipke Q.
Npr.


VARIJABLE I NAREDBA PRIDRUŽIVANJA

Varijabla je mjesto u memoriji računala označeno simboličkim imenom (npr. a ili b) u koju zapisujemo vrijednost ulaznog podatka. Znači, varijabla je spremnik za neku vrijednost, ona nije ime podatka nego ime spremnika. Što to zapravo znači?

Svaki računalni program se koristi nekim vrijednostima. One se moraju negdje pohraniti kako bi ih računalo prepoznalo.

Npr. zamislite kalkulator! Pokušati ćemo izračunati 5+6. Sada nemojmo više zamišljati kalkulator izvana, nego ga zamislimo iznutra. Kad upišemo prvi broj (5) on se mora negdje pohraniti da bi kalkulator zapamtio koji smo broj upisali te da možemo nastaviti pisati brojeve. Dakle, mjesto gdje se upisao prvi broj 5 se zove varijabla (dio spremnika). Zatim mu zadajemo matematički operator ali i drugi broj (6) koji se opet sprema u drugu varijablu/dio spremnika. Te varijable se mogu nazivati kako god! Kad smo na kalkulatoru kliknuli znak = kalkulator je dobio naredbu da želimo izračun prethodnog matematički izraz, a to je 5+6=
I što se sad događa izvana, na zaslonu? Iz prve varijable dobije naredbu te na zaslonu ispiše broj 5, zatim doda matematički operator zbrajanja te iz one druge varijable na zaslonu ispiše broj 6. U onom trenutku kad je primio naredbu = (u Pythonu -> print) ispisao nam je rezultat (11).
Programer je kalkulatoru “unutra” zapisao kako će reagirati i što će raditi kad mu korisnik zada neke radnje. A mi smo kao korisnici upisali neke matematičke izraze (po izboru) i on je prema zadanim uputama izvršio taj zadatak! Tako jednostavno, a tako komplicirano, ha?
Nije! Jednostavno je. Imamo programera i korisnika. Prvi piše točne i jasne upute nekom programu (kalkulatoru, računalnoj igrici, wordu, mrežnoj stranici i sl.), a drugi se igra i čudi kako se sve tako dobro i točno izvršava?!
Još nešto! Varijablama se uvijek daju logički nazivi. Zašto? Pa da je lakše upravljati računalnim programom/kodom jednog dana kad se vratimo i želimo ga (ili netko drugi) nadograditi. Zamisli da otvoriš svoj program koji si pisao prije godinu dana, zaboravio si što si pisao unutra i piše ovako:
Unesi prvi broj: -> a varijablu u koju će se spremiti taj broj si nazvao informatika
Unesi drugi broj: -> a varijablu u koju će se spremiti drugi broj si nazvao treci_broj
Je li tako da nema smisla? Tako je. Zato je logično (ako pišemo program u koji korisnik treba unijeti dva broja, da će nam se i varijable zvati prvi_broj i drugi_broj, ili broj1 i broj2 itd.


Koristimo li se varijablama u svakodnevnom životu?

Na svakom sportskom događaju u kojem se dvije ekipe natječu kako bi prikupile što više bodova koristi se semafor za prikaz trenutačnog rezultata. Vrijednosti DOMAĆI i GOSTI možemo smatrati varijablama koje imaju trenutačnu vrijednost 37 i 25. Važno je napomenuti da se vrijednosti u varijablama mogu mijenjati. Npr. ako DOMAĆI pogode sljedeći koš (tricu), u njihovu će se varijablu spremiti sljedeći rezultat -> trenutačno stanje (37) + 3 nova boda, taj matematički izraz će se izračunati te će se na semaforu ispisati rezultat 40:25.


ZNAK JEDNAKOSTI I ZNAK PRIDRUŽIVANJA

Znak = je znak pridruživanja. To nije matematički simbol jednakosti koji označava da je nešto s lijeve strane znaka = jednako vrijednosti s desne strane znaka =. U programiranju pridružiti znači varijabli s lijeve strane znaka = pridružiti vrijednost koja se nalazi s desne strane (brojčana ili znakovna).

znak pridruživanja =
znak jednakosti ==

PRIDRUŽIVANJE ZNAKOVNOG NIZA

Znakovni nizovi (tekst -> riječi, rečenice…) pridružuju se tako da se upisuju unutar polunavodnika (‘ ‘) ili navodnika (” “). Također, sa znakovnim nizovima mogu upotrebljavati matematički operatori, ali samo operatori zbrajanja (+) i množenja (*).
Operator zbrajanja (+) spaja znakovne nizove.
Operator množenja (*) uvećava znakovni niz onoliko puta s kojim smo ga brojem pomnožili



UREĐIVAČKO SUČELJE I MOJ PRVI PROGRAM

Do sada smo naučili kako pokrenuti interaktivno sučelje te kako izvršiti jednu naredbu. No ako želimo napraviti računalno rješenje nekog većeg problema, najčešće moramo upotrijebiti više naredbi. Možemo li to učiniti u interaktivnom sučelju?
Da, možemo. Naredbe će se pokreniti jedna po jedna, ali će se taj niz izgubiti kad Python zatvorimo. Ako nam zatreba isto takvo računalno rješenje, nećemo ga moći ponovo pokrenuti.
Zbog toga ćemo sada naučiti kako pokrenuti novi prozor, tzv. uređivački (programski) dio sučelja IDLE.

Datoteka programa u Pythonu ima nastavak .py i ne treba ga upisivati pri spremanju, Python će ga automatski dodati.

UREĐIVAČKO SUČELJE (SKRIPTNI NAČIN)

Skriptni način rada omogućuje korisniku pisanje, mijenjanje i trajno pohranjivanje programa. Pored toga, tako napisan program možemo pokretati i izvršavati više puta.

Novi prozor se otvara klikom na izbornik File u interaktivnom sučelju, a zatim odabirom naredbe New File. Uređivačko sučelje prepoznajemo jer mu je radni prostor prazan -> nema znaka upita (>>>).


KAKO ISPRAVNO NAPISATI SVOJ RAČUNALNI PROGRAM?

Tijek izrade računalnog programa izgleda ovako:

  1. napiši računalni program
  2. pohrani računalni program
  3. pokreni računalni program
  4. provjeri točnost računalnog rješenja
  5. ako je potrebno, izmijeni računalno rješenje.

KAKO SPREMITI SVOJ RAČUNALNI PROGRAM?

Iz padajućeg izbornika File odaberite naredbu SaveAs…
U sljedećem koraku upišite (logički) naziv računalnog programa te odaberite naredbu Spremi.
Zašto logički naziv? Da ga je kasnije po potrebi lakše naći na računalu u mapi.
Npr. 3.3. – 1. zadatak

U slučaju da smo otvorili računalni program te napravili neke izmjene u njemu, nije potrebno ponovno klikati SaveAs… već je dovoljno Save.


KAKO OTVORITI VEĆ SPREMLJENU DATOTEKU?

Dva su načina otvaranja već spremljene datoteke.

  1. desni klik na datoteku -> Edit with IDLE -> Edit with IDLE

2. Otvoriti interaktivno sučelje -> Open -> pronaći spremljenu datoteku -> Otvori


POKRETANJE (IZVRŠAVANJE) NAPISANOG RAČUNALNOG PROGRAMA

Program se izvršava tako da se u padajućem izborniku Run odabere naredba Run Module ili jednostavno tipkom F5 na tipkovnici. Ukoliko program nije spremljen Python će prvo ispisati upozorenje da računalni program treba pohraniti. Nakon pokretanja programa prikazuje se rezultat (ispis) u prozoru interaktivnog sučelja.



Separator znači da će Python između podataka staviti znak koji smo upisali između navodnika! Ako je takvo pravilo, pogledajmo gornju sliku i proučimo kako radi separator ‘ ‘
Pravilo je i da zarez u Pythonu znači razmak. Ako želimo na kraju dodati točku (iza C), ispis bi nam izgledao ovako:
Zbroj brojeva 5 i 6 iznosi 11 .
Ispis ne izgleda lijepo jer između broja 11 i točke ima razmak. To možemo popraviti tako da dodamo separator ‘ ‘ (bez razmaka unutar polunavodnika). Na taj način smo odredili da između ispisanih sadržaja neće biti razmaka i dobili smo ispravan ispis (pripazi na razmak unutar znakovnog niza).
Pokušaj i ti!

ŠTO NAPRAVITI AKO PROGRAM NIJE DOBRO NAPISAN?

  1. otvori već napisani računalni program
  2. ispravi pogreške
  3. spremi program (dovoljno je samo kliknuti na tipku F5)
  4. provjeri svoje rješenje (ispis) u interaktivnom sučelju

TIPKA TAB

Uočili ste da pri pisanju programa Pythonov uređivač neke riječi boji određenom bojom. Naredbe i funkcije će se na taj način lakše uočavati i pronalaziti. Za uvlačenje naredbi pri pisanju programa dobro je koristiti se tipkom TAB. Ako za uvlačenje naredbi koristimo tipku razmaknicu potrebno je kliknuti 4 puta (4 mjesta) koliko označava i jedan klik na tipku TAB.

Uočimo uvlačenje naredbi kod pisanja računalnog programa u Scratchu.


KOMENTARI U RAČUNALNOM PROGRAMU

Želimo li napisati komentar u računalnom programu, kako bismo pobliže objasnili naš kôd nekome tko će koristiti taj program važno je prije komentara napisati znak # (hešteg). Pri pokretanju programa, Python će zanemariti taj dio programa i izvršavati će radnje prema napisanom redoslijedu. Ukoliko bismo napisali komentar bez da prethodno napišemo #, Python bi i taj red pokušao izvršiti. Naravno, s obzirom da komentar nije nikakva naredba, Python to ne bi razumio i ispisao bi pogrešku.

RAD S ULAZNIM VRIJEDNOSTIMA
NAREDBE input(), int()

Do sada smo naučili kako upotrijebiti varijable u naredbi pridruživanja te naredbi za ispis. Napisali smo jednostavan računalni program koji je izračunao zbroj brojeva A i B, ali sa već određenim jedinicama. Možemo li napisati program a da korisnik upiše sam brojeve koje želi, a ne one koje mu mi (programeri) određujemo? Naravno da da. 😉

Za pisanje takvog računalnog programa koriste se ulazne vrijednosti. To su vrijednosti koje nisu unutar naredbe pridruživanja i samog programa (npr. a=10) nego se njihove vrijednosti unose preko tipkovnice (kad se program pokrene u interaktivnom sučelju će tražiti unos tih podataka).

Naredba input() računalu naređuje unošenje neke cjelobrojne vrijednosti (naredba int()) s pomoću tipkovnice i pridruživanje te vrijednosti varijabli A.
Naredba input() – traži od korisnika unos ulaznih vrijednosti koji će se dalje koristiti u izvršenju programa. Podatak koji se unosi uvijek se pridružuje nekoj varijabli:
a = input ( ‘Neka vrijednost: ‘ )
Prvo se upisuje naziv varijable, zatim znak pridruživanja, naredba input, a u zagradi poruka koja će se prikazati prije unosa ulazne vrijednosti (poruka nije obvezna, ali je poželjna zbog lakšeg snalaženja u programu).

Naredba int() – pretvara podatak u cjelobrojnu vrijednost. Prema osnovnim postavkama, naredba input() uneseni podatak pridružuje varijabli kao znakovni niz. Ako se unose brojevi, naredba int() prije pridruživanja unesenu vrijednost pretvori u broj.

integer (engl.) -> cijeli broj -> skraćeno int
input (engl.) -> ulaz -> ulazne vrijednosti


image alt
Naredbe se izvršavaju s desna na lijevo:
1 – naredba input ispiše poruku u zagradi i traži da korisnik upiše podatak. U tom trenutku izvršenje skupa naredbi je zaustavljeno dok se podatak ne unese.
2 – naredba int uneseni podatak pretvara u cjelobrojnu vrijednost
3 – operacijom pridruživanja uneseni podatak se pridružuje varijabli (u ovom slučaju a)


VAŽNO!
Ako u računalnom programu pišemo neku brojčanu vrijednost obavezno je navesti naredbu int()
Ako u računalnom programu pišemo samo znakovni niz, dovoljno je napisati naredbu input()

Slika prikazuje primjer naredbe input() kojom se računalu naređuje unošenje neke cjelobrojne vrijednosti (naredba int()) s pomoću tipkovnice i pridruživanje te vrijednosti varijabli A. Izvršenjem naredbe, u interaktivnom sučelju pojavit će se poruka Unesi prvi broj: nakon čega program čeka na unos neke vrijednosti putem tipkovnice.
Slika prikazuje primjer naredbe input() kojom se računalu naređuje unošenje neke riječi (znakovnog niza) s pomoću tipkovnice i pridruživanje te vrijednosti varijabli rijec1. Izvršenjem naredbe, u interaktivnom sučelju pojavit će se poruka Unesi prvu riječ: nakon čega program čeka na unos znakovnog niza putem tipkovnice.

OSNOVNE POGREŠKE U RADU S ULAZNIM VRIJEDNOSTIMA

Koliko je važno znati kakve ulazne podatke očekuje računalni program?
Zbog toga jer ako npr. napišemo naredbu int(), a u interaktivnom sučelju pri izvršavanju programa unesemo riječ (znakovni niz), program će nam prikazati grešku!

Međutim, sada nam je puno lakše, jer program nije napisan u interaktivnom sučelju (kad bi zbog ovakve greške trebali sve pisati ispočetka), već u uređivačkom pa ga je potrebno samo ponovno pokrenuti i upisati ispravan unos (npr. broj 2)!

KAKO RADI MOJ PROGRAM?

Za računalni program kojeg pišemo da korisnik može sam upisati tražene vrijednosti (sjeti se! -> int(input()) ) kažemo da je program s ulaznim vrijednostima. Npr.

Ako znamo da je ovo rezultat/ispis nekog računalnog programa (a znamo po tome što se rezultat programa ispisuje plavom bojom) -> onda je lako zaključiti da su u programu zadane ulazne vrijednosti int(input()).
Prema tome, proučimo li ovaj ispis, računalni program nije teško zaključiti kako bi računalno rješenje trebalo izgledati.


U redu. Kako onda radi ovaj naš program? Od čega se sastoji?
Već otprije znamo da Python izvršava naredbe jednu za drugom (slijedno), onako kako su napisane. Promotrimo li gornje računalno rješenje, jasno se ističu tri osnovna dijela izvršavanja računalnog programa.

  1. Unos podataka (ULAZ)
  2. Obrada podataka (OBRADA)
  3. Ispis rezultata obrade (IZLAZ)

Ti se dijelovi mogu prepoznati u svakom računalnom programu.


Analizom nekog računalnog programa, odnosno ulaznih i izlaznih primjera provjeravamo točnost rješenja. Ukoliko primjetimo da se rješenje/ispis razlikuje od očekivanog, velika je vjerojatnost da je nastala pogreška. Takve pogreške nazivamo logičke pogreške. Najčešće nastaju zbog npr. krivog izračunavanja, pogrešnog odabira varijabli ili formula za izračunavanje.
Pogreške nastale zbog krivo napisanih naredbi, zaboravljenih zagrada i sl. nazivamo sintaktičke pogreške. Tada se u interaktivnom sučelju pojavljuje obavijest s naznakom o kakvoj je pogrešci riječ te u kojoj se liniji programa ona nalazi.

VJEŽBE

1. Napiši program koji će izračunati opseg kvadrata sa stranicom a.

2. Napiši program koji te traži da uneseš neka dva broja (proizvoljno), a zatim ispisuje zbroj, razliku, umnožak i količnik ta dva broja, jedno ispod drugog.
*za prelazak u novi red možete koristiti znak \n

ili


SAMOSTALNE VJEŽBE

Zadani su primjeri testiranja. Analiziraj ih i prema njima napiši računalne programe.

1. Napiši program koji pita unos u kilometrima, a zatim ih pretvara u metre.
Primjer testiranja:


2. Ana i Marija čitaju lektiru. Ana je pročitala n stranica knjige, a Marija tri puta više od nje. Napiši program koji će na temelju ulaznih vrijednosti izračunati i ispisati koliko je stranica pročitala Marija.
Primjer testiranja:


3. Napiši program za pravokutnik koji treba izračunati opseg i površinu tog pravokutnika.
o=2*a+2*b
p=a*b
Primjer testiranja:


4. Napiši program koji te pita koja ti je omiljena pjesma, a zatim ispisuje rečenicu: Uživaj u pjesmi (ime varijable), uhvati ritam muzike za ples!
Primjer testiranja:


5. Napiši program koji pretvara vrijednost izraženu u metrima u vrijednost izraženu u decimetrima (dm), centimetrima (cm) te u milimetrima (mm).
Primjer testiranja:


6. Napiši program koji pretvara vrijednost izraženu u metrima (m) u vrijednost izraženu u kilometrima (km).
Primjer testiranja:


7. Na stolu je stoljnjak duljine a decimetara (dm) te širine b decimetara (dm). Na svaki dm2 trebaš zašiti dvije sličice. Napiši program koji će izračunati koliko je sličica potrebno kako bi sličicama, prema zadanom naputku, popunio cijeli stoljnjak.
Primjer testiranja:

ALGORITMI

Što smo dosad naučili?
Stvarali smo programska rješenja, upisivali, računali i ispisivali različite vrijednosti, čak i crtali u Pythonu. Pri stvaranju rješenja činili smo i pogreške. Najteži dio zadatka bio je odrediti kojim redoslijedom složiti naredbe računalnog programa, odnosno smisliti odgovarajući algoritam.

Algoritam je postupak kojim se opisuje točan redoslijed kojim obavljamo neke radnje. Do sada ste na računalu igrali igrice, crtali, pisali, izrađivali prezentacije, pregledavali mrežne stranice. Da bi sve to mogli raditi, netko je morao “naučiti” računalo kako će to izvoditi.
Algoritme susrećemo u raznim situacijama u svakodnevnom životu, kao što su prelazak ulice, rješavanje domaće zadaće, odlazak u trgovinu i slično.

VAŽNO! PODSJETIMO SE!
Za uspješno izvršavanje većine zadataka, potrebno je put rješavanja unaprijed osmisliti.
Za rješavanje nekih zadataka treba više napora, a neke izvodimo spontano.
U rješavanju problema pomoći će nam plan rješavanja.
Precizno napravljen plan izvedbe nekog slijeda postupaka nazivamo algoritam!

ALGORITMI

Ovisno o načinu slaganja uputa, postoje 3 vrste algoritama:

Algoritam slijeda je postupak kod kojeg se upute izvršavaju jedna iza druge.
UNOS PODATAKA
OBRADA PODATAKA
ISPIS PODATAKA

Algoritam ponavljanja -> postupak kod kojeg se niz naredbi ponavlja određeni broj puta.

Algoritam grananja postupak kod kojeg obavljanje radnje ovisi o odgovoru na postavljeno pitanje.
AKO -> ONDA
AKO -> ONDA -> INAČE

DIJAGRAM TIJEKA

Na koji način možemo prikazati algoritam?
Grafički, riječima govornog jezika (pseudojezikom) ili naredbama nekog programskog jezika.

Dijagram tijeka je grafički prikaz algoritma (crtežom prikazan algoritam) koji se sastoji od niza simbola povezanih strelicama koje određuju smjer izvršenja postupka. Svaki simbol predstavlja jedan korak u postupku izvršenja.


VJEŽBE

PrimjerPrikažimo algoritam za zadatak koji zbraja dva broja.

VJEŽBE – Izradi algoritam (pseudojezik, dijagram tijeka i računalni program) za:

  • zadatak koji preračunava grame u dekagrame (dag=g/10)
  • zadatak koji preračunava sekunde u minute (min=sek/60)
  • zadatak koji preračunava metre u kilometre (km=m/1000)

PETLJA FOR

Nakon što smo usvojili osnovnu algoritamsku strukturu slijeda te stvorili prve računalne programe, krenimo korak dalje. Upoznajmo se s naredbom koja će nam omogućiti da na jednostavan način ponavljamo izvršavanje nekih naredbi.

Sjetimo se kako smo u grafičkom modulu crtali razne geometrijske likove. To smo rješavali slijedno tako da smo pisali sve naredbe jednu ispod druge, iako su se neke ponavljale i više puta. Pitali ste me i odgovorila sam vam tada na satu – Da, možemo to i skraćeno pisati, sve u jednom redu, ali idemo polako.

Kad je u računalnom programu potrebno više puta izvršiti neke naredbe, najbolje je upotrijebiti naredbe koje nazivamo petlje. Petlje čine algoritamsku strukturu ponavljanja, a razlikujemo ih s obzirom na način na koji se određuje broj ponavljanja naredbi.

Upoznat ćemo naredbu for u kojoj je točno određen broj ponavljanja naredbi. Dakle for petlju koristimo kad god nam je unaprijed poznat broj ponavljanja neke radnje!

Naredba for uvijek upotrebljava jednu varijablu. Nepisano pravilo je da je to najčešće slovo i ili j, iako ne mora biti. Ta varijabla, u ovom gore primjeru je to i služi kao brojač ponavljanja.
for i in range (3): -> što znači 3 puta mi izvrši naredbu koja piše ispod, a u našem slučaju piše
fd(100); lt(120) -> dakle, 3 puta za redom izvrši 100 koraka naprijed i okreni se za 120 stupnjeva. Kad to izvršiš – stani.

KAKO RADI PETLJA FOR?

Promotrimo djelovanje petlje for na primjeru crtanja kvadrata s duljinom stranica 100.

OBJAŠNJENJE -> Petlja for upotrebljava varijablu i kao brojač kojim kontrolira koliko se puta ponavlja izvršavanje odabranih naredbi. Brojač se postavlja na početnu vrijednost, a dvakim daljnjim izvršavanjem petlje brojač se povećava dok ne dostigne graničnu (zadnju) vrijednost i petlja ne prekine s radom. U našem primjeru granična vrijednost brojača je 4.

VAŽNO! Ako nije navedena početna vrijednost, Python uvijek pretpostavlja da je ta vrijednost 0. Ako nije navedena vrijednost uvećavanja brojača, Python uvijek pretpostavlja da je ta vrijednost 1.

ŠTO ODREĐUJE POČETNU I GRANIČNU VRIJEDNOST VARIJABLE PETLJE?
dio range (početna, granična, korak)

AKO JE STRANICA LIKA NEPOZNATA…


BROJIMO BROJAČEM… 1, 2, 3, 4 … n

ZADATAK 1.
Ispiši sve prirodne brojeve manje od prirodnog broja n (nepoznati broj).

  • Postavimo si pitanje. Koji su to manji brojevi od n?
  • Svi brojevi od 1 (jer je to prvi prirodni broj) do tog broja n (kojeg će netko odrediti)
  • Do kad se izvršava petlja ponavljanja? Dok je vrijednost varijable petlje manja od granične vrijednosti.

Npr. za n=10 program bi trebao ispisati brojeve 1, 2, 3, 4, 5, 6, 7, 8, 9

Koristeći parametar end=’ ‘ unutar print naredbe vrijednosti će se ispisati jedne pored druge, odvojene znakom razmaka (‘ ‘).

ZADATAK 2.
Ispiši sve parne brojeve koji su veći od 12 a manji od 29.

ZADATAK 3. – PRIMJER SA ZNAKOVNIM NIZOM

NAJČEŠĆE POGREŠKE U RADU S PETLJOM FOR

  • pogrešno definiranje početne i granične (završne) vrijednosti brojača
  • pogrešno korištenje uvlake za naredbe
  • zaboravljanje dvotočke (koja najavljuje naredbu ili blok naredbi) na kraju uvjeta

SAMOSTALNE VJEŽBE

ZADATAK 1. Napiši računalni program sa for petljom koji će nacrtati pravilni osmerokut.

ZADATAK 2. Za učitani broj učenika u razredu napiši računalno rješenje koje će ispisati redni broj učenika koji imaju parni broj u imeniku.

ZADATAK 3. Napiši računalni program sa for petljom koji će nacrtati pravilni peterokut duljine stranica 100.

ZADATAK 4. Što će se ispisati nakon izvršavanja sljedećih naredbi?

ZADATAK 5. Što će se ispisati nakon izvršavanja sljedećih naredbi?

ZADATAK 6. Napiši program koji ispisuje sve prirodne brojeve koji se nalaze između brojeva a i b uključujući i te brojeve (oba!). Brojevi a i b ulazne su varijable koje se unose s tipkovnice.

ZADATAK 7. Napiši program koji će ispisati prvih 10 prirodnih brojeva kao što je prikazano.


6. RAZRED

GRANANJE
IF…
IF…ELSE…
IF…ELIF…ELSE

Kao što se u svakodnevnom životu često susrećemo s nekim odlukama, tako je i pri stvaranju računalnog rješenja često izvršiti zadatak koji ovisi o nekoj odluci u programu. (ako je ta tvrdnja točna -> izvrši mi “to i to”)

Kad pišemo računalne programe često dolazimo u situaciju kad postoji neko pitanje na koje tražimo odgovor u obliku računalnih naredbi koje je potrebno izvršiti (provjeravamo je li je neki broj pozitivan ili nije, provjeravamo je li je neki broj djeljiv s nekim drugim brojem, je li je paran ili neparan i sl.).

U navedenim smo primjerima upotrijebili pitanja, odnosno odluke koje su uvijek imale odgovor DA ili NE. Za postavljanje pitanja u uvjetima služimo se relacijskim operatorima.

RELACIJSKI OPERATORDJELOVANJE
>veće od
<manje od
>=veće od ili jednako
<=manje od ili jednako
==jednako
!=nije jednako (različito)

Računalni programi mogu razumjeti samo uvjete koji kao rezultat vraćaju vrijednosti DA (istina) ili NE (laž) zbog čega takve uvjete nazivamo logičkim uvjetima. Kada je rezultat logičkog uvjeta DA, obično se kaže da je uvjet ispunjen, odnosno kada je rezultat logičkog uvjeta NE, kažemo da uvjet nije ispunjen.

Ovakav oblik algoritamske strukture u kojoj se koriste logički uvjeti (odluke) nazivaju se grananje.


Ako slažemo odluke koje uključuju više od jednog pitanja onda ih moramo nekako povezati. To rade logički operatori: I (AND), ili (OR) i ne (NOT).

Za donošenje odluka u programu upotrebljava se naredba if. Pravilo pisanja naredbe if glasi:

PRAVILA!
Nakon rezervirane riječi if i logičkog uvjeta uvijek se piše dvotočka. Ona najavljuje naredbu ili blok naredbi koje je potrebno izvršiti ako je logički uvjet ispunjen.
Nakon upisivanja dvotočke i pritiska na tipku Enter, programski jezik Python automatski postavlja uvlaku (4 prazna mjesta – razmaka ili 1x tipka Tab). Ako nedostaje uvlaka ispred naredbi unutar naredbi if, if…else… i if…elif…else…, pojavit će se poruka o pogrešci (Sintax Error).
U slučajevima kada je nakon dvotočke potrebno upisati više naredbi koje pripadaju naredbi if, sve naredbe treba upisivati s jednakom uvlakom. Takve naredbe čine niz koji nazivamo blokom naredbi.
Nakon što se napiše posljednja naredba jednog bloka i prijeđe u novi redak, potrebno je pokazivač vratiti na početak retka (pomaknuti za 4 mjesta ulijevo). Npr.

Kada u računalnom programu želimo ispitati je li neki broj pozitivan ili nije primjenit ćemo naredbi if…else… (ako…inače…). Ako je broj pozitivan, ispiši “Broj je pozitivan”, inače ispiši “Broj nije pozitivan.”
Naredba if…else… primjenjuje se na sljedeći način:

U ovom primjeru je upotrebljen jedan logički uvjet, izvšili dvije naredbe (ili blok naredi) ovisno o vrijednosti logičkog uvjeta:

  • ako je uvjet istinit (True), izvršava se naredba1 (ili blok naredbi1)
  • ako uvjet nije istinit (False), izvršava se naredba2 (ili blok naredbi2).

Koje su najčešće pogreške u radu s naredbom grananja?
U naredbama grananja obično je najteže definirati logički uvjet. Računalo, odnosno programski jezik ne zna što znači da je broj pozitivan ili paran pa moramo sami pronaći rješenje kako prikazati logički uvjet (odluku). Najčešće to radimo pomoću matematičkih izraza. Pritom treba paziti na to da se u logičkom uvjetu krije neko pitanje. Obično provjeravamo je li neka vrijednost jednaka, veća ili manja od druge vrijednosti.


Pravilo pisanja naredbe if…elif…else… glasi:

Pogedajmo kako to izgleda u primjeru zadatka: Napišite program koji uspoređuje upisani broj s nulom (0).

ODLUKE I PETLJE

U 5. smo razredu naučili kako primijeniti petlju for za ispisivanje određenog (unaprijed poznatog) niza brojeva, npr. parnih brojeva. Pri analizi problema uočili smo da nam trebaju svi prirodni brojevi počevši od broja 2 do broja n, ne zaboravljajući pritom da se sljedeći parni broj uvijek računa kao uvećanje trenutačnog parnog broja za 2. Npr.

U navedenom je primjeru poznata početna vrijednost indeksa petlje što uvelike olakšava rješavanje zadatka. Međutim, ako je problem definiran na način da nam je odmah nepoznata početna vrijednost indeksa petlje, jedino je rješenje upotrijebiti naredbu if unutar petlje koja će izdvojiti podatke koji zadovoljavaju zadani uvjet (u ovom se slučaju izdvajaju parni brojevi). Npr.

U rješenju ovog zadatka možemo definirati da je prva vrijednost koju provjeravamo broj a, ali ne možemo unaprijed znati je li taj broj paran ili ne. Zbog toga je nužno uvesti naredbu grananja u samo tijelo pelje kako bi ona pronašla i ispsala parne brojeve.


U programiranju su česte situacije kada je potrebno nešto drugo napraviti ponavljanjem petlje osim ispisivanja nekih vrijednosti, npr. prebrajati ili zbrojiti vrijednosti koje zadovoljavaju neki uvjet. U takvim situacijama moramo uvesti novu varijablu koja stalno mijenja vrijednost izvršavanjem odabranih naredbi programa.


U programskom jeziku Python postoji petlja while koja nam omogućuje uvjetno ponavljanje naredbi. Petlja while ponavlja izvršavanje naredbi sve dok je uvjet istinit, odnosno završava s radom čim uvjet više nije istinit. Oblik zapisivanja while petlje u Pythonu je:

Pravilo!
Sve zadatke koje možete riješiti s for petljom možete riješiti i s while petljom, ali obratno ne vrijedi. Neke zadatke možete riješiti samo s while petljom.


7. RAZRED

PONOVIMO NEKA PRAVILA!

U našim prvim računalnim programima u programskom jeziku Pythonu upotrebljavali smo brojčane i tekstualne vrijednosti. Tekstualne smo vrijednosti upisivali unutar polunavodnika ( ‘ ‘ ), nazivajući ih znakovnim nizovima.
Vrste podataka koje se koriste u računalnom rješenju važne su za primjenu odgovarajućih naredbi za upisivanje i ispisivanje podataka te različitih funkcija kojima dodatno oblikujemo podatke. Programski jezik Python razlikuje nekoliko vrsta jednostavnih podataka.

BROJČANI TIP PODATAKA

Decimalne vrijednosti se, kao i u matematici, prikazuju kao dvije cjelobrojne vrijednosti odvojene decimalnom točkom, npr. 4.56

Koje operacije možemo primjenjivati na decimalnim vrijednostima?

Mnogi programski jezici imaju neku funkciju koja omogućuje razdvajanje decimalnog i cijelog decimalnog broja.

Kako decimalni broj pretvoriti u cijeli broj? Primjenom funkcije int() decimalna vrijednost pretvara se u cjelobrojnu tako da se odbaci decimalni dio te vrijednosti. Obrnuti postupak, pretvaranja cjelobrojne vrijednosti u decimalnu postižemo primjenom funkcije float().

int – naziv za cjelobrojnu vrijednost
float – naziv za decimalnu vrijednost

LOGIČKI TIP PODATAKA

Logički tip podataka se najčešće rabimo u naredbama grananja pri ispitivanju vrijednosti logičkih uvjeta. Logički uvjet je uvijek neki logički izraz kojim nešto provjeravamo te koji može imati samo dvije vrijednosti: True (istina) ili False (laž). Logički tip podataka smo učili u naredbama grananja (naredbe if, if…else, if…elif…else) te uvjetnog ponavljanja (naredba while) gdje, ovisno o logičkom uvjetu (if a>5: … ako je a veće od 5 ispiši… (DA/NE)) program donosi odluku o daljnjem ponašanju programa. Ako želimo da varijabla pohranjuje logičku vrijednost, možemo joj pridružiti vrijednost logičkog izraza ili pridružiti jednu od logičkih vrijednosti.

ZNAKOVNI NIZ

Znakovni niz podataka (string) osnovni je tip podataka za pohranjivanje tekstualnih vrijednosti. To je niz znakova koji predstavlja npr. riječ ili rečenicu zapisanu uvijek unutar zatvorenih polunavodnika ili navodnika. (‘Mate’ ili “Mate”)

Također smo naučili primjenjivati matematičke operatore nad znakovnim nizom kao što su zbrajanje i množenje.

Znakovni se niz može definirati kao prazan niz tako da se unutar polunavodnika ne upisuju znakovi.

RAD S DIJELOVIMA ZNAKOVNOG NIZA – INDEKSIRANJE ZNAKOVNOG NIZA

Znakovni niz možemo promatrati kao niz znakova koji su poredani zadanim redoslijedom. Brojčano označavanje položaja znakova unutar nekoga znakovnog niza nazivamo indeksiranje. Tim postupkom svakom znaku niza pridružujemo njegov indeks, odnosno broj koji označava mjesto znaka unutar odabranog niza. U programskom jeziku Python prvom se znaku nekog znakovnog niza uvijek pridružuje indeks nula (0), a svakom sljedećem znaku sljedeći broj 1, 2, 3, 4…

r=Python
index012345

Kako dohvatiti (zapisati) pojedine znakove niza?

Dohvaćanje znakova niza postiže se tako da se uz naziv znakovnog niza unutar uglatih zagrada upiše indeks znaka!

DOHVAĆANJE VIŠE ZNAKOVA ZNAKOVNOG NIZA ISTODOBNO – ISJEČAK ZNAKOVNOG NIZA

Ako želimo dohvatiti više znakova nekog znakovnog niza, unutar uglatih zagrada moramo upisati indeks početnog i krajnjeg znaka odabranog isječka odvojenih znakom dvotočke.

Pazi! Računa se OD nekog broja/indeksa DO nekog broja/indeksa (ne uključuje taj broj/indeks!)



RAZLIČITI NAČINI DOHVAĆANJA POJEDINIH DIJELOVA ZNAKOVNOG NIZA

Ako dohvaćamo niz od početka do npr. 4. indeksa – to možemo zapisati i kao r[:3] umjesto da pišemo r[0:3]

Ako dohvaćamo niz od npr. 2. indeksa do kraja niza – to možemo zapisati i kao r[2:] umjesto da pišemo r[2:6]

Ako u nizu ne navedemo početnu i krajnju vrijednost, Python će za isječak uzeti cijeli znakovni niz. r[:]

Ako u nizu navedemo dvije dvotočke i treći broj 2, program će ispisati svaki drugi znak, počevši od prvog. r[::2]

r[-1] znači zadnje slovo u znakovnom nizu



Ako je indeks negativan broj, brojanje kreće od kraja niza znakova. Slova u riječi “eskim” označena su indeksima od 0 do 4, ali slova imaju i negativne indekse gledajući zdesna ulijevo.

r[0] r[1] r[2] r[3] r[4]
ESKIM
r[-5] r[-4] r[-3] r[-2] r[-1]
  • niz [-1] – vraća zadnji znak
  • niz [-3] – vraća treći znak zdesna
  • niz [-5:-2] – vraća od petog do trećeg znaka
  • niz [4:2] – 4>2 pa ne vraća ništa, odnosno vraća “prazan niz”

Funkcije i metode za rad sa znakovnim nizovima


Jedan od prvih koraka pri izradi nekog računalnog rješenja jest promišljanje o vrti ulaznih podataka te načinu pohranjivanja tih podataka u spremniku računala.

Odgovarajućim funkcijama kao što su int(), float(), te str() najavljujemo programskom jeziku Pyhonu kakav tip podataka treba prihvatiti putem ulaznih vrijednosti.

funkcija int() -> za definiranje cjelobrojne vrijednosti (int -> integer)
funkcija float() -> za definiranje decimalne vrijednosti
funkcija str() -> za definiranje znakovnog niza (str -> eng. string)

Tip ulaznog podatka utječe na njegovu daljnju obradu u programu te primjenu različitih funkcija i operatora.


MOGU LI SE BROJČANE VRIJEDNOSTI POHRANJIVATI ILI UPOTREBLJAVATI KAO ZNAKOVNE?

DA!

Svaka se vrijednost pa tako i brojčana, može upisati u znakovni niz. No, ako brojčanu vrijednost upotrebljavamo kao znakovnu, tada se na njih primjenjuju operatori i funkcije koje su karakteristične za rad sa znakovima.
Brojčane vrijednosti pretvaramo u znakovni niz (engl. string) primjenom funkcije str().


FUNKCIJE

U radu sa znakovnim vrijednostima često je potrebno utvrditi duljinu znakovnog niza, odnosno broj znakova od kojih se sastoji neki znakovni niz. U programskom jeziku Pythonu tu ulogu ima funkcija len(), koja kao rezultat vraća broj znakova od kojih se sastoji znakovni niz (svi znakovi).

Ako želimo da unesena vrijednost bude, npr. cjelobrojna, tada u pozivu naredbe za upisivanje podataka moramo pozvati funkciju int(). Dakle, za cjelobrojnu vrijednost pozivamo naredbu int(input()), a za decimalnu vrijednost pozivamo float(input()).

PRIMJER


METODE

Osim operacija i funkcija, u radu sa znakovnim nizovima mogu se koristiti i metode. Neke od metoda koje nudi programski jezik Python prikazane su u tablici.


KOJA JE RAZLIKA IZMEĐU FUNKCIJA I METODA?

Pri pozivu neke funkcije, argument se uvijek piše unutar zagrada nakon naziva funkcije, a metoda se poziva kao svojstvo koje opisuje varijablu, u našem slučaju znakovni niz. Metoda se uvijek piše nakon varijable ili objekta koji opisuje te odvojena točkom od varijable.

Navedene metode ne mijenjaju vrijednost znakovnog niza nego prikazuju kopiju znakovnog niza nad kojim su učinjene neke promjene ili oblikovanja.

PRIMJER


Nizovi podataka – liste

Do sada smo – ako smo radili s više ulaznih vrijednosti – pohranjivali smo ih u različitim varijablama. Međutim, to se može napisati i puno jednostavije, unutar jedne strukture podataka, osobito ako je pri izradi računalnog rješenja potrebno upisati veći broj podataka koji imaju neko zajedničko obilježje.

Primjer ulaznih podataka koje povezuje neko zajedničko obilježje su imena učenika, vrijednosti dnevne promjene temperature zraka i sl.

Lista je struktura podataka programskog jezika Python koju možemo iskoristiti za pohranjivanje takvih podataka. Možemo reći da listu čini skup nekih podataka, koje nazivamo elementima liste.

Elementi liste mogu biti podatci različitog tipa, a u programskom jeziku Python pišu se unutar uglate zagrade i odvojeni su zarezom. Jedna lista može sadržavati cjelobrojne i decimalne vrijednosti, znakovne nizove pa čak i same liste.

Liste možemo pridružiti nekoj varijabli, ali i stvoriti novu listu primjenom operatora za zbrajanje (+) i množenje (*).

DOHVAĆANJE ELEMENATA LISTE INDEKSIRANJEM

Kako pristupiti elementima liste? Elemente liste možemo dohvatiti s pomoću indeksa, dakle istim načinom kojim smo dohvaćali elemente znakovnog niza.

ISJEČAK LISTE

Kao i kod znakovnog niza, isječak se definira upisivanjem indeksa početnog i završnog elementa isječka odvojenog dvotočkom.
Pazi! Pri stvaranju isječka nikad se ne uključuje element na završnom indeksu isječka.

Kako ćemo znati koliko elemenata sadržava neka lista?

Kao i kod znakovnih nizova i s listama možemo upotrijebiti funkciju len() koja kao rezultata vraća broj elemenata liste podataka.



Ugrađene funkcije i metode za rad s listama (nizovi podataka)

NEKE OD FUNKCIJA UGRAĐENE U PROGRAMSKI JEZIK PYTHON


FUNKCIJE DELETE, MIN, MAX i SUM

Funkcija Delete del(a[i]) uklanja (briše) određeni element iz liste!
[i] i [j] označavaju OD – DO (DO -> ne uključuje taj element!)

PRIMJERI:


PRAZNA LISTA

Kao i kad je riječ o znakovnim nizovima (tekst: riječ/i, rečenice…), lista podataka može biti prazna.
Praznu listu stvaramo tako da nekoj varijabli pridružimo prazne uglate zagrade [], a najčešće je za inicijalizaciju liste.

INICIJALIZACIJA LISTE ->


NEKE OD METODA UGRAĐENE U PROGRAMSKI JEZIK PYTHON

PONOVIMO!
Metode su uvijek pridružene nekom objektu (varijabli, listi…) i pozivaju se nakon objekta kojem su pridružene.


PRIMJERI (STVARANJE LISTA OD ZADANOG BROJA ULAZNIH VRIJEDNOSTI)

PRIMJER NA KONKRETNOM ZADATKU:


PRIMJERI (STVARANJE LISTA OD NEPOZNATOG BROJA ULAZNIH VRIJEDNOSTI)

Često nam u zadatcima broj ulaznih vrijednosti nije unaprijed poznat te on može različit pri svakom izvršavanju programa. U takvim slučajevima nije moguće primjeniti petlju for koja ima zadani broj ponavljanja. (gradivo 6. razreda)
Tada se moramo koristiti metodom split(). Tom se metodom razdvajaju riječi odvojene razmakom unutar znakovnog niza te se stvara nova lista riječi. Elementi liste koji su nastali metodom split() uvijek su znakovne vrijednosti!


PRIMJERI NA KONKRETNIM ZADATCIMA

(Pročitaj zadatke s razumijevanjem te prouči kod i objašnjenje.)





Traženje u nizovima podataka (sekvencijalna pretraga)

Pri rješavanju dosadašnjih zadataka zamijetili smo da se unutar liste podataka mogu pohranjivati različiti tipovi podataka, brojevi, riječi pa čak i cijele rečenice.
Kako pretraživati liste podataka?

Znakovni niz je tip podataka koji može pohraniti i veći broj znakova kao što su rečenice. Pri rješavanju zadataka često je potrebno pronaći određeni podatak ili njegovo mjesto u znakovnom nizu, odnosno ispitati sadržava li zadani niz određenu vrijednost.

Metodom find() pronalazimo mjesto na kojemu se nalazi neka vrijednost u zadanom nizu.


1. način -> računalni program u kojem se provjerava sadrži li isključivo zadano slovo u znakovnom nizu.


2. način -> računalni program u kojem se provjerava sadrži li isključivo odabrano slovo u znakovnom nizu te ispisuje njegovu poziciju (samo prvi indeks!)


3. način -> računalni program u kojem se provjerava sadrži li isključivo odabrano slovo u znakovnom nizu te ispisuje njegovu poziciju (sve njegove indekse!)


PRIMJER SEKVENCIJALNE PRETRAGE

Pretražite na internetu pojam informatika. Odaberite stranicu na Wikipediji. Na tipkovnici upotrijebite tipke CTRL+F te pritiskom na tipku ENTER pronađite riječ informatika.
Koliko se puta riječ informatika pojavljuje u tekstu? Tipkama CTRL+F i ENTER inicirali smo izvršenje programa za sekvencijalnu pretragu te programa za broj ponavljanja objekata u nizu.


Funkcije u Pythonu (potprogrami)

Pri izradi računalnih rješenja analiziramo zadani problem i nastojimo ga rastavljati na manje dijelove te i dalje promatrati na osnovi rješenja njegovih pojedinih dijelova.
Kako napisati mala programska rješenja unutar nekog programa kojima rješavamo dio problema, a mogu se pozivati više puta u programu?

U računalnim programima svaki slijed naredbi ima svoju ulogu:
– naredbe zadužene za rad s ulaznim podatcima
– dio zadužen za oblikovanje i prikazivanje rješenja
– naredbe koje se bave obradom podataka prema zadanim uputama

Niz naredbi koji čine neku funkcionalnu cjelinu dobro je izdvojiti kao neovisni dio programa koji izvršava točno definiran zadatak. Taka niz naredbi nazivamo funkcijom.

Ugrađene funkcije u Pythonu koje smo do sada samo pozivali na izvršavanje su: int(), input(), print(), len()…
Međutim, moguće je stvoriti i vlastite funkcije koje obavljaju određeni zadatak. Kako to napraviti?
Pravilo definiranja funkcije:

1. korak -> definirati funkciju, odnosno naredbama opisati kako ona djeluje, dati joj naziv te navesti popis argumenata koje će funkcija rabiti
2. korak -> aktivirati funkciju unutar programa jednostavno pozivanjem njezina naziva

S obzirom da su funkcijama često za rad potrebni neki ulazni podatci, takve podatke moramo predati funkciji kako bi ona mogla raditi s njima. Funkcije mogu primati podatke (ulazne parametre) koje im korisnik pošalje i prema potrebi vraćati vrijednost.

Razlikujemo 4 vrste funkcija:
1. funkcija koja ne vraća vrijednost nakon izvršavanja i nema ulazne parametre
2. funkcija koja ne vraća vrijednost nakon izvršavanja i ima ulazne parametre
3. funkcija koja vraća vrijednost nakon izvršavanja i nema ulazne parametre
4. funkcija koja vraća vrijednost nakon izvršavanja i ima ulazne parametre

FUNKCIJA KOJA NE VRAĆA VRIJEDNOST NAKON IZVRŠAVANJA I NEMA ULAZNE PARAMETRE
Ovaj oblik funkcije nema ulaznih parametara nego je riječ o vrijednostima ili varijablama unutar funkcije. Ako funkcija ne vraća vrijednost, riječ return nije obvezna. Funkcija se izvršava pozivom imena bez parametara u zagradi ime_funkcije().

image alt

FUNKCIJA KOJA NE VRAĆA VRIJEDNOST NAKON IZVRŠAVANJA I IMA ULAZNE PARAMETRE
Ovaj oblik funkcije ima jedan ili više ulaznih parametara i ne vraća vrijednost nakon izvršavanja. Funkcija se izvršava pozivanjem njezina imena s popisom parametara unutar zagrada ime_funkcije(popis parametara).

image alt

FUNKCIJA KOJA VRAĆA VRIJEDNOST NAKON IZVRŠAVANJA I NEMA ULAZNE PARAMETRE
Ulazni parametri unose se primjenom ugrađene funkcije input(), a naredbom return vraća se rezultat izračunavanja. Vrijednost koja se vraća u program nakon izvršavanja funkcije piše se nakon naredbe return.

image alt

FUNKCIJA KOJA VRAĆA VRIJEDNOST NAKON IZVRŠAVANJA I IMA ULAZNE PARAMETRE
Nasloženiji oblik funkcije je funkcija koja ima ulazne parametre i vraća neku vrijednost nakon izvršavanja. Vidimo da takva funkcija pri definiranju mora imati popis očekivanih parametara te obvezno neku vrijednost navedenu nakon naredbe return.

image alt

FINITO!