(Sebesta, 2000) Considere o programa BIGSUB
apresentado a seguir:
program BIGSUB;
var
GLOBAL : integer;
LIST : array[1..2] of integer;
procedure SUB(PARAM : integer);
begin
PARAM := 3;
GLOBAL := GLOBAL + 1;
PARAM := 5;
end;
begin
LIST[1] := 3;
LIST[2] := 1;
GLOBAL := 1;
SUB(LIST[GLOBAL]);
end.
Execute manualmente o novo programa sob as mesmas pressuposições e compare os valores resultantes do array LIST
em BIGSUB
depois do retorno de SUB
:
(Sebesta, 2000) Considere o seguinte programa escrito na sintaxe C:
void troca(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
void main()
{
int valor = 2, lista[5] = {1, 3, 5, 7, 9};
troca(valor, lista[0]);
troca(lista[0], lista[1]);
troca(valor, lista[valor]);
}
Para cada um dos métodos de passagem de parâmetros seguintes, quais são todos os valores das variáveis valor
e lista
depois de cada uma das três chamadas a troca?
(Price, 2005) Considere o seguinte programa escrito na sintaxe Pascal:
program main;
var
a, b : integer;
procedure p(x, y, z : integer);
begin
y := y + 1
z := z + x;
end;
begin
a := 2;
b := 3;
p(a + b, a, a);
write(a);
end.
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
float sum(int i, int lo, int hi, float term)
{
float temp = 0.0;
for(i = lo; i <= hi; i++)
{
temp = temp + term;
}
return temp;
}
void main()
{
int k = 1;
printf("%f", sum(k, 1, 5, 1/k));
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void add(int x, int y)
{
for(int i = 0; i < 3; i++)
{
x = x + y;
}
}
void main()
{
int a = 3;
add(a, a + 2);
printf("%d", a);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void next(int w, int x, int y, int z)
{
for(int i = 0; i < 3; i++)
{
w = y;
x = z;
}
}
void main()
{
int a = 1;
int b = 2;
next(b, a, b + a, b - a);
printf("%d", a);
printf("%d", b);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void xpto(int a, int b, int c)
{
for(int i = 0; i < 3; i++)
{
a = i + c;
b = a * c;
}
}
void main()
{
int x = 2;
int y = 3;
xpto(x, y, x + y);
printf("%d", x);
printf("%d", y);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void xpto(int a, int b, int c)
{
a = b + c;
b = b * c;
}
void main()
{
int x = 2;
int y = 3;
xpto(x, y, x + y);
printf("%d", x);
printf("%d", y);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void serie(int i, int lo, int hi, int term, int result)
{
result = term;
for (i = lo; i < hi; i++)
{
result = result + term;
}
}
void main()
{
int k = 0;
int v[5] = {0, 0, 0, 0, 0};
serie(k, 1, 5, 2 * k + 1, v[k]);
}
Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis k
e v
após a chamada ao método serie
?
Considere o seguinte programa escrito na sintaxe C:
void func (int a, int b, int c, int d)
{
for (int j = a; j < b; j++)
{
c = c + d;
}
}
void main()
{
int i = 0;
int v[5] = {1, 2, 3, 4, 5};
func(i, 5, v[i], v[i] * 2);
}
Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis i
e v
após a chamada ao método func
?
Considere o seguinte programa escrito na sintaxe C:
void sub (int a, int b, int c)
{
a = a + 1;
b = a + 2;
a = a + 1;
c = b - 3;
}
void main()
{
int i = 0;
int v[5] = {1, 2, 3, 4, 5};
sub (i, v[i], v[4]);
}
Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis i
e v
após a chamada ao método sub
?
(Price, 2005) Considere o seguinte programa escrito na sintaxe C:
void xpto(int x, int y, int z)
{
x = y + 1;
z = x + y;
}
void main()
{
int a = 3;
int b = 5;
xpto(a, a + b, b);
printf("%d - %d", a, b);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
int sum(int i, int j, int t)
{
int temp = 0;
for(; i <= j; i++)
{
temp = temp + t;
}
return temp;
}
void main()
{
int k = 1;
printf("%d", sum(k, 5, k * k));
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Considere o seguinte programa escrito na sintaxe C:
void sub(int i, int j, int k) {
i = i + j;
k = j + k;
}
void main() {
int x = 5;
int y = 8;
sub(x, x + y, y);
printf("%d", y);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
Price, Ana Maria de Alencar. (2005). Implementação de Linguagens de Programação: compiladores. 3ª edição. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto. 212 páginas.
Sebesta, Robert W. (2000). Conceitos de Linguagens de Programação. 4ª edição. Porto Alegre: Bookman. 624 páginas.