(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:sub1sub2sub3x é a correta para a referência a x em:sub1sub2sub3(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.