Ir ao conteúdo

Posts recomendados

Postado

Fiz uma avaliação recentemente e teve uma questão que me deixou muito em duvida e eu não consigo fazer de jeito nenhum, gostaria que alguém me ajudasse a entender como chegar nesse resultado.

 

ps.: imagem da pilha anexada

 

Questão:

A seguinte sequência de instruções expressas na forma de uma pseudolinguagem (Português Estruturado) foi executada com base nesse estado da pilha. As instruções PUSH e POP são instruções típicas de estruturas de dados do tipo Pilha.

Soma ← 0; 
POP(x); 
Soma ← Soma + x; 
x ← 10; 
PUSH(x); 
x ← 12; 
PUSH(x); 
POP(x); 
POP(x); 
Soma ← Soma + x;


Com base nessa sequência de instruções, o valor final da variável Soma será:

Escolha uma:

a. 5

b. 17

c. 12

d. 10 

e. 15

 

Resposta certa e) 15

 

imagem-006.jpg

  • Membro VIP
Postado

Olá @markeloff.

 

10 horas atrás, markeloff disse:

Fiz uma avaliação recentemente e teve uma questão que me deixou muito em duvida e eu não consigo fazer de jeito nenhum, gostaria que alguém me ajudasse a entender como chegar nesse resultado.

 

Primeiramente você precisa dar uma estudada sobre Pilhas, como funciona a sua estrutura.

Ex.:
https://pt.wikipedia.org/wiki/Pilha_(informática)

https://pt.wikipedia.org/wiki/LIFO

https://pt.wikibooks.org/wiki/Algoritmos_e_Estruturas_de_Dados/Pilhas

 

Tendo uma base sobre o tema, basta executar as sequências do código. Para esse caso, seria meio que fazendo um teste de mesa.

 

Ex.:

Num canto do papel, deixa as variáveis separadas:

Pinha = [2,4,3,5]
Soma = 0 
X    = 0

Obs.: ao iniciar o programa, o algoritmo zera automaticamente as variáveis, ou seja, Soma e X teriam o valor 0. Mas aí depende da como é estipulado isso, pode ser que seja considerado como "null" (com nada nele)

 

A cada linha executada, vai atualizando elas:

Soma ← 0; 
POP(x); 
Soma ← Soma + x; 
x ← 10; 
PUSH(x); 
x ← 12; 
PUSH(x); 
POP(x); 
POP(x); 
Soma ← Soma + x;

 

Após linha 1: //Soma ← 0;

Pinha = [2,4,3,5]
Soma = 0 //apaga o 0 e coloca 0 (obs.: o valor foi atualizado, mesmo que seja para um valor igual)
X    = 0

Após linha 2: //POP(x);

Pinha = [2,4,3,-] //apaga a última posição
Soma = 0
X    = 5 //apaga o 0 e coloca 5

 

Após linha 3: //Soma ← Soma + x;

Pinha = [2,4,3,-] //apaga a última posição
Soma = 0  //apaga o 0 e coloca 5
X    = 5

 

Por ai vai.

 

No final, cada variável estará com seu respectivo valor.

 

 

Qualquer dúvida sobre o processo, é só avisar.

 

No aguardo.

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...