Ver. 1.0 Beta, Nie masz kompilatora? Teraz moesz pisa skrypty ONLINE! Wersja podstawowa -nie zawiera wszystkich polece Pascala. Suy do nauki podstaw

Przekazywanie parametrw


Standardowe przekazywanie parametrw

Mona przekazywa dowoln ilo parametrw do funkcji lub procedury. Oddziela si je rednikami. Kady z parametrw ma wasny typ. Zmienne podawane zazwyczaj w parametrach s kopiowane w inny obszar pamici i wanie do tego obszaru ma dostp programista. Poniewa komputer wykonuje kopi parametrw, nie naley przekazywa zbyt duej iloci danych, by nie spowolni dziaania programu. Zaleca si przekazywa do omiu bajtw.



Przekazanie przez referencj

Gdy przekazujemy parametry do funkcji lub procedury, moe zaj potrzeba zmiany wielkoci jakiego parametru. Wtedy trzeba omin mechanizm tworzenia kopii parametru, by pracowa na orginalnej zmiennej. Uywa si do tego sowa kluczowego var. Teraz zmiana parametru wewntrz funkcji, zmieni go take na zewntrz.


var tmp : string;

procedure WczytajNapis(var s : string);
begin
 WriteLn('Prosze podac napis');
 ReadLn(s);{wczytujemy do zmiennej na zewntrz}
end;

procedure WczytajNapisBezVar(s : string);
begin
 WriteLn('Prosze podac napis');
 ReadLn(s); {Wczytujemy do kopii zmiennej}
end;

begin
 tmp := 'Ala ma kota';
 WczytajNapisBezVar(tmp); {nazwa tmp moe by inna ni w nagwku procedury}
 WriteLn(tmp); {tmp dalej ma warto Ala ma kota pomimo zmian wewntrz procedury}

 WczytajNapis(tmp);
 WriteLn(tmp); {Teraz tmp bdzie takie jakie wczytano z klawiatury}
end.

Gdybymy nie uyli sowa kluczowego var przed podaniem parametru s: string, pracowalibymy na kopii zmiennej podanej do procedury. Wtedy zmienienie jej wewntrz procedury nie miaoby znaczenia po powrocie do normalnego programu. Zmienna tmp dalej miaaby t warto co przed wywoaniem procedury.



Przekazanie parametru przez sta

Gdy przekazujemy do procedury lub funkcji due iloci danych, np. napisy, czyli typ string, komputer wykonuje kopi napisu, 256 bajtw. Dla dzisiejszych komputerw to nie duo, ale gdyby taka procedura wykonywaa si milion razy w cigu sekundy, spowodowaaby due spowolnienie z powodu niepotrzebnego kopiowania pamici. Dlatego wanie mona przekazywa dane za pomoc sowa kluczowego const. Spowoduje to przekazanie jedynie adresu pamici, w ktrym jest zmienna. Niestety program nie pozwoli nam na edycj parametru, bo nie pracujemy na kopii.


var tmp : string;

procedure WyswietlString(const s : string); {przekazanie parametru przez const}
begin
 WriteLn('Napis to ', s);
end;

begin
 tmp := 'Ala ma kota';
 WyswietlString(tmp);
end.


Przekazywanie parametru przez wskanik (pointer)

Przekazanie zmiennej za pomoc wskanika oznacza, e do procedury przesyamy adres pamici, w ktrej bdzie interesujca warto. Wie si to rwnie z pewnym ryzykiem. Przekazujc bdny adres dziaanie programu zostanie przerwane przez system.


Temat wskanikw zosta objaniony w rozdziale struktur danych.

Programy ON-LINE!

Strona korzysta z plikw cookie w celu wiadczenia usug Google (reklamy, statytyki) oraz Facebook. Jeli chcesz zablokowa pliki cookies wyacz je w swojej przegldarce. Potrzebujesz pomocy? kliknij