potprogrami · •potprogram počinje sa izvršavanjem tek kada se pozove. •program se poziva...

24
POTPROGRAMI

Upload: others

Post on 02-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

POTPROGRAMI

Page 2: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

POTPROGRAMI

• Potprogrami su izdvojeni djelovi programa koji se izvršavaju po pozivu.

• Dio programa se može ponavljati više puta u toku jednog programa, pa se taj dio programa izdvaja i pozivamo svaki put kad treba da se odradi.

• Ovaj dio programa de se predstaviti kao potprogram.

Page 3: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

• Svaki potprogram ima ime (koje ne smije biti korišdeno za nešto drugo),

• Ime koje se koristi bi trebalo da bude vezano sa zadatkom koji potprogram obavlja.

• Pozivanje potprograma se vrši navođenjem imena programa iza kojeg treba napisati par malih zagrada.

Page 4: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

• Jednom napisan potprogram se može koristiti u drugim programima

• Više programera može učestvovati u rješavanju problema.

• Zahtjevaju manje RAM-a memorije prilikom izvršavanja.

Page 5: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

primjer

• Potrebno je napraviti potprogram koji ispisuje korisniku poruku (ime i prezime korisnika) i koji se poziva iz glavne funkcije (koja zahtjeva predstavljanje korisnika) .

– Potprogram se izvršavam se u nekoliko sekundi.

– Glavni program, se koristi svo vrijeme

Page 6: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

#include <stdio.h> int predstavise() { printf("Moje ime je JASNA \n "); printf("Moje prezime je KATIC "); return 0; } main() { printf("PREDSTAVI SE!\n "); predstavise(); }

GLAVNI PROGRAM

POTPROGRAM

Page 7: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

• Izvršavanje programa uvijek počinje sa funkcijom main.

• Sve ostale funkcije su potprogrami.

• Potprogram počinje sa izvršavanjem tek kada se pozove.

• Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti (ako postoje).

• Nakon izvršavanja potprograma program nastavlja od sljedede naredbe iza mjesta gdje je pozvan.

• Potprogram može imati i svoje vlastite promjenjive.

Page 8: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

• Poredak u kojem se potprogrami definišu nije bitan.

• Rezultat izvršavanja programa zavisi od redoslijeda kojim se potprogrami pozivaju, a ne od redoslijeda u kojem su definisani.

• Potprogrami omogudavaju da složenije programe podijelimo na manje nezavisne dijelove koje je lakše pratiti, prepravljati i održavati.

Page 9: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Postoje dve vrste potprograma

• Potprogrami se najčešde kreiraju kao:

–Procedure i

– Funkcije .

• Procedure - izvršavaju neki proces ali ne daju rezultat.

• Funkcije - su potprogrami koji transformišu podatke i daju rezultat.

Page 10: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Procedure

• Procedure se pozove, izvrši se i to je to.

• Pozivanje procedure se vrši pomodu njenog imena.

• Pošto ne daje rezultat, ne mogu se koristiti u nekim matematičkim izrazima.

• U njima se ne navodi ključna riječ return 0;

• return se može koristiti ako se želi prekinuti izvršavanje procedure prije izvršavanja svih naredbi koje se pozivaju u proceduri.

Page 11: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Funkcije

• Koriste se slično funkcijama u matematici.

F(x)=x2+x6-2

funkcija se mjenja u zavisnosti od x

• Funkcija u potprogramu ima zadatak da obradi neki dobijeni podatak i da vrati rezultat.

• Funkcija može imate više argumenata koji se navode u zagradi i odvajaju zarezom. – int funkcija();

– float funkcija1(int x);

– void funkcija2(intx, char y, float z);

Page 12: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Funkcije

• Poziv funkcije se vrši navođenjem njenog imena iza kojeg ide niz argumenata u zagradama.

• Funkcije mogu biti pisane prije ili posle main() funkcije ali ako su iza main funkcije, moramo ih definisati određivanjem tipa funkcije, imena funkcije i tipova argumenata.

Page 13: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Funkcije prije glavnog programa

int funkcija(int x) { naredba1; naredba2; }

main() { funkcija(); naredba4; }

Page 14: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Funkcije posle glavnog programa

int funkcija(); main()

{ funkcija(); naredba1; }

funkcija(int x) { naredba3; naredba4; }

Page 15: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

GLOBALNE PROMJENLJIVE

• Pored lokalnih promjenljivih postoje i globalne promjenljive.

• To su promjenljive koje su definisane izvan svih blokova.

• One se mogu koristiti u cijelom programu počev od mjesta na kojem su definisane pa sve do kraja programa.

Page 16: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Ispis pozdrava 5 puta

#include <stdio.h> int ispispozdrav() { int i; for (i=1; i<=5;i++) printf("pozdrav\n"); return 0; } main() { int i; i=10; printf("i= %d \n ",i); ispispozdrav(); }

Page 17: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Sta se dešava ako se izbriše i=1;

#include <stdio.h> int ispispozdrav() { int i; for (i=1; i<=5;i++) printf("pozdrav\n"); return 0; } main() { int i; i=10; printf("i= %d \n ",i); ispispozdrav(); }

for ( ; i<=5;i++)

Page 18: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

GLOBALNE PROMJENLJIVE

• Upotrebu globalnih promjenljivih treba izbjegavati kada god je to mogude, jer njihova upotreba često dovodi do neželjenih efekata.

• U dugačkim programima ovi efekti se često previde i onda program radi ono što se od njega ne očekuje.

Page 19: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

#include <stdio.h> int a,b,c; int P1() { int d; d=5; printf("d= %d \n ",d); return 0; } int P2() { int d; d=b; c=a+b; printf("c= %d \n ",c); return 0; } main() { a=1; b=2; c=8; P1(); P2(); }

GLAVNI

POTPROGRAM P1

POTPROGRAM P2

GLOBALNE PROMJENLJIVE

LOKALNA PROMJENLJIVE

NA EKRANU ĆE BITI ISPISANO: d=5 c=3

Page 20: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

• Konstante se definišu kao globalne, jer se njihova vrijednost ne može mijenjati.

• Ukoliko želimo da definišemo neku konstantu (naprimjer "PI" (3.141592654)) onda se definiše uvijek izvan svih blokova, jer de tada njena vrijednost biti dostupna svim potprogramima u programu, a ne samo onom potprogramu unutar kojeg je definisana.

Page 21: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Razvoj programa

• Potprogrami podržavaju tehniku razvoja programa odozgo na dole.

• Međutim prilikom razvoja vedih programa, programer obično ne može uočiti sve neophodne dijelove programa pa se zbog toga se programi obično razvijaju u etapama.

Page 22: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

AUTOMATSKE PROMJENLJIVE

• Lokalne promjenljivih koje se automatski kreiraju svaki put kada ih program definiše isto tako (automatski) brišu svaki put kada blok (u kojem su definisane) završi nazivaju se i automatskih promjenljive.

Page 23: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

STATIČKE LOKALNE PROMJENLJIVE

• Statičke promjenljive se koriste uglavnom kada je potrebno da neka informacija "preživi " kraj potprograma i bude dostupna pri njegovom ponovnom pozivu.

• Recimo ako želimo da brojimo koliko je puta pozvan neki potprogram

Page 24: POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva tako što se navede njegovo ime iza kojeg slijede zagrade unutar kojih se navode argumenti

Definisanje statičke promjenljive

#include <stdio.h> int P() { static int a =5; printf("%d",a); a++; printf("%d",a); return 0; } main() { P(); P(); P(); }

Svaki prolaz kroz potprogram printf("%d ",a); a++; printf("%d \n ",a);

Izgled ekrana: