KubusCmg
Administrator
Dołączył: 08 Mar 2008
Posty: 51
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: skontowni
|
Wysłany: Nie 21:00, 09 Mar 2008 Temat postu: 8. Zywotnosc zmiennych i stalych |
|
Doskonale pamietamy podzial danych na zmienne i stale;)
Ale tutaj mamy kolejny podzial-mianowicie:
1.Zmienne i stale globalne,
2.Zmienne i stale lokalne.
Jaka jest miedzy nimi roznica?
Zmienne globalne to te ktore deklarujemy w glownym bloku deklaracyjnym (bloku deklaracyjnym programu glownego). Maja one dzialanie w kazdym miejscu w programie.
Kod: |
program zmienne;
uses crt;
VAR n:integer;
litera:char;
|
Zmienne lokalne zas deklarowane sa w podprogramach i ich dzialanie jest ograniczone wlasnie tylko do nich.. tak wiec jesli zadeklarujemy zmienna a w procedurze przestanie ona istniec gdy zakonczy sie dzialanie procedury.
Kod: |
prcedure kwadrat;
var a:real;
...
|
Moze nie do konca jest to jasne. Ale powiem inaczej: ponizsza instrukcja bylaby bledem:
Kod: |
procedure nazwa;
var a:integer;
begin
......
end;
begin
wrietln ('Zmienna a ma wartosc: ')
write(a);
end.
|
Dlaczego..?
Zmienna a jest zadeklarowana w bloku procedury. Jej zasieg wiec ogranicza sie tylko do slowa end; konczacego procedure. Pozniej zmienna wygasa i proba uzycia tej zmiennej w bloku glownym zakonczy sie bledem juz przy kompilacji informujacym nas o braku takowej zmiennej. Jeslibysmy ta zmienna zadeklarowali w bloku glownym moglibysmy ja uzyc zarowno w glownym programie jak i w podprogrmach.
Warto uzywac czasem zmiennych lokalnych by zaoszczedzic miejsce w pamieci komputera. Zmienne globalne zajmuja okreslona pamiec przez caly czas dzialania programu. Lokalne przyjmuja ja na czas dzialania procedury/funckji po czym zwalniaja miejsce;)
Post został pochwalony 0 razy
|
|