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=3
c=a+2
while (a<=6):
b=a-2
print (b)
while (b>0):
if (a<c):
c=a * 2
elif (a>3):
c=a+b
else:
c=b-1
print(c)
b=b-2
a=a+3

Passo 1

O enunciado pede para fazermos a tabela de acompanhamento (trace table) de um programa que usa atribuições, loops while, condicionais if/elif/else e comandos print. Vamos simular passo a passo, anotando após cada instrução os valores das variáveis a, b e c.

Passo 2

Primeiro, criamos o esqueleto da tabela com as colunas:
Passo mid Instrução mid a mid b mid c
Cada linha da tabela corresponderá à execução de uma instrução ou avalição de condição ( whi<=? ou if?), mostrando o estado das variáveis logo em seguida.

Passo 3

Executamos as instruções iniciais fora dos laços:
  • Passo : fica , e indefinidos.
  • Passo : fica , , indefinido.
  • Passo : testa while (a<\(=6\))? com , entra no laço.

Passo 4

Iteração do while externo:
  • Passo : .
  • Passo : print(b) imprime .
  • Passo : testa while (b>\(0\))? com entra no interno.
  • Passo : testa if (\(a<c\))? é verdade.
  • Passo : .
  • Passo : print\text{(c)} imprime .
  • Passo : .
  • Sai do while interno; Passo : .

Passo 5

Iteração do while externo:
  • Passo : testa while (a<\(=6\))? com entra de novo.
  • Passo : .
  • Passo : print(b) imprime .
  • Passo : testa while (b>\(0\))? com entra no interno.
    • Passo : testa if (\(a<c\))? é falso.
    • Passo : cai em elif (a>\(3\))? é verdade, faz .
    • Passo : print\text{(c)} imprime .
    • Passo : .
  • Continua while interno (agora > ):
    • Passo : testa while (b>\(0\))?.
    • Passo : testa if (\(a<c\))? é verdade.
    • Passo : .
    • Passo : print\text{(c)} imprime .
    • Passo : .
  • Sai do while interno; Passo : .
  • Passo : testa while (a<\(=6\))? é falso, termina.

Passo 6

Aqui está a tabela de acompanhamento completa:
Passo Instrução a b c
1 a=3 3
2 c=a+2 3 5
3 while (a<=6)? 3 5
4 b=a-2 3 1 5
5 print(b) 3 1 5
6 while (b>0)? 3 1 5
7 if (a<c) 3 1 5
8 c=acdot2 3 1 6
9 print(c) 3 1 6
10 b=b-2 3 -1 6
11 a=a+3 6 -1 6
12 while (a<=6)? 6 -1 6
13 b=a-2 6 4 6
14 print(b) 6 4 6
15 while (b>0)? 6 4 6
16 if (a<c) 6 4 6
17 c=a+b 6 4 10
18 print(c) 6 4 10
19 b=b-2 6 2 10
20 while (b>0)? 6 2 10
21 if (a<c) 6 2 10
22 c=acdot2 6 2 12
23 print(c) 6 2 12
24 b=b-2 6 0 12
25 a=a+3 9 0 12
26 while (a<=6)? 9 0 12

Resposta

Veja acima a tabela completa com todos os passos e os valores de a, b e c após cada instrução.

Exercícios relacionados