Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

procedure i funkcije - parametri

[es] :: Pascal / Delphi / Kylix :: procedure i funkcije - parametri

[ Pregleda: 3778 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

erekoz
John Doe
Beograd

Član broj: 5960
Poruke: 148
*.ptt.yu



Profil

icon procedure i funkcije - parametri03.11.2002. u 10:58 - pre 229 meseci

Da li neko moze potanko da mi objasni u cemu je razlika kada u procedure ili funkciji ulazne parametre definisem sa VAR i bez VAR?

erekoz
 
Odgovor na temu

silverglider

Član broj: 651
Poruke: 218
*.arcor-ip.net

Sajt: www.benchmark.co.yu


Profil

icon Re: procedure i funkcije - parametri04.11.2002. u 01:08 - pre 229 meseci
Radi se o razlici prenosenja parametara - kao vrednost ili kao adresu.

Kada prosledis parametar proceduri/funkciji bez var, sa tim parametrom mozes (tehnicki) da radis sta hoces u toj funkciji, ona nakon izlaska iz scopea (end; procedure) jednostavno nestaje, tu je kraj njenog zivota. Dakle, prenos preko vrednosti - prosledio si proceduri neku vrednost, potrebnu za neku obradu i to je to.

Ukoliko prosledjujes parametar sa var prefixom, on ce biti i ostati promenjen "za stvarno". Zbog toga se ovaj 'feature' koristi u pascalu kada treba vratiti vise varijabli iz procedure, posto funkcija vraca samo jedan entitet. Ovo je prenos preko adrese varijable - prenosis proceduri neku vrednost za obradu, obrada menja tu varijablu i vraca je kao rezultat.

Uzmi, na primer, jednostavnu proceduru koja prima integer parametar X i u toku obrade ga postavlja na 10. Dakle, nesto poput:
procedure promeni(parametar: integer);

Tada imamo sledeci slucaj:
...
x := 1;
promeni(x);
// nakon ovoga, x je i dalje 1
...

Ukoliko definises proceduru kao: procedure promeni(var parametar:integer), onda je situacija sledeca:
...
x := 1;
promeni(x);
// x je nakon ovoga 10


Treci slucaj je da stavis const ispred parametra -> to je podvarijanta prve solucije, kada se prenos vrsi kao vrednost, samo sto se tada taj parametar u proceduri tretira kao konstanta i ne moze se menjati.
Cetvrti prefix je out i on je podvarijanta prenosa po adresi (kaze se jos i "po referenci") - razlika je samo u tome sto se pocetna, prenesena vrednost ignorise, te procedura mora da je postavi na inicijalnu vrednost. Zavrsna vrednost se, naravno, vraca kao da je stavljeno "var" ispred. Time se definise da je ovaj parametar striktno output.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: procedure i funkcije - parametri

[ Pregleda: 3778 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Srodne teme
Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.