(Sebesta, 2000) Considere o seguinte programa Pascal esquemático:
program main;
var x : integer;
procedure sub1;
var x : integer;
procedure sub2;
begin { sub2 }
...
end; { sub2 }
begin { sub1 }
...
end; { sub1 }
procedure sub3;
begin { sub3 }
...
end; { sub3 }
begin { main }
...
end. { main }
Suponhamos que a execução desse programa seja na seguinte ordem unitária:
main
chama sub1
sub1
chama sub2
sub2
chama sub3
x
é a correta para a referência a x
em:sub1
sub2
sub3
x
é a correta para a referência a x
em:sub1
sub2
sub3
(Sebesta, 2000) Suponha que o seguinte programa tenha compilado e executado usando regras de escopo estático. Qual valor de x
é impresso no procedimento sub1
? De acordo com as regras de escopo dinâmico, qual valor de x
é impresso no procedimento sub1
?
program main;
var x : integer;
procedure sub1;
begin { sub1 }
writeln('x = ', x);
end; { sub1 }
procedure sub2;
var x : integer;
begin { sub2 }
x := 10;
sub1;
end; { sub2 }
begin { main }
x := 5;
sub2;
end. { main }
(Sebesta, 2000) Considere o seguinte programa:
program main;
var x, y, z : integer;
procedure sub1;
var a, y, z : integer;
procedure sub2;
var a, b, z : integer;
begin { sub2 }
...
end; { sub2 }
begin { sub1 }
...
end; { sub1 }
procedure sub3;
var a, x, w : integer;
begin { sub3 }
...
end; { sub3 }
begin { main }
...
end. { main }
Liste todas as variáveis, juntamente com as unidades de programa onde elas foram declaradas que são visíveis nos corpos de sub1
, sub2
e sub3
, supondo que seja usado o escopo estático.
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada?
Inclua, em cada variável visível, o nome da função em que ela foi definida.
main
chama sub2
; sub2
chama sub1
.main
chama sub2
; sub2
chama sub1
; sub1
chama sub3
.main
chama sub2
; sub2
chama sub3
.main
chama sub3
; sub3
chama sub2
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub1
.(Sebesta, 2000) Considere o seguinte programa:
program main;
var x, y, z : integer;
procedure sub1;
var a, y, z : integer;
begin { sub1 }
...
end; { sub1 }
procedure sub2;
var a, x, w : integer;
procedure sub3;
var a, b, z : integer;
begin { sub3 }
...
end; { sub3 }
begin { sub2 }
...
end; { sub2 }
begin { main }
...
end. { main }
Liste todas as variáveis, juntamente com as unidades de programa onde elas foram declaradas que são visíveis nos corpos de sub1
, sub2
e sub3
, supondo que seja usado o escopo estático.
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada?
Inclua, em cada variável visível, o nome da função em que ela foi definida.
main
chama sub2
; sub2
chama sub1
; sub1
chama sub3
.main
chama sub1
; sub1
chama sub2
; sub2
chama sub3
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub1
.(Sebesta, 2000) Considere o seguinte programa em C:
void fun(void)
{
int a, b, c; /* definição 1 */
...
while(...)
{
int b, c, d; /* definição 2 */
... (1)
while(...)
{
int c, d, e; /* definição 3 */
... (2)
}
... (3)
}
... (4)
}
Para cada um dos quatro pontos marcados nessa função, liste cada variável visível, juntamente com o número da instrução de definição que a define.
(Sebesta, 2000) Considere o seguinte programa C esquemático:
void main()
{
int a, b, c;
...
}
void fun1(void)
{
int b, c, d;
...
}
void fun2(void)
{
int c, d, e;
...
}
void fun3(void)
{
int d, e, f;
...
}
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama fun1
; fun1
chama fun2
; fun2
chama fun3
.main
chama fun1
; fun1
chama fun3
.main
chama fun2
; fun2
chama fun3
; fun3
chama fun1
.main
chama fun3
; fun3
chama fun1
.main
chama fun1
; fun1
chama fun3
; fun3
chama fun2
.main
chama fun3
; fun3
chama fun2
; fun2
chama fun1
.(Sebesta, 2000) Considere o seguinte programa:
program main;
var x, y, z : integer;
procedure sub1;
var a, y, z : integer;
begin { sub1 }
...
end; { sub1 }
procedure sub2;
var a, b, z : integer;
begin { sub2 }
...
end; { sub2 }
procedure sub3;
var a, x, w : integer;
begin { sub3 }
...
end; { sub3 }
begin { main }
...
end. { main }
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama sub1
; sub1
chama sub2
; sub2
chama sub3
.main
chama sub1
; sub1
chama sub3
.main
chama sub2
; sub2
chama sub3
; sub3
chama sub1
.main
chama sub3
; sub3
chama sub1
.main
chama sub1
; sub1
chama sub3
; sub3
chama sub2
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub1
.(Sebesta, 2000) Considere o seguinte programa C esquemático:
void main()
{
int a, b, c;
...
}
void fun1(void)
{
int b, c, d;
...
}
void fun2(void)
{
int c, d, e;
...
}
void fun3(void)
{
int d, e, f;
...
}
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama fun2
; fun2
chama fun1
; fun1
chama fun3
.main
chama fun3
; fun3
chama fun1
; fun1
chama fun2
.Considere o seguinte programa:
program main;
var a, b, c : integer;
procedure sub1;
var a, b, z : integer;
procedure sub2;
var a, y, z : integer;
begin { sub2 }
...
end; { sub2 }
begin { sub1 }
...
end; { sub1 }
procedure sub3;
var x, y, z : integer;
procedure sub4;
var x, b, c : integer;
begin { sub4 }
...
end; { sub4 }
begin { sub3 }
...
end; { sub3 }
begin { main }
...
end. { main }
Liste todas as variáveis, juntamente com as unidades de programa onde elas foram declaradas que são visíveis nos corpos de sub1
, sub2
, sub3
e sub4
, supondo que seja usado o escopo estático.
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada?
Inclua, em cada variável visível, o nome da função em que ela foi definida.
main
chama sub2
; sub2
chama sub1
; sub1
chama sub3
.main
chama sub2
; sub2
chama sub1
; sub1
chama sub3
; sub3
chama sub4
.main
chama sub2
; sub2
chama sub3
; sub3
chama sub1
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub4
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub1
; sub1
chama sub4
.(Sebesta, 2000) Considere o seguinte programa:
public class Test {
private int x, y, z, w;
public void sub1() { int a, y, z, w; }
public void sub2() { int a, b, z, w; }
public void sub3() { int a, b, c, w; }
public void sub4() { int a, b, c, d; }
public static void main(String[] args) { }
}
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama sub1
; sub1
chama sub2
; sub2
chama sub3
.main
chama sub2
; sub2
chama sub3
; sub3
chama sub4
.main
chama sub2
; sub2
chama sub3
; sub3
chama sub1
.main
chama sub4
; sub4
chama sub3
; sub3
chama sub1
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub1
.Considere o seguinte programa C esquemático:
void main()
{
int a, b, c;
...
}
void fun1()
{
int b, c, z;
...
}
void fun2()
{
int c, y, z;
...
}
void fun3()
{
int x, y, z;
...
}
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama fun1
; fun1
chama fun2
; fun2
chama fun3
.main
chama fun1
; fun1
chama fun3
.main
chama fun2
; fun2
chama fun3
; fun3
chama fun1
.main
chama fun3
; fun3
chama fun1
.main
chama fun1
; fun1
chama fun3
; fun3
chama fun2
.main
chama fun3
; fun3
chama fun2
; fun2
chama fun1
.Considere o seguinte programa esquemático, escrito na linguagem Java:
public class Test {
private int x, y, z;
public void sub1() { int x, y, c; }
public void sub2() { int x, b, c; }
public void sub3() { int a, b, z; }
public void sub4() { int a, y, z; }
public static void main(String[] args) { int a, b, c; }
}
Dadas as seguintes sequências de chamada e supondo-se que seja usado o escopo dinâmico, quais variáveis são visíveis durante a execução da última função chamada? Inclua, em cada variável visível, o nome da função em que ela foi definida
main
chama sub1
; sub1
chama sub2
; sub2
chama sub3
.main
chama sub1
; sub1
chama sub3
.main
chama sub2
; sub2
chama sub4
; sub4
chama sub1
.main
chama sub3
; sub3
chama sub4
.main
chama sub1
; sub1
chama sub3
; sub3
chama sub2
.main
chama sub3
; sub3
chama sub2
; sub2
chama sub4
.Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.