Programski jezici Potprogrami Potprogrami Funkcije n Procedure n

  • Slides: 31
Download presentation
Programski jezici Potprogrami

Programski jezici Potprogrami

Potprogrami Funkcije n Procedure n Prenos argumenata n Globalne promenljive kao parametri potprograma n

Potprogrami Funkcije n Procedure n Prenos argumenata n Globalne promenljive kao parametri potprograma n Imena potprograma kao parametri potprograma n Rekurzivni potprogrami n Implementacija potprograma n

Koncept potprograma Potreba da se određeni deo programa više puta ponovi u istom ili

Koncept potprograma Potreba da se određeni deo programa više puta ponovi u istom ili u različitim programima n Izbegavanje multipliciranja istih sekvenci naredbi u programu n Sredstvo za struktuiranje programa n Osnovno sredstvo apstrakcije u programiranju n Koncept poznat od prvih viših programskih jezika n Definiše se skup izlaznih veličina u funkciji ulaznih n

Karakteristike potprograma Realizuju se kao programske celine koje se po potrebi pozivaju n Na

Karakteristike potprograma Realizuju se kao programske celine koje se po potrebi pozivaju n Na mestu poziva potprograma bitno je samo šta se u funkciji čega dobija, a ne i kako se to radi n Realizacija zavisnosti definisana je lokalno u okviru potprograma n Svaki potprogram ima jednu ulaznu tačku (izuzetak je FORTRAN, gde može biti definisano više ulaza u potprogram) n

Karakteristike potprograma Program koji poziva potprogram prekida svoju aktivnost sve dok se ne završi

Karakteristike potprograma Program koji poziva potprogram prekida svoju aktivnost sve dok se ne završi potprogram, što znači da se u jednom trenutku izvršava samo jedan program n Po završetku potprograma upravljanje se vraća programu koji ga je pozvao n

Osnovni elementi potprograma Ime potprograma n Lista imena argumenata (fiktivni argumenti) n Telo potprograma

Osnovni elementi potprograma Ime potprograma n Lista imena argumenata (fiktivni argumenti) n Telo potprograma n Sredina u kojoj je potprogram definisan n procedure Ime. Potprograma (Lista fiktivnih arg. ); Opisi lokalnih promenljivih; Telo potprograma end Ime_potprograma;

Osnovni elementi potprograma Ime potprograma je uvedena reč kojom se potprogram imenuje i preko

Osnovni elementi potprograma Ime potprograma je uvedena reč kojom se potprogram imenuje i preko koje se vrši njegovo pozivanje n Fiktivnim argumentima definiše se skup ulazno -izlaznih veličina potprograma, kod poziva se fiktivni argumenti zamenjuju stvarnim n Telo potprograma je sekvenca naredbi koja realizuje potprogram n Okolinu potprograma predstavljaju promenljive okruženja koje se mogu koristiti u n

Funkcije Funkcijski potprogram po konceptu odgovara matematičkim funkcijama n Lista argumenata se sastoji samo

Funkcije Funkcijski potprogram po konceptu odgovara matematičkim funkcijama n Lista argumenata se sastoji samo od ulaznih argumenata n Ulazne vrednosti se ne menjaju u funkciji n Za prenos vrednosti programu iz koga se poziva koristi se promenljiva sa istim imenom kao i funkcija n Za opis ovakvih potprograma obično se koristi ključna reč FUNCTION n

Primeri funkcija Fortran

Primeri funkcija Fortran

Funkcije n U novijim programskim jezicima postoji naredba return kojom se eksplicitno navodi vrednost

Funkcije n U novijim programskim jezicima postoji naredba return kojom se eksplicitno navodi vrednost koja se iz glavnog programa prenosi u glavni program int SUM (int n) { int POM=0, i; for (i=0; i<n; i++) POM=POM+i; return POM; }

Procedure Potprogrami opšteg tipa n Može se realizovati svaki algoritam koji sam za sebe

Procedure Potprogrami opšteg tipa n Može se realizovati svaki algoritam koji sam za sebe ima određeni smisao n U glavni program vraćaju jedan ili skup rezultata n procedure ime_procedure (lista argumenata) opisi lokalnih promenljivih; telo procedure end;

Procedure n Opis procedure počinje ključnom reči kojom se navodi da se definiše procedura

Procedure n Opis procedure počinje ključnom reči kojom se navodi da se definiše procedura procedure n subroutine n sub n Ime procedure je uvedena reč kojom se imenuje potprogram i pomoću koje se poziva n Lista argumenata može da sadrži ulazne, izlazne i ulazno-izlazne argumente n

Procedure Obično se zahteva da se u listi argumenata navede njihov tip i način

Procedure Obično se zahteva da se u listi argumenata navede njihov tip i način prenosa vrednosti n Primer procedure u Adi n

Primeri procedura n Algol 60 Fortran 77

Primeri procedura n Algol 60 Fortran 77

Prenos argumenata Poziv funkcija i procedura iz glavnog programa sa listom stvarnih argumenata n

Prenos argumenata Poziv funkcija i procedura iz glavnog programa sa listom stvarnih argumenata n Stvarni argumenti zamenjuju fiktivne n Tri semantička modela za prenos argumenata n in n out n inout n n Dva konceptualna modela za prenos argumenata Vrednosti parametara se fizički prebacuju n Prenosi se podatak o memorijskoj lokaciji n

Prenos po vrednosti n n n Obično se sreće kod funkcijskih potprograma Vrednosti stvarnih

Prenos po vrednosti n n n Obično se sreće kod funkcijskih potprograma Vrednosti stvarnih argumenata se kopiraju u pomoćne memorijske lokacije fiktivnih argumenata Sve promene argumenata odvijaju se u lokacijama potprograma, nedostupne su glavnom programu Koristi se samo za prenos ulaznih parametara potprograma U programskim jezicima se obično implicitno ili eksplicitno navodi da se radi o prenosu argumenata po vrednosti

Nedostaci Fiktivni parametri potprograma zauzimaju memorijski prostor n Operacija kopiranja stvarnih u fiktivne parametre

Nedostaci Fiktivni parametri potprograma zauzimaju memorijski prostor n Operacija kopiranja stvarnih u fiktivne parametre može uticati na efikasnost n Nedostaci dolaze do izražaja kada se prenose strukture podataka, veliki vektori i matrice n

Prenos po rezultatu Koristi se za prenos izlaznih parametara n Nema prenosa vrednosti iz

Prenos po rezultatu Koristi se za prenos izlaznih parametara n Nema prenosa vrednosti iz glavnog programa u potprogram n Vrednosti se računaju u memorijskim lokacijama fiktivnih argumenata n Pre vraćanja kontrole glavnom programu kopiraju se u lokacije stvarnih argumenata n Stvarni argumenti moraju biti promenljive n

Nedostaci Za fiktivne argumente rezerviše se memorijski prostor u potprogramu n Mogućnost kolizije stvarnih

Nedostaci Za fiktivne argumente rezerviše se memorijski prostor u potprogramu n Mogućnost kolizije stvarnih argumenata u slučaju da se potprogram poziva tako da isti stvarni argument zamenjuje više fiktivnih n

Prenos po vrednosti i rezultatu Koristi se za prenos ulazno-izlaznih parametara n Kombinacija prenosa

Prenos po vrednosti i rezultatu Koristi se za prenos ulazno-izlaznih parametara n Kombinacija prenosa po vrednosti i rezultatu n Vrednosti stvarnih argumenata se kopiraju u memorijske lokacije fiktivnih argumenata n Sve izmene nad argumentima pamte se u lokalnim memorijskim lokacijama potprograma n Prije vraćanja kontrole glavnom programu vrši se kopiranje u lokacije stvarnih argumenata n

Prenos po referenci Nema kopiranja vrednosti iz glavnog programa u potprogram i obrnuto n

Prenos po referenci Nema kopiranja vrednosti iz glavnog programa u potprogram i obrnuto n Prenosi se samo referenca memorijske lokacije u kojoj je vrednost stvarnog argumenta n Reference stvarnih argumenata se preslikavaju u reference fiktivnih n Potprogram pristupa istim memorijskim lokacijama kao i glavni program n Nema rezervisanja memorije za fiktivne argumente n

Prenos po referenci Sve promene nad argumentima u potprogramu vidljive su i u glavnom

Prenos po referenci Sve promene nad argumentima u potprogramu vidljive su i u glavnom programu n Koristi se za prenos ulazno-izlaznih argumenata n Osnovni način prenosa u mnogim programskim jezicima i koristi se implicitno n

Prednosti Efikasnost u pogledu vremena i memorijskog prostora n Nema dupliranja memorijskog prostora n

Prednosti Efikasnost u pogledu vremena i memorijskog prostora n Nema dupliranja memorijskog prostora n Ne gubi se vreme u kopiranju stvarnih u fiktivne argumente n

Nedostaci Moguće kolizije između stvarnih argumenata n Mogućnost kolizije pri radu sa nizovima i

Nedostaci Moguće kolizije između stvarnih argumenata n Mogućnost kolizije pri radu sa nizovima i elementima nizova n Mogućnost kolizije između elemenata programa koji se prenose kao stvarni argumenti potprograma i onih koji se prenose kao globalni parametri n

Prenos po imenu Način prenosa ulazno-izlaznih parametara n Nema ni kopiranja ni prenosa reference

Prenos po imenu Način prenosa ulazno-izlaznih parametara n Nema ni kopiranja ni prenosa reference n Pri pozivu se imena stvarnih argumenata ubacuju u tekst potprograma umesto imena fiktivnih argumenata n Potprogram se izvršava kao da se radi o kodu napisanom sa imenima stvarnih argumenata n Implementacija zavisi od toga šta se prenosi kao stvarni argument n

Globalne promenljive kao parametri potprograma Potprogram se u odnosu na programski modul u kome

Globalne promenljive kao parametri potprograma Potprogram se u odnosu na programski modul u kome je napisan tretira kao blok u bloku n Sve promenljive definisane u okruženju u kome je definisan potprogram mogu se koristiti u potprogramu po konceptu globalnih promenljivih n Potprogram može biti bez liste fiktivnih argumenata, a da sve veze sa okruženjem izvodi pomoću globalnih promenljivih n

Rekurzivni potprogrami Poziv potprograma u telu samog potprograma n Pogodni za rešavanje problema koji

Rekurzivni potprogrami Poziv potprograma u telu samog potprograma n Pogodni za rešavanje problema koji su rekurzivno definisani n Tipičan primer je izračunavanje faktorijela n

Primer rekurzije n Rešenje bez rekurzije

Primer rekurzije n Rešenje bez rekurzije

Implementacija potprograma Planiranje memorijskog prostora pri prevođenju n Rezerviše se memorijski prostor za smeštaj

Implementacija potprograma Planiranje memorijskog prostora pri prevođenju n Rezerviše se memorijski prostor za smeštaj koda programa i podataka koji se obrađuju u njemu n Za svaki potprogram generiše se aktivacioni slog u koji se smeštaju podaci koji se preuzimaju od glavnog programa, lokalni podaci potprograma i privremene promenljive n

Struktura aktivacionog sloga Rezultati koje vraća potprogram Stvarni parametri Upravljački linkovi (opciono) Linkovi za

Struktura aktivacionog sloga Rezultati koje vraća potprogram Stvarni parametri Upravljački linkovi (opciono) Linkovi za pristup podacima (opciono) Podaci o statusu Lokalni podaci Temporalne promenljive

Pitanja ? ? ?

Pitanja ? ? ?