Programski jezici Potprogrami Potprogrami Funkcije n Procedure n
- Slides: 31
Programski jezici Potprogrami
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 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 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 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 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 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 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
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 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 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 prenosa vrednosti n Primer procedure u Adi n
Primeri procedura n Algol 60 Fortran 77
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 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 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 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 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 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 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 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 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 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 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 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 su rekurzivno definisani n Tipičan primer je izračunavanje faktorijela n
Primer rekurzije n Rešenje bez rekurzije
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 pristup podacima (opciono) Podaci o statusu Lokalni podaci Temporalne promenljive
Pitanja ? ? ?
- Proceduralni programski jezici
- Objektno orijentirani programski jezici
- Mašinski jezik
- Programski jezici i strukture podataka
- Tehnicki fakultet mihajlo pupin novi sad
- Prvi programski jezik
- Dunja dulčić
- Simbolicki jezik
- Turtle import
- Mnozenje matrica
- Potprogrami u pythonu
- Europski jezici
- Skriptni jezici
- Cv jezici
- Asemblerski jezici
- Violeta moretti
- Java skript
- Skriptni jezici i web programiranje
- Uralo altajski jezici
- Repeat 3 fd 100 rt 120
- Sql programski jezik
- Logo programiranje
- S struktura
- Pisanje programa
- Diskretna matematika etf
- Znak mnozenja
- Delphi programski jezik
- Programski jezik java
- Preveduva
- Programski jezik c
- Python programski jezik
- C# programski jezik