Pascal-可変スコープ
プログラミングのスコープは、定義された変数が存在する可能性があり、その変数を超えてアクセスできないプログラムの領域です。Pascalプログラミング言語で変数を宣言できる場所は3つあります-
ローカル変数と呼ばれるサブプログラムまたはブロック内
グローバル変数と呼ばれるすべてのサブプログラムの外
仮パラメータと呼ばれるサブプログラムパラメータの定義
何であるかを説明しましょう local そして global 変数と仮パラメータ。
ローカル変数
サブプログラムまたはブロック内で宣言される変数は、ローカル変数と呼ばれます。それらは、そのサブプログラムまたはコードのブロック内にあるステートメントによってのみ使用できます。ローカル変数は、それ自体の外部のサブプログラムには認識されません。以下は、ローカル変数を使用した例です。ここで、すべての変数a、b、およびcは、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.
上記のコードをコンパイルして実行すると、次の結果が得られます。
value of a = 10 b = 20 c = 30
ここで、プログラムをもう少し拡張して、displayという名前のプロシージャを作成しましょう。このプロシージャは、独自の変数a、b、cのセットを持ち、プログラム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.
上記のコードをコンパイルして実行すると、次の結果が得られます。
Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
value of a = 10 b = 20 c = 30
グローバル変数
グローバル変数は、関数の外部、通常はプログラムの上で定義されます。グローバル変数は、プログラムの存続期間を通じてその値を保持し、プログラム用に定義された任意の関数内でアクセスできます。
A global変数には任意の関数からアクセスできます。つまり、グローバル変数は、宣言後、プログラム全体で使用できます。以下は使用例ですglobal そして local 変数-
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.
上記のコードをコンパイルして実行すると、次の結果が得られます。
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
プロシージャdisplayは、変数a、b、およびcにアクセスできることに注意してください。これらは、表示に関するグローバル変数であり、独自のローカル変数でもあります。プログラムはローカル変数とグローバル変数に同じ名前を付けることができますが、関数内のローカル変数の値が優先されます。
前の例を少し変更してみましょう。ここで、プロシージャ表示のローカル変数は、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.
上記のコードをコンパイルして実行すると、次の結果が得られます。
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