Comment… Se nourrir ? Se loger ? Se déplacer ? Se divertir ?
POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva...
Transcript of POTPROGRAMI · •Potprogram počinje sa izvršavanjem tek kada se pozove. •Program se poziva...
POTPROGRAMI
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.
• 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.
• 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.
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
#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
• 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.
• 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.
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.
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.
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);
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.
Funkcije prije glavnog programa
int funkcija(int x) { naredba1; naredba2; }
main() { funkcija(); naredba4; }
Funkcije posle glavnog programa
int funkcija(); main()
{ funkcija(); naredba1; }
funkcija(int x) { naredba3; naredba4; }
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.
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(); }
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++)
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.
#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
• 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.
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.
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.
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
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: