Questão FC373193
Considere o programa em pseudocódigo abaixo, que não apresenta erros. var var1=1, var2=2: inteiro funcao1() inicio var var1=100, var2=100: inteiro imprima("Variaveis dentro da func
Algoritmos e Lógica de Programação
FCC · 2019
Considere o programa em pseudocódigo abaixo, que não apresenta erros.
var var1=1, var2=2: inteiro
funcao1()
inicio
var var1=100, var2=100: inteiro
imprima("Variaveis dentro da funcao1(): var1= ", var1, " var2=", var2)
fim
funcao2()
inicio
var1 = var1 +1;
var2 = var2 +2;
imprima("Variaveis dentro da funcao2(): var1= ", var1, " var2=", var2)
fim
inicio
imprima("Variaveis antes de chamar a funcao1(): var1= ", var1, " var2=", var2)
funcao1()
imprima("Variaveis depois de chamar a funcao1():var1= ", var1, " var2=", var2)
funcao2()
imprima("Variaveis depois de chamar a funcao2():var1= ", var1, " var2=", var2)
fim
O pseudocódigo, ao ser executado, imprimirá
- Variaveis antes de chamar a funcao1(): var1=0 var2=0
- Variaveis dentro da funcao1(): var1=1 var2=2
- Variaveis dentro da funcao2(): var1=101 var2=102
- Variaveis depois de chamar a funcao1(): var1=1 var2=2
- Variaveis depois de chamar a funcao2(): var1=101 var2=102
Mostrar resposta e comentário
Gabarito
D
Comentário do professor
O trecho acertado mostra que, após a execução de funcao1(), as variáveis impressas mantêm os valores iniciais. Isso ocorre porque há distinção entre variáveis globais (declaradas no início: var1=1, var2=2) e variáveis locais.
Dentro de funcao1() são declaradas novas variáveis locais (var1=100, var2=100) que sombreiam as globais apenas no escopo da função. Assim, a impressão feita dentro da função mostra 100 e 100, mas não altera os valores globais.
Ao retornar ao programa principal, os nomes voltam a referir-se às variáveis globais, portanto a mensagem “Variaveis depois de chamar a funcao1(): var1= 1 var2=2” é a impressão correta — as globais permaneceram \(var1=1\) e \(var2=2\).
Conteúdo do catálogo FC Concursos · Atualizado em