Você está na página 1de 6

ATIVIDADE PRATICA ESTRUTURA DE DADOS I – 11/04/2023 - FILA

RESOLVER AS QUESTÕES E POSTAR AS RESPOSTAS NO PRORIO SIGAA.

PODE SER FEITO EM EQUIPE


Alunos: Adriel Silva Duarte, Adrio Santos dos Santos, Alan de Sousa Fernandes,
João Paulo;

1. Escreva um programa que simule o controle de uma pista de decolagem de aviões


em um aeroporto. Neste programa, o usuário deve ser capaz de realizar as
seguintes tarefas:
a) Listar o número de aviões aguardando na fila de decolagem;
b) Autorizar a decolagem do primeiro avião da fila;
c) Adicionar um avião à fila de espera;
d) Listar todos os aviões na fila de espera;
e) Listar as características do primeiro avião da fila.

Considere que os aviões possuem um nome e um número inteiro como identificador.


Adicione outras características conforme achar necessário.

class Aviao:

def _init_(self, identificador, nome, combustivel):

self.identificador = identificador

self.nome = nome

self.combustivel = combustivel

def _str_(self):

return f"Avião {self.identificador} ({self.nome}) - Combustível:


{self.combustivel}"

class PistaDecolagem:

def _init_(self):

self.fila = []

def adicionar_aviao(self, aviao):


self.fila.append(aviao)

def listar_numero_avioes_fila(self):

print(f"Número de aviões aguardando na fila de decolagem: {len(self.fila)}")

def autorizar_decolagem(self):

if not self.fila:

print("Não há aviões na fila de espera.")

else:

aviao_decolagem = self.fila.pop(0)

print(f"Avião autorizado para decolagem: {aviao_decolagem}")

def listar_avioes_fila(self):

if not self.fila:

print("Não há aviões na fila de espera.")

else:

print("Aviões na fila de espera:")

for aviao in self.fila:

print(aviao)

def listar_primeiro_aviao_fila(self):

if not self.fila:

print("Não há aviões na fila de espera.")

else:

aviao_primeiro = self.fila[0]
print(f"Primeiro avião na fila de espera: {aviao_primeiro}")

pista = PistaDecolagem()

pista.adicionar_aviao(Aviao(1, "Boeing 747", 2000))

pista.adicionar_aviao(Aviao(2, "Airbus A380", 1500))

pista.adicionar_aviao(Aviao(3, "Embraer E195", 1000))

pista.listar_numero_avioes_fila()

pista.listar_primeiro_aviao_fila()

pista.autorizar_decolagem()

pista.listar_avioes_fila()

2. Deque (ou fila de duas pontas) é uma estrutura de dados que consiste de uma lista
na qual as seguintes operações são permitidas:
(a) Empilha(A) Insere o elemento A no início do deque.
(b) Desempilha () Remove o elemento que está no início do deque.
(c) Inject(A) Insere o elemento A no final do deque.
(d) Eject () Remove o elemento que está no final do deque.
Crie uma estrutura de dados adequada e implemente as operações acima.

class Deque:
def _init_(self):
self.items = []

def empilha(self, item):


self.items.insert(0, item)

def desempilha(self):
return self.items.pop(0)

def inject(self, item):


self.items.append(item)

def eject(self):
return self.items.pop()

3. Implemente um programa em Python que registre os nomes e as pontuações de


times que estão disputando um campeonato, fazendo uma fila de prioridade, onde
a pontuação mais baixa fica com prioridade baixa e a pontuação mais alta com a
prioridade alta.

import heapq

class Time:

def _init_(self, nome, pontuacao):

self.nome = nome

self.pontuacao = pontuacao

def _lt_(self, other):

return self.pontuacao < other.pontuacao

def _str_(self):

return f"{self.nome}: {self.pontuacao}"

fila_prioridade = []

while True:

nome = input("Digite o nome do time (ou sair para encerrar): ")


if nome == "sair":

break

pontuacao = int(input("Digite a pontuação do time: "))

time = Time(nome, pontuacao)

heapq.heappush(fila_prioridade, time)

while fila_prioridade:

time = heapq.heappop(fila_prioridade)

print(time)

4. No seu sistema operacional ao abrir o “gerenciador de tarefas” você pode exibir


os processos que estão em execução, veja como isso é apresentado no Windows:

Você já parou pra pensar como é possível executar todos esses aplicativos em apenas
um processador? Isso existe graças a uma funcionalidade chamada de tempo
compartilhado (“time-shared”). Essa funcionalidade mantém uma sequência de
processos em uma fila, esperando para serem executados. Implemente uma fila para
armazenar as informações desses processos.

Seu programa deverá permitir:

a) Incluir novos processos na fila de processo;


b) Matar o processo com o maior tempo de espera;
c) Executar um processo (remover da fila)
d) Imprimir o conteúdo da lista de processos.

Você também pode gostar