Questão 1
Considere o seguinte programa em Python:
def funcao1(x) : # use o espaço ao lado do código como rascunho para
if x == 0 : # registrar o valor das variáveis
y = x + 1
else :
y = x - 3
return y
def funcao2(a, b, c) :
x = a + b
y = a - b
z = c
print(x, y, z)
#programa principal
x = 3
y = 5
z = 7
y = funcao1(x)
print(x, y, z)
print(x+z, funcao1(x+z))
a = 2
b = 6
c = 4
funcao2(c, b, a)
a = funcao1(a)
funcao2(funcao1\text{(c)}, b, a)
print(x, y, z)
Escreva abaixo na “Tela do Computador” qual será a saída exata fornecida pelo programa:
def funcao1(x) : # use o espaço ao lado do código como rascunho para
if x == 0 : # registrar o valor das variáveis
y = x + 1
else :
y = x - 3
return y
def funcao2(a, b, c) :
x = a + b
y = a - b
z = c
print(x, y, z)
#programa principal
x = 3
y = 5
z = 7
y = funcao1(x)
print(x, y, z)
print(x+z, funcao1(x+z))
a = 2
b = 6
c = 4
funcao2(c, b, a)
a = funcao1(a)
funcao2(funcao1\text{(c)}, b, a)
print(x, y, z)
Passo 1
Temos um programa Python com duas funções:
– funcao1 recebe um parâmetro , retorna
se
ou retorna
caso contrário.
– funcao2 recebe três parâmetros , calcula localmente
– funcao1 recebe um parâmetro
– funcao2 recebe três parâmetros
e imprime esses três valores.
No programa principal, definem-se variáveis globais, fazem chamadas a essas funções e usam vários prints. O objetivo é rastrear (trace) passo a passo para descobrir exatamente o que aparece na “tela do computador”.
No programa principal, definem-se variáveis globais, fazem chamadas a essas funções e usam vários prints. O objetivo é rastrear (trace) passo a passo para descobrir exatamente o que aparece na “tela do computador”.
Passo 2
Inicialmente, no escopo global, temos
Em seguida executa-se
Como
, dentro de funcao1 calcula-se
e retorna esse valor. Logo, globalmente
passa a valer
(enquanto
e
continuam
e
).
Passo 3
A instrução
usa os valores atuais de ,
e
no escopo global. Portanto imprime:
3 0 7
usa os valores atuais de
3 0 7
Passo 4
A seguir, executa-se
Calcula-se
. Depois,
retorna
. Logo esse print produz:
10 7
10 7
Passo 5
Agora definem-se novas variáveis no escopo global:
Chama-se
, ou seja
.
Dentro de funcao2 temos
Dentro de funcao2 temos
e então imprime
10 -2 2
10 -2 2
Passo 6
Em seguida, faz-se
isto é
, que retorna
. Então
vira
.
Depois chama-se
.
Como ,
. Então é
.
Dentro de funcao2:
Depois chama-se
Como
Dentro de funcao2:
imprime
7 -5 -1
7 -5 -1
Passo 7
Por fim, executa-se novamente
no escopo global. Esses valores não mudaram desde o Passo 3:
no escopo global. Esses valores não mudaram desde o Passo 3:
logo imprime
3 0 7
3 0 7
Resposta
3 0 7
10 7
10 -2 2
7 -5 -1
3 0 7
10 7
10 -2 2
7 -5 -1
3 0 7