Prévia do material em texto
Sessenta Boaventura Maxarane Estrutura de Dados e Algoritmo Ano – 2º; Nível – 1 Actividade: Tipos Abstratos de Dados (TAD) – Fila de Pacientes Universidade Pedagógica de Maputo Faculdade de Engenharia e tecnologia Maio de 2026 Sessenta Boaventura Maxarane Estrutura de Dados e Algoritmo Ano – 2º; Nível – 1 Actividade: Tipos Abstratos de Dados (TAD) – Fila de Pacientes Docente: Aurélio Armando Pires Ribeiro Universidade Pedagógica de Maputo Faculdade de Engenharia e tecnologia Maio de 2026 1. Explique o que é um Tipo Abstrato de Dados (TAD) e apresente duas vantagens do seu uso. ✓ Resposta: Um Tipo Abstrato de Dados (TAD) é um tipo de dado que implementa um objeto que tem um comportamento específico, relacionado com os seus valores e, principalmente, suas operações. O conceito da estrutura é separado da implementação subjacente, ou seja, o que importa é o que esse tipo faz, mas não como ele faz. ✓ Justificar: TAD como um tipo que “implementa um objecto que tem um comportamento específico. O comportamento está relacionado com os seus valores e, principalmente, suas operações. E aí entra o conceito da estrutura, e ela é separada da implementação subjacente, ou seja, o que importa é o que esse tipo faz, mas não como esse tipo faz o que ele faz.” ✓ Vantagem O uso do TAD, é para “simplificar operações em programação” e não haver preocupação com a implementação interna. Por exemplo, pode-se usar um TAD Pilha com suas operações (push, pop) independentemente de ela ter sido “implementada utilizando-se listas encadeadas, mas também podem ser implementadas usando arrays.” 2. Defina o TAD FilaPacientes, indicando: a) A estrutura lógica ✓ Responder A estrutura lógica de uma fila é linear e segue o princípio FIFO (First In, First Out), que significa “o primeiro a entrar é o primeiro a sair”. Os elementos são inseridos de um lado da lista, que é o final, e retirados do outro lado, que é o início. ✓ Justificar: O texto explica que nas filas "a inserção e remoção dos itens segue um princípio diferente, o princípio FIFO, First In, First Out, significa “o primeiro a entrar é o primeiro a sair”. E que “os elementos também são inseridos de um lado da lista, que é o final, mas eles são retirados do outro lado da lista, que é o início da lista.” b) As operações básicas ✓ Responder As operações básicas para inserir e remover itens são chamadas de enqueue e dequeue. Para consultar um elemento sem removê-lo, usa-se a operação peek. ✓ Justificar: Enqueue para colocar na fila e dequeue para tirar da fila, e a operação peek retorna o elemento da fila sem remover, geralmente o primeiro elemento da fila. 3. Considere a fila inicialmente vazia. Represente o estado da fila após a seguinte operação: Inserir Ana ✓ Responder: A fila contém o elemento Ana. Ana está no início e no final da fila. [Início] Ana [Fim] ✓ Justificar: Pode se adicionar mais dados, eles vão sempre entrar no final da fila, daí que é uma operação chamada enqueue. Sendo a fila inicialmente vazia, Ana é inserida no final, tornando-se também o primeiro elemento. 4. Represente o estado da fila após: Inserir Carlos ✓ Responder: Carlos é inserido no final da fila. A fila fica com Ana no início e Carlos no final. [Início] Ana, Carlos [Fim] ✓ Justificar: De acordo com o texto, os dados “vão sempre entrar no final da fila”. 5. Represente o estado da fila após: Inserir Beatriz ✓ Responder: Beatriz é inserida no final da fila, atrás de Carlos. [Início] Ana, Carlos, Beatriz [Fim] ✓ Justificar: Consistente com a regra de inserção no final da fila descrita no texto. 6. Após a operação Atender um paciente, indique: a) Quem foi atendido Quem foi atendido: Ana. b) Como fica a fila Como fica a fila: Carlos passa a ser o início da fila, e Beatriz permanece no final. [Início] Carlos, Beatriz [Fim] ✓ Justificar: Posso retirar um dado na operação dequeue, e nesse caso o dado é sempre retirado do início da fila. Como Ana era o primeiro elemento da fila e, portanto, o que entrou primeiro, ela é a atendida (retirada). 7. Após a operação Ver próximo paciente, indique quem será atendido a seguir. O próximo paciente a ser atendido é Carlos. ✓ Justificar: Esta operação corresponde ao “peek”, que o texto define como a operação que "retorna o elemento da fila sem remover, geralmente o primeiro elemento da fila". Após a saída de Ana, Carlos é o primeiro elemento da fila. 8. Represente o estado da fila após: Inserir Daniel Daniel é inserido no final da fila. [Início] Carlos, Beatriz, Daniel [Fim] ✓ Justificar: Fiel à regra de que os novos dados "vão sempre entrar no final da fila" com a operação enqueue. 9. Após a operação Atender dois pacientes, indique: a) Quem foi atendido Quem foi atendido: Carlos e Beatriz. b) Como fica a fila Como fica a fila: Resta apenas Daniel na fila. Ele é o início e o fim. [Início] Daniel [Fim] ✓ Justificar: Novamente, a remoção é feita “sempre do início da fila”. O primeiro atendimento retira Carlos. Após essa retirada, Beatriz torna-se o início da fila e é atendida em seguida. 10. Liste todos os pacientes que foram atendidos durante a simulação. Ana, Carlos e Beatriz. ✓ Justificar: Conforme as operações de remoção (atendimento) realizadas nas questões 6 e 9, que retiram sempre o elemento que está no início da fila. 11. Indique qual paciente permaneceu na fila no final. Daniel. ✓ Justificar: Após a inserção de Daniel e as duas operações de atendimento subsequentes, o estado final da fila, representado na questão 9, contém apenas o elemento Daniel. 12. Apresente o pseudocódigo para o TAD FilaPacientes. Com base nas operações descritas no texto, o TAD FilaPacientes deve prover as seguintes operações: • enqueue(paciente): Insere um paciente no final da fila. • dequeue(): Remove e retorna o paciente do início da fila. • peek(): Retorna o paciente do início da fila sem removê-lo. • isEmpty(): Verifica se a fila está vazia (retorna verdadeiro ou falso). ✓ Justificar: A “Enqueue para colocar na fila e dequeue para tirar da fila. A operação peek retorna o elemento da fila sem remover... E as operações isEmpty e isFull vão verificar se a fila está vazia ou cheia”. Um pseudocódigo deve traduzir essas operações para a lógica do TAD. 13. Explique a diferença entre fila e pilha (stack). ✓ Responder: A principal diferença está no princípio de funcionamento. A pilha é baseada no princípio LIFO (Last In, First Out), ou seja, “o último a entrar é o primeiro a sair”, com inserção e exclusão ocorrendo no topo. Já a fila é baseada no princípio FIFO (First In, First Out), ou seja, “o primeiro a entrar é o primeiro a sair”, com inserção no final e exclusão no início. ✓ Justificar: As pilhas são baseadas em LIFO, as filas em FIFO. Nas pilhas, a inserção/exclusão ocorre na ponta que é o topo. Já na fila, a inserção/exclusão ocorre nos lados opostos da fila. 14. Dê dois exemplos reais de aplicação de fila e dois de pilha. ✓ Responder: Exemplos de aplicação de fila: 1. Fila de impressão ou acesso a um disco. 2. Controle de tickets, gerenciamento de filas (ex: hospital, para gerar uma senha de acesso). Exemplos de aplicação de pilha: 3. Mecanismos para fazer/desfazer em aplicações (ex: processador de textos). 4. Avaliação de expressão aritmética (algoritmos usados em calculadoras). ✓ Justificar: Uma fila de impressão ou acesso a um disco, por exemplo, funciona assim; e “controle de tickets, gerenciamento de filas. Se você vai a um hospital, por exemplo, toca na maquininha ali logo na entrada do hospital para gerar uma senha de acesso, na verdade é um número dentro de uma fila”. Para pilhas:“mecanismos para fazer/desfazer em aplicações, por exemplo, lá no processador de textos” e “avaliação de expressão aritmética (os tipos de algoritmos que são usados em calculadoras”.