Prévia do material em texto
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 1/30
IMPLEMENTAÇÃO DE
FILAS EM PYTHON
APRESENTAÇÃO
Olá!
É possível encontrar filas no dia a dia o tempo inteiro: fila no banco, fila no ônibus, fila para
comprar pão e em muitas outras situações. Em uma situação normal, o primeiro da fila
será o primeiro a ser atendido. Mas há exceções: os idosos, por exemplo, têm preferência
no atendimento, assim como pessoas com deficiência e mulheres grávidas ou com crianças
de colo.
Uma das regras mais simples para determinar quem será o próximo da fila é a polí�ca de
enfileiramento, sendo FIFO a mais simples, do inglês first in, first out (primeiro a entrar,
primeiro a sair). Existe também a regra mais geral, o enfileiramento por prioridade, em que
se atribui uma prioridade a cada indivíduo na fila e aquele que �ver maior prioridade será
atendido primeiro, não importando a ordem de chegada na fila.
Nesta Unidade de Aprendizagem, você estudará as regras de funcionamento de uma fila
padrão. Além disso, aprenderá a desenvolver filas usando a linguagem de programação
Python. Por fim, verá as diversas aplicações que uma fila pode ter.
Bons estudos.
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 2/30
Ao �nal desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Iden�ficar as regras de funcionamento de uma fila FIFO: first in, first out.
Desenvolver funções e procedimentos para uma fila.
Demonstrar as diferentes aplicações de uma fila.
DESAFIO
Um exemplo de processo que pode ser implementado com o uso de filas são as matrículas
em cursos ou universidades. Quando se busca fazer uma matrícula, é necessário esperar
que as pessoas que chegaram antes sejam atendidas, na ordem em que chegaram.
A equipe de desenvolvimento do sistema, da qual você faz parte, iden�ficou que duas filas
estavam sendo criadas para o mesmo fim, uma para cada totem, por isso a confusão, já que
senhas iguais eram geradas para ambas as filas. A tarefa de resolver o problema dos
números gerados em duplicidade ficou sob sua responsabilidade.
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/194436793_1582915527cab8cfd755b86ca1fee8022e76ef544fea02f5e3.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 3/30
Assim, você precisa desenvolver um código em Python que exiba apenas os números
gerados em duplicidade em ambas as filas. Como seria o código desenvolvido?
INFOGRÁFICO
As filas prioritárias são u�lizadas em casos nos quais a ordem natural do modelo FIFO
precisa ser alterada, levando elementos que não seriam os primeiros a serem atendidos ou
levados para o início da fila. No co�diano é bem comum encontrar esse modelo de fila, no
qual os elementos recebem prioridade no atendimento, de acordo com um �po
predeterminado.
Neste Infográfico, você vai entender melhor o processo de filas prioritárias, além de ver
como a lei brasileira influencia no desenvolvimento de sistemas que implementam filas de
atendimento.
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 4/30
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/1715749375_1582915527cc29db4c8a11906d1bccf68af39ab771364dfc2a.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 5/30
CONTEÚDO DO LIVRO
As filas são elementos comuns no co�diano. Elas estão diretamente ligadas à espera para
receber determinado serviço, e geralmente cada pessoa é atendida de acordo com a sua
posição na fila, sendo o primeiro da fila o primeiro a ser atendido, como em uma fila do
caixa em um supermercado ou em um caixa de banco.
Em se tratando de computação, as estruturas de fila são adequadas para problemas que
exigem que os dados sejam processados na ordem em que foram recebidos. Os exemplos
comuns incluem simulações de computador, agendamento de processos da CPU e
gerenciamento de impressoras compar�lhadas. Ao u�lizar uma impressora compar�lhada
se faz uso das filas de impressão, nas quais muitas pessoas podem querer usar a impressora,
mas apenas um item pode ser impresso por vez. Em vez de fazer as pessoas esperarem até
que a impressora não esteja sendo usada para imprimir seus documentos, vários
documentos podem ser enviados ao mesmo tempo. Quando um documento chega, ele é
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/1715749375_1582915527cc29db4c8a11906d1bccf68af39ab771364dfc2a.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 6/30
adicionado ao final da fila de impressão. À medida que a impressora fica disponível, o
documento na frente da fila é removido e impresso.
No capítulo Implementação de filas em Python, da obra Estrutura de dados, base teórica
desta Unidade de Aprendizagem, você vai entender o funcionamento de filas, aprendendo
como os elementos são manipulados dentro dessa estrutura, a par�r do uso de funções e
comandos na linguagem de programação Python, versão 3. Além disso, vai ver as diversas
aplicações em que filas podem ser empregadas. Por fim, vai aprender a iden�ficar
problemas que podem ser resolvidos com o uso de filas, tornando, dessa maneira, os seus
projetos de so�ware muito mais eficientes e dinâmicos.
Boa leitura.
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 7/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 8/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 9/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 10/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 11/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 12/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 13/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 14/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 15/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 16/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 17/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 18/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/1563788019/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 20/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 21/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 22/30
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 23/30
DICA DO PROFESSOR
Com a existência de diferentes �pos de estruturas, escolher a mais adequada ao seu
projeto é primordial. Um dos usos mais conhecidos das estruturas de fila são as filas de
impressão, nas quais os arquivos que serão impressos na impressora conectada ao seu
computador, ou a uma rede, são organizados em uma fila para que possam ser impressos
um a um.
Nesta Dica do Professor, você vai ver mais detalhes sobre a fila de impressão. Ela é a
estrutura mais recomendada para esse �po de aplicação devido ao seu princípio FIFO, pois
os arquivos são impressos à medida que vão chegando na fila.
Conteúdo disponível na plataforma virtual de ensino. Con�ra!
EXERCÍCIOS
1) Existem diferentes �pos de estruturas que são u�lizadas para organizar dados. Qual
dessas estruturas é representada como uma lista linear de elementos nos quais a exclusão
pode ser feita de uma extremidade (início) e a inserção pode ocorrer apenas na outra
extremidade (fim)?
a) Fila.
b) Pilha.
c) Árvores.
d) Lista vinculada/ligada.
e) Array.
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 24/30
2) Existe um conjunto de operações básicas que podem ser realizadas sobre filas; algumas
operações permitem manipulação, enquanto outras apenas retornam consultas sobre as
filas. Entre as operações a seguir, qual delas retorna um valor booleano?
a) tamanho().
b) primeiro().
c) estaVazia().
d) fila().
e) enfilera(item).
3) Em cada estrutura de dados é u�lizado um processo para inserção e remoção de
elementos. Todo �po de estrutura, seja fila, pilha ou árvore, tem funções que auxiliam
nesse processo. Sendo assim, se os elementos A, B, C e D forem colocados nesta ordem
em uma fila e excluídos um de cada vez, em que ordem serão removidos?
a) DCBA.
b) DCAB.
c) ABCD.
d) ABDC.
e) ACDB.
4) Python disponibiliza diversas bibliotecas que facilitam a manipulação de diferentes
estruturas de dados. U�lizando a biblioteca Python queue, com a seguinte
implementação: import queue
f = queue.Queue()
f.put("abacate")
f.put("amora")
f.put("abacaxi")
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 25/30
f.put_nowait("uva")
f.get()
f.get_nowait()
f.put("pêra")
f.put("amora")
print(list(f.queue))Qual seria a fila resultante?
a) [].
b) ['abacate', 'amora', 'abacaxi', 'uva', 'pêra', 'amora'].
c) ['abacate'].
d) ['abacate', 'amora', 'abacaxi', 'uva'].
e) ['abacaxi', 'uva', 'pêra', 'amora'].
5) Há diversas situações no co�diano que poderiam ser representadas por diferentes
estruturas de dados, como filas, pilhas, árvores, deques, entre outras. Entre as situações
reportadas a seguir, qual melhor se encaixa com a estrutura do �po fila?
a) Uma torre com pratos sobrepostos em uma mesa.
b) A visualização dos resultados com cada par�da de uma Copa do Mundo, do início
ao final.
c) Documentos esperando para serem impressos em uma impressora.
d) Pessoas aguardando para entrar em um ônibus de turismo, de acordo com a
prioridade.
e) Relação de filmes indicados ao Oscar.
NA PRÁTICA
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 26/30
Filas são estruturas de dados que possibilitam a modelagem de processos do mundo real,
como o alinhamento de pessoas, uma atrás da outra, aguardando sua vez para atendimento.
Uma loja de departamento teve a sua clientela ampliada em até 50%, o que gerou um
gargalo em seus caixas para pagamento, levando muitas vezes à desistência da compra por
parte de alguns clientes que não queriam ou não poderiam esperar na fila.
Procurando solucionar este problema, a loja resolveu inves�r em um sistema de
atendimento de fila mais eficiente, de maneira que pudesse atender seus clientes de forma
mais rápida.
Veja a seguir:
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 27/30
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/1380834735_158291552771be539ce4d23240552b2ab899dda34bc4c9da97.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 28/30
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/1380834735_158291552771be539ce4d23240552b2ab899dda34bc4c9da97.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 29/30
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do
professor:
Filas: estruturas de dados
Neste canal do YouTube, você vai conferir diversos assuntos de computação, principalmente
programação. Vai ver, também, vídeos sobre Python, os quais mostram um pouco mais
sobra as estruturas de dados do �po Fila.
Conteúdo disponível na plataforma virtual de ensino. Con�ra!
http://lrq.sagah.com.br/uasdinamicas/uploads/layouts/1380834735_158291552771be539ce4d23240552b2ab899dda34bc4c9da97.png
09/04/2020 https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880
https://sagahcm.sagah.com.br/sagahcm/sagah_ua_dinamica/impressao_ua/15637880 30/30
Estruturas de dados
Este livro aborda a estrutura de dados de uma maneira simples e direta. O Capítulo 4.2
mostra os principais conceitos relacionados a filas implementadas por con�guidade �sica e
encadeamento.
Conteúdo disponível na plataforma virtual de ensino. Con�ra!
Aplica�vo móvel para controle de filas de vendedores para atendimento ao público
Confira este trabalho, o qual apresenta o desenvolvimento de um aplica�vo que u�liza filas
para organizar a ordem de atendimento entre os vendedores de uma loja.
Conteúdo disponível na plataforma virtual de ensino. Con�ra!
Dimensionamento da capacidade de atendimento em uma empresa do ramo de
mineração em Itabira: uma aplicação do sistema de filas
Neste ar�go, você vai conferir um modelo computacional que avalia o processo de
carregamento de caminhões em uma pedreira por meio da Teoria de Filas.
Conteúdo disponível na plataforma virtual de ensino. Con�ra!