Funkcije
| Sjedište: | CARNET - Arhiva 2021 Loomen |
| E-kolegij: | Algoritmi i programiranje 2. razred |
| Knjiga: | Funkcije |
| Otisnuo/la: | Gost (anonimni korisnik) |
| Datum: | subota, 21. ožujka 2026., 00:58 |
Opis
Funkcije su izdvojeni nizovi naredbi koje čine logičke cjeline, a obavljaju točno utvrđene zadatke.
Sadržaj
- 1. Funkcije
- 2. Primjer raščlanjivanja problema na pojedinačne zadatke
- 3. Globalne i lokalne varijable
- 4. Definiranje i deklaracija funkcije
- 5. Primjeri uporabe varijable tipa static
- 6. Primjer
- 7. Primjer
- 8. Primjer tri točke u ravnini
- 9. Poziv funkcije
- 10. Prijenos argumenata
- 11. Primjer prijenosa argumenata & uporabe lokalne varijable tipa static
- 12. Prijenos polja kao argumenta funkciji
- 13. Tipovi funkcija
- 14. Tipovi funkcija - primjeri zadataka
- 15. Funkcija rekurzija
- 16. Primjer: funkcija faktorijela
- 17. Primjer: Izračun potencije pomoću rekurzivne funkcije
- 18. Primjer: Riječ unatrag
1. Funkcije
Gotove funkcije smo koristili i do sada pozivajući ih iz biblioteka uporabom naredbe include.
Npr. za unos i ispis podataka koristili smo se funkcijama cin i cout iz biblioteke iostream, dok smo za uporabu matematičkih funkcija pozivali biblioteku cmath.
Korisnički definirane funkcije (potprogrami) su izdvojene programske cjeline koje rješavaju pojedinačne zadatke, a omogućavaju pozivanje više puta s različitim vrijednostima varijabli (argumenata ili parametara).
2. Primjer raščlanjivanja problema na pojedinačne zadatke
Za
koordinate tri točke u ravnini koje unosi korisnik provjeravamo leže li na istom pravcu, te ako ne
leže računamo opseg i površinu trokuta kojega one čine.

3. Globalne i lokalne varijable
Varijable koje smo do sada koristili bile su lokalne i vrijedile su samo u funkciji main().
Globalne varijable najavljuju se izvan svih funkcija i mogu se
koristiti u cijelom programu, dok su lokalne dostupne samo unutar funkcije u
kojoj su najavljene.
Ukoliko želimo iz funkcije vratiti više vrijednosti to ne možemo učiniti naredbama return jer funkcija završava izvršavanje nakon izvršavanja naredbe return, no možemo pohranom u globalne varijable.
Doseg globalne varijable može se suziti na datoteku u kojoj je definirana uporabom oznake static, npr.
static double x;
Varijabla tipa static ima doseg globalne, a trajanje lokalne varijable, tj. vrijednost statičke lokalne varijable ostaje sačuvana do ponovnog poziva funkcije.
4. Definiranje i deklaracija funkcije
Funkciju treba deklarirati prije prvog poziva.
Tada joj dodjeljujemo ime - naziv (zadaje se poštujući pravila tvorbe simboličkih imena (identifikatora), dobro je da on bude sugestivan kako bismo poslije znali koju funkciju pozivamo ukoliko ih ima više).
Ukoliko pozivamo funkciju koja ime više parametara, svi oni se odvajaju zarezom, te ispred svakog parametra navodimo njegov tip.
5. Primjeri uporabe varijable tipa static
1. primjer: nastavnica unese broj učenika pa u petlji unosi ocjene koje su postigli učenici na ispitu, u ovisnosti je li ocjena prolazna poziva se fja nedovoljnih() ili prolaznih() koje broje koliko je kojih. Varijable brojača su tipa static. Aplikacija ispisuje broj nedovoljnih i broj prolaznih kao i postotak prolaznosti.

2. primjer: Nastavnica unese broj učenika pa u petlji unosi ocjene koje su postigli učenici na ispitu, u ovisnosti je li ocjena prolazna poziva se fja nedovoljnih() ili sumaProlaznih(). Prva broji koliko je nedovoljnih i ukoliko prijeđe više od pola učenika razreda ispisuje „Ispit će trebati ponoviti!!!”, te pomoću funkcije exit(0) zaustavlja izvođenje programa. Druga sumira prolazne ocjene. Varijable brojača su tipa static. Aplikacija ispisuje broj nedovoljnih i srednju ocjenu ispita, ukoliko je više od pola prolaznih ocjena.

3. primjer: Korisnik ima na raspolaganju za trošenje bon od 500 kn, on unosi cijenu svakoj pojedinog artikla koji unosi u košaricu, a aplikacija mu ispisuje koliki mu je iznos preostao za trošenje. Kad nema dovoljno novca za zadnji željeni artikl aplikacija mu ispisuje „Za ovaj artikl više nemate novca!” i završava izvođenje programa pomoću naredne exit. Cijene artikala unose se u petlji koja svaki puta poziva funkciju koja oduzima novac od raspoloživog. Neka raspoloživi iznos bude varijabla funkcije tipa static.

6. Primjer
7. Primjer
8. Primjer tri točke u ravnini
Za koordinate tri točke u ravnini koje unosi korisnik provjeravamo leže li na istom pravcu, te ako ne leže računamo opseg i površinu trokuta kojega one čine. Podsjetimo se za točke 𝑇1(𝑥1, 𝑦1 ), 𝑇2(𝑥2, 𝑦2 ) i 𝑇3(𝑥3, 𝑦3 ) ako leže na istom pravcu vrijedi:
(𝑥2 − 𝑥1)/( 𝑥3 − 𝑥1) = (𝑦2 − 𝑦1)/( 𝑦3 − 𝑦1)
Napiši programski kod u C++ - u kojemu ćeš izdvojiti funkciju za unos koordinata točaka, koordinate deklariraj kao globalne varijable, zatim funkciju za provjeru leže li točke na istom pravcu koja će u main vratiti 1 ako leže i 0 ako ne leže. Ako točke ne leže na istom pravcu pozovi funkciju za izračun duljina stranica koja će vrijednosti duljina stranica također pohraniti kao globalne varijable. Nakon toga pozovi funkciju opseg koja će u main vratiti duljinu opsega. Ispiši tu duljinu iz maina. Posljednju pozovi funkciju koja će izračunati površinu trokuta kojeg čine te točke. Prisjeti se Heronove formule:
𝑃=√(𝑠 ∗ (𝑠 − 𝑎) ∗ (𝑠 − 𝑏) ∗ (𝑠 − 𝑐) )
gdje je:
𝑠 = (𝑎 + 𝑏 + 𝑐) /2
9. Poziv funkcije
Nakon što je funkcija deklarirana, možemo ju pozvati iz bilo kojeg dijela programa navođenjem naziva funkcije te ako funkcija prima argumente sa odgovarajućom listom argumenata.
Pravila za poziv funkcije:
- broj argumenata u pozivu funkcije mora biti jednak broju argumenata u definiciji funkcije
- tipovi stvarnih argumenata moraju se podudarati sa tipovima odgovarajućih formalnih argumenata
- imena formalnih argumenata ne moraju biti jednaka imenima stvarnih argumenata
10. Prijenos argumenata



Moguće je prilikom deklaracije funkcije postaviti predefinirane vrijednosti jednog ili više argumenta tako da se u slučaju da prilikom poziva funkcije neki od njih nedostaje koristi se ta unaprijed zadana vrijednost, odnosno vrijednosti.

11. Primjer prijenosa argumenata & uporabe lokalne varijable tipa static
12. Prijenos polja kao argumenta funkciji
Ponekad imamo potrebu funkciji prenijeti elemente polja. To možemo učiniti kao u primjeru.
Primjer: Službeni vozač unosi potrošnju goriva u litrama i prijeđeni put u kilometrima za svaki radni dan u tjednu (pon-pet). Podaci se pohranjuju u dva polja. Zatim se iz maina pozivaju funkcije koje sumiraju gorivo i kilometre te na kraju u mainu računa i ispisuje prosječna potrošnja u l/100 km.
13. Tipovi funkcija
Do sada smo već spominjali dva glavna tipa funcija:
- funkciju koja ne vraća vrijednost
void ()
- funkcije koje vraćaju vrijednost npr.:
float volumen_kvadra ( float a, float b, float c )
gdje tip može biti int, float, bool, char...
Za bolje razumijevanje prijenosa argumenata u funkcijama funkcije dijelimo na:
- Funkcije bez argumenata i bez vraćanja vrijednosti
- Funkcije bez argumenata ali s vraćanjem vrijednosti
- Funkcije s argumentima ali bez vraćanja vrijednosti
- Funkcije s argumentima i vraćanjem vrijednosti
14. Tipovi funkcija - primjeri zadataka
Sve tipove prikazati ćemo na jednostavnom zadatku provjere je li broj prost.
1. Funkcije bez argumenata i bez vraćanja vrijednosti
2. Funkcije bez argumenata ali s vraćanjem vrijednosti
3. Funkcije s argumentima ali bez vraćanja vrijednosti
4. Funkcije s argumentima i vraćanjem vrijednosti
15. Funkcija rekurzija
Rekurzivna funkcija je funkcija koja poziva samu sebe. Pozivom rekurzivne funkcije u njoj se formiraju lokalne varijable koje su nedohvatljive izvan nje.
Uvjeti:
· mora imati uvjet zaustavljanja
· u svakom pozivu mora se približavati uvjetu zaustavljanja
STOG: prvi unutra – zadnji van!
16. Primjer: funkcija faktorijela
Funkcija faktorijela - primjer rekurzivne funkcije
Faktorijela je matematička funkcija kojom se izračunava produkt prirodnih brojeva od 1 do nekog određenog prirodnog broja n, označeno kao n!

Uvjet zaustavljanja je 1!=1
Primjer: Napisati rekurzivnu funkciju za izračun faktorijela do broja kojega je zadao korisnik.
17. Primjer: Izračun potencije pomoću rekurzivne funkcije
Primjer: Napisati
rekurzivnu funkciju koja izračunava be gdje korisnik
zadaje bazu b i eksponent e (bez upotrebe funkcije pow)
18. Primjer: Riječ unatrag
Primjer: Napisati
funkciju koja riječ koju korisnik unese u mainu, proslijedimo kao argument
funkciji koja ju okrene unatraške i vrati u main gdje ju ispišemo.