Professional Documents
Culture Documents
E.P.E.T N 20
MBITO DE VARIABLES
El mbito de una variable (en ingls: scope) es el contexto del programa en que ella puede ser
utilizada.
MBITOS GLOBAL Y LOCAL
Pascal tiene dos mbitos: el global y el local.
Tienen mbito local las variables locales de los subprogramas (funciones y
procedimientos). stas variables pueden ser utilizadas slo dentro del subprograma en
que fueron declaradas.
Las variables locales son:
E.P.E.T N 20
Las variables globales pueden ser usadas desde cualquier parte del programa, tanto el
cuerpo del programa como dentro de las funciones.
REGLAS DE MBITO
Todos los lenguajes de programacin tienen sus propias reglas de mbito que indican qu
variables tienen preferencia en caso que haya variables con el mismo nombre en distintos
mbitos.
En Pascal, cuando hay una variable global y una local que tienen el mismo nombre, dentro del
subprograma la variable global no es visible. Esto no significa que la variable global no
exista; simplemente no es visible: todas las ocurrencias del nombre dentro del subprograma se
refieren a la variable local. Cuando el compilador busca una variable mencionada en un
subprograma busca primero entre las variables globales, luego entre los parmetros y por
ltimo en las variables globales ; es decir de lo ms cercano a lo ms lejano.
Como ejemplo, consideremos el siguiente programa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program Ambitos;
var
w, x, y: Integer;
procedure P(y: Integer; z: Integer);
var
v, w: Integer;
begin
v := 5;
w := 6;
x := 7;
z := 8;
WriteLn('Dentro de P:');
WriteLn(' v = ', v);
WriteLn(' w = ', w);
WriteLn(' x = ', x);
WriteLn(' y = ', y);
WriteLn(' z = ', z);
end;
begin
2
24
25
26
27
28
29
30
31
32
33
E.P.E.T N 20
w := 0;
x := 1;
y := 2;
P(3, 4);
WriteLn('Fuera de P:');
WriteLn(' w = ', w);
WriteLn(' x = ', x);
WriteLn(' y = ', y);
end.
En las lneas 23 a 25, se modifica slo variables globales. Las variables locales de P
no existen fuera de la funcin.
En la lnea 11, se modifica la variable global x, ya que no hay ninguna variable local
con el mismo nombre.
E.P.E.T N 20
En las lneas 23 a 25, se modifica slo variables globales. Las variables locales de P
no existen fuera de la funcin.
En la lnea 11, se modifica la variable global x, ya que no hay ninguna variable local
con el mismo nombre.
E.P.E.T N 20
1.-Realizar la traza de los siguientes programas; indicar en cada uno cuales son
las variables locales y cuales las globales
a.Program Prueba;
var
a,b,x,y:integer;
Procedure mezcla(var q,a:integer;b,r:integer);
var
x,z:integer;
begin
x:=3;
z:=x;
x:=x+1;
q:=q*2+a;
b:=1+z-(2*x);
writeln(q,a,b,r,x,z);
end;
begin
a:=1;
b:=2;
x:=7;
y:=11;
writeln(a,b,x,y);
mezcla(a,b,x,y);
writeln(a,b,x,y);
mezcla(a,b,x-y,y);
writeln(a,b,x,y);
end.
b) program Ambitos;
var
z, p, q: Integer;
procedure P(var y: Integer; k: Integer);
var
p: Integer;
begin
k := 5;
q := 7;
p:= 13;
y := 8+p;
WriteLn('Dentro de P:');
WriteLn(' z = ', z);
WriteLn(' p = ', p);
WriteLn(' q = ', q);
WriteLn(' y = ', y);
WriteLn(' k = ', k);
end;
E.P.E.T N 20
begin
z := 16;
p := 1;
q := 2;
P(z, p);
WriteLn('Fuera de P:');
WriteLn(' z = ', z);
WriteLn(' p = ', p);
WriteLn(' q = ', q);
end.
c.program NOSE;
uses crt;
var
h,p,i:integer;
procedure xxx(var m:integer;j,k:integer);
var
h:integer;
begin
m:=m+1;
h:=k;
k:=i;
writeln('En xxx ',m,' ',h,' ',k);
end;
begin
clrscr;
p:=3;
i:=1;
repeat
h:=i+1;
xxx(p,h,i);
i:=p*2;
writeln('En principal ',p,' ',h,' ',i);
until (p=5)
end.
2) En el siguiente ejemplo:
6
E.P.E.T N 20
Programa A
Var
k,l,m,n:integer
Procedure B
Var
k,o,p,r:integer
Begin
End;
Procedure C
Var
p,s:integer
Begin
End;
Begin
.
End.