SóProvas


ID
81556
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação aos tipos abstratos de dados ? TAD, é correto afirmar:

Alternativas
Comentários
  • O Tipo abstrato de dados - TAD é uma especificação de um conjunto dedados e operçãoes que pde ser executado sobre esses dados. Ele encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações sobre os dados.
  • Discordo da letra b. Pilhas funcionam da mesma forma, uma estrutura LIFO (Last In First Out). Se eu quiser transferir dado de uma pilha para outra basta usar as operações push e pop, presentes em qualquer pilha, e transferir da pila A para uma pilha intermediária e após encher a pilha intermediária transferir para uma pilha B.
  • a) Errado. É justamente o contrário, TAD encapsula as estruturas de dados para evitar o contato direto com esses dados.



    b) Errado. Não encontrei o erro no item. Não é necessário saber como a pilha é implementada para realizar a transferência entre as duas. O examinador pode ter interpretado que saber quais operações executar para realizar a transferência seja conhecimento sobre a implementação.


    c) Errado. O TAD serve justamente para esconder (encapsular) a implementação dos programadores que fizerem uso dele. Dessa forma, é possível alterar a implementação (otimizar o algoritmo por exemplo) sem afetar a forma como o TAD é utilizado.


    d) Errado. Sem conhecimento sobre a implementação de um TAD, o programador nunca saberá quando está alterando um dado armazenado, pois ele invocará operações do TAD e não acessará os dados diretamente.


    e) Certa. Definição de TAD.
  • Acredito que essa questão era passível de anulação, pois há duas respostas corretas. Sinceramente não vejo como a letra B esteja errada. De fato não é necessário saber como a pilha é implementada para transferir os dados de uma pilha para a outra, basta usar as suas operações. (Obs. Os dados serão transferidos em ordem invertida usando as operações push e pop das duas pilhas, mas até aí OK).

  • Caio Lamas o que a letra B diz é que não precisa saber se a implementação da pilha foi usando lista com inserção na cabeça ou na calda. Imagine que o programador implementa uma pilha com inserção no topo, sendo que o topo é o final da lista. Ai como vou saber transferi dados de outra pilha se eu não sei se coloco os dados na cabeça ou na calda? E foi isso que a questão quis dizer. Sacou?

    Imagine duas pilhas:

    A = 2,3,4,5   <-- veja que o topo>
    Agora imagine que outro programador implementou uma outra pilha onde começa-se inserindo do final pro início:

    B = 5,4,3,2 <== essa>

    Viu a diferença?