Na execução de um programa, uma estrutura pode ser usada na ...

Próximas questões
Com base no mesmo assunto
Q26141 Algoritmos e Estrutura de Dados
Na execução de um programa, uma estrutura pode ser usada na chamada de procedimentos para armazenar o endereço de retorno (e os parâmetros reais). À medida que procedimentos chamam outros procedimentos, mais e mais endereços de retorno devem ser montados em determinada ordem para, posteriormente, serem recuperados corretamente à medida que os procedimentos chegam ao seu fim. Esta estrutura é adequadamente representada por
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta para essa questão é a C - pilha.

Vamos entender o porquê.

Quando um programa executa chamadas de procedimentos (ou funções), ele precisa de uma estrutura que armazene o endereço de retorno e os parâmetros reais. Isso é essencial para que, ao término de uma função, o programa saiba exatamente de onde continuar a execução.

Essa estrutura deve ser capaz de armazenar endereços em uma ordem específica e recuperá-los corretamente. A estrutura de dados que realiza isso de maneira eficiente é a pilha.

A pilha funciona pelo princípio LIFO (Last In, First Out), ou seja, o último elemento a ser adicionado é o primeiro a ser removido. Isso é perfeito para chamadas de procedimentos porque a última função chamada deve ser a primeira a retornar.

Vamos justificar cada alternativa:

A - array: Um array armazena elementos contíguos na memória e permite acesso rápido a qualquer elemento pelo índice, mas não é adequado para gerenciar endereços de retorno em chamadas de procedimentos, pois não segue a ordem LIFO necessária.

B - espelhamento: Espelhamento não é uma estrutura de dados. O termo geralmente se refere a técnicas de redundância de dados (como RAID) e não tem relação com a gestão de chamadas de procedimentos.

C - pilha: Como explicado anteriormente, a pilha é ideal porque segue o princípio LIFO, permitindo que os endereços de retorno sejam armazenados e recuperados na ordem correta.

D - árvore binária: Uma árvore binária é uma estrutura hierárquica que pode ser usada para implementar outras estruturas de dados como heaps e árvores de busca, mas não é adequada para gerenciar chamadas de procedimentos devido à sua complexidade e não seguir diretamente o princípio LIFO.

E - fila: Uma fila segue o princípio FIFO (First In, First Out), o que significa que o primeiro elemento inserido é o primeiro a ser removido. Isso é contrário ao comportamento necessário para chamadas de procedimentos, que requerem LIFO.

Portanto, a estrutura de dados correta para esta situação é a pilha, pois ela gerencia adequadamente o fluxo de endereços de retorno e parâmetros reais durante as chamadas de procedimentos.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

UM DOS CONCEITOS CLÁSSICOS DE ´PILHA!
Essa descrição é de recursividade. Recursividade geralmente utiliza a pilha na sua implementação.

Um pouco de recursividade tratrado no Wikipedia:

Um método comum de simplificação consiste em dividir um problema em subproblemas do mesmo tipo. Como técnica de programação, isto se denomina divisão e conquista, e constitui a chave para o desenvolvimento de muitos algoritmos importantes, bem como um elemento fundamental do paradigma de programação dinâmica.

Praticamente todas as linguagens de programação usadas hoje em dia permitem a especificação direta de funções e procedimentos recursivos. Quando uma função é invocada, o computador (na maioria das linguagens sobre a maior parte das arquiteturas baseadas em pilhas) ou a implementação da linguagem registra as várias instâncias de uma função (em muitas arquiteturas, usa-se uma pilha de chamada, embora outros métodos possam ser usados). Reciprocamente, toda função recursiva pode ser transformada em uma função iterativa usando uma pilha.

Toda função que puder ser produzida por um computador pode ser escrita como função recursiva sem o uso de iteração; reciprocamente, qualquer função recursiva pode ser descrita através de iterações sucessivas.

Um exemplo simples poderia ser o seguinte: se uma palavra desconhecida é vista em um livro, o leitor pode tomar nota do número da página e colocar em uma pilha (que até então está vazia). O leitor pode consultar esta nova palavra e, enquanto lê o texto, pode achar mais palavras desconhecidas e acrescentar no topo da pilha. O número da página em que estas palavras ocorrem também são colocados no topo da pilha. Em algum momento do texto, o leitor vai achar uma frase ou um parágrafo onde está a última palavra anotada e pelo contexto da frase vai descobrir o seu significado. Então o leitor volta para a página anterior e continua lendo dali. Paulatinamente, remove-se seqüencialmente cada anotação que está no topo da pilha. Finalmente, o leitor volta para a sua leitura já sabendo o significado da(s) palavra(s) desconhecida(s). Isto é uma forma de recursão.

Sinceramente dá para entender que a insersão é sempre no topo, mas a retirada a questão não deixa tão clara.

A questão fala em uma estrutura que pode ser usada para armazenar endereço de retorno (conceito de pilha).

 

Em ciência da computação, uma pilha de chamada (ou pilha de execução) é uma pilha que armazena informações sobre as sub-rotinas ativas num programa de computador. Seu principal uso é registrar o ponto em que cada sub-rotina ativa deve retornar o controle de execução quando termina de executar. Sendo organizada como uma pilha, quem invoca a sub-rotina empilha o endereço de retorno.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo