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
				 | 
			 
		  |