Para cada programa a seguir, monte a tabela de acompanhamento, exibindo o valor das variáveis após a execução de cada instrução.
a=4
b=a * a * a
c=b / a
if (c>a):
while (b / a>1):
c=c-a
b=b / 2
else:
c=a+c

Passo 1

O enunciado apresenta um pequeno programa imperativo que atribui valores às variáveis a, b e c, faz um teste condicional e um laço de repetição, e pede para montar a tabela de acompanhamento exibindo o valor de cada variável após cada instrução. O conteúdo aqui é execução passo a passo (trace) de um programa, mostrando como a cada atribuição ou verificação de condição as variáveis mudam (ou não).

Passo 2

Definimos uma tabela com quatro colunas: a coluna “Instrução” descreve qual linha do programa foi executada, e as colunas “ a”, “ b”, “ c” mostram os valores atuais dessas variáveis logo após a execução daquela instrução.

Resposta

Passo Instrução a b c
1 a = 4 4
2 b = a * a * a 4 64
3 c = b / a 4 64 16
4 if (c > a) (teste) 4 64 16
5 while (b / a > 1) (1ª vez, teste) 4 64 16
6 c = c - a 4 64 12
7 b = b / 2 4 32 12
8 while (b / a > 1) (2ª vez, teste) 4 32 12
9 c = c - a 4 32 8
10 b = b / 2 4 16 8
11 while (b / a > 1) (3ª vez, teste) 4 16 8
12 c = c - a 4 16 4
13 b = b / 2 4 8 4
14 while (b / a > 1) (4ª vez, teste) 4 8 4
15 c = c - a 4 8 0
16 b = b / 2 4 4 0
17 while (b / a > 1) (5ª vez, teste falha) 4 4 0
Após a quinta verificação, b/a=1 não é maior que 1, então o laço termina e não entra no else.

Exercícios relacionados