Ir ao conteúdo
  • Cadastre-se

Portugol Sobre operação push pop em pilha (estrutura de dados)


Posts recomendados

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

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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
Link para o comentário
Compartilhar em outros sites

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...