Pascal - zmienny zakres
Zakres w każdym programowaniu to region programu, w którym zdefiniowana zmienna może istnieć i poza nią nie można uzyskać dostępu. Są trzy miejsca, w których można zadeklarować zmienne w języku programowania Pascal -
W podprogramie lub bloku nazywanym zmiennymi lokalnymi
Poza wszystkimi podprogramami, które są nazywane zmiennymi globalnymi
W definicji parametrów podprogramu nazywamy to parametrami formalnymi
Wyjaśnijmy, jakie są local i global zmienne i parametry formalne.
Zmienne lokalne
Zmienne zadeklarowane wewnątrz podprogramu lub bloku nazywane są zmiennymi lokalnymi. Mogą być używane tylko przez instrukcje, które znajdują się wewnątrz tego podprogramu lub bloku kodu. Zmienne lokalne nie są znane podprogramom poza ich własnymi. Poniżej znajduje się przykład użycia zmiennych lokalnych. Tutaj wszystkie zmienne a , b i c są lokalne dla programu o nazwie exLocal .
program exLocal;
var
a, b, c: integer;
begin
(* actual initialization *)
a := 10;
b := 20;
c := a + b;
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
end.
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
value of a = 10 b = 20 c = 30
Teraz rozszerzmy nieco program, stwórzmy procedurę o nazwie display, która będzie miała własny zestaw zmiennych a , b i c i będzie wyświetlać ich wartości bezpośrednio z programu exLocal .
program exLocal;
var
a, b, c: integer;
procedure display;
var
a, b, c: integer;
begin
(* local variables *)
a := 10;
b := 20;
c := a + b;
writeln('Winthin the procedure display');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
end;
begin
a:= 100;
b:= 200;
c:= a + b;
writeln('Winthin the program exlocal');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
display();
end.
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
value of a = 10 b = 20 c = 30
Zmienne globalne
Zmienne globalne są definiowane poza funkcją, zwykle w górnej części programu. Zmienne globalne zachowają swoją wartość przez cały okres istnienia programu i można uzyskać do nich dostęp w ramach dowolnej funkcji zdefiniowanej dla programu.
ZA globaldo zmiennej można uzyskać dostęp za pomocą dowolnej funkcji. Oznacza to, że zmienna globalna jest dostępna do użycia w całym programie po jej zadeklarowaniu. Poniżej znajduje się przykład użyciaglobal i local zmienne -
program exGlobal;
var
a, b, c: integer;
procedure display;
var
x, y, z: integer;
begin
(* local variables *)
x := 10;
y := 20;
z := x + y;
(*global variables *)
a := 30;
b:= 40;
c:= a + b;
writeln('Winthin the procedure display');
writeln(' Displaying the global variables a, b, and c');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
writeln('Displaying the local variables x, y, and z');
writeln('value of x = ', x , ' y = ', y, ' and z = ', z);
end;
begin
a:= 100;
b:= 200;
c:= 300;
writeln('Winthin the program exlocal');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
display();
end.
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
Displaying the global variables a, b, and c
value of a = 30 b = 40 c = 70
Displaying the local variables x, y, and z
value of x = 10 y = 20 z = 30
Zwróć uwagę, że wyświetlacz procedury ma dostęp do zmiennych a, b i c, które są zmiennymi globalnymi w odniesieniu do wyświetlania, jak również do własnych zmiennych lokalnych. Program może mieć taką samą nazwę dla zmiennych lokalnych i globalnych, ale wartość zmiennej lokalnej wewnątrz funkcji będzie miała pierwszeństwo.
Zmieńmy trochę poprzedni przykład, teraz zmienne lokalne do wyświetlania procedury mają takie same nazwy jak a , b , c -
program exGlobal;
var
a, b, c: integer;
procedure display;
var
a, b, c: integer;
begin
(* local variables *)
a := 10;
b := 20;
c := a + b;
writeln('Winthin the procedure display');
writeln(' Displaying the global variables a, b, and c');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
writeln('Displaying the local variables a, b, and c');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
end;
begin
a:= 100;
b:= 200;
c:= 300;
writeln('Winthin the program exlocal');
writeln('value of a = ', a , ' b = ', b, ' and c = ', c);
display();
end.
Kiedy powyższy kod jest kompilowany i wykonywany, daje następujący wynik -
Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
Displaying the global variables a, b, and c
value of a = 10 b = 20 c = 30
Displaying the local variables a, b, and c
value of a = 10 b = 20 c = 30