Pascal - Escopo Variável
Um escopo em qualquer programação é uma região do programa onde uma variável definida pode ter sua existência e além dessa variável não pode ser acessada. Existem três lugares, onde as variáveis podem ser declaradas na linguagem de programação Pascal -
Dentro de um subprograma ou bloco que é chamado de variáveis locais
Fora de todos os subprogramas que são chamados de variáveis globais
Na definição dos parâmetros do subprograma que são chamados de parâmetros formais
Deixe-nos explicar o que são local e global variáveis e parâmetros formais.
Variáveis Locais
As variáveis declaradas dentro de um subprograma ou bloco são chamadas de variáveis locais. Eles podem ser usados apenas por instruções que estão dentro desse subprograma ou bloco de código. Variáveis locais não são conhecidas por subprogramas fora dos seus próprios. A seguir está o exemplo usando variáveis locais. Aqui, todas as variáveis a , b e c são locais para o programa chamado 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.
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
value of a = 10 b = 20 c = 30
Agora, vamos estender pouco mais o programa, vamos criar um procedimento chamado de exibição, que terá o seu próprio conjunto de variáveis de um , b e c e exibir seus valores, desde o programa 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.
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Within the program exlocal
value of a = 100 b = 200 c = 300
Within the procedure display
value of a = 10 b = 20 c = 30
Variáveis globais
Variáveis globais são definidas fora de uma função, geralmente no topo do programa. As variáveis globais manterão seu valor ao longo da vida do seu programa e podem ser acessadas dentro de qualquer uma das funções definidas para o programa.
UMA globalvariável pode ser acessada por qualquer função. Ou seja, uma variável global está disponível para uso em todo o programa após sua declaração. A seguir está um exemplo usandoglobal e local variáveis -
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.
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
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
Observe que a tela de procedimento tem acesso às variáveis a, b e c, que são variáveis globais em relação à tela, bem como às suas próprias variáveis locais. Um programa pode ter o mesmo nome para variáveis locais e globais, mas o valor da variável local dentro de uma função terá preferência.
Vamos mudar um pouco o exemplo anterior, agora as variáveis locais para a exibição do procedimento têm os mesmos nomes que 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.
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
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