Roteiro de Atividade Pratica A1-2024 - Estrutura de Dados
Roteiro de Atividade Pratica A1-2024 - Estrutura de Dados
Roteiro de Atividade Pratica A1-2024 - Estrutura de Dados
2024
ATIVIDADE PRÁTICA
ESTRUTURA DE DADOS
INTRODUÇÃO
Olá a todos.
Sejam todos muito bem-vindos!
Esta avaliação foi preparada e planejada para a disciplina de Estrutura de
Dados.
O objetivo desta atividade é fazer com que você, estudante, desenvolva os
conhecimentos teóricos aprendidos nas rotas de maneira práticas. Para o
desenvolvimento desta atividade iremos utilizar os conceitos que estudamos na
disciplina.
Ao longo desse roteiro serão passadas as orientações gerais para
realização da avaliação bem como os seus critérios de correção. Seguindo o
roteiro, estarão as práticas a serem realizadas, com explicações de como deve
ser feita e como será avaliada.
1
Roteiro de Atividade Prática de
Estrutura de Dados
SUMÁRIO
INTRODUÇÃO _____________________________________________ 1
OBJETIVO ______________________________________________________ 3
EXERCÍCIOS ____________________________________________________ 7
2
Roteiro de Atividade Prática de
Estrutura de Dados
ORIENTAÇÕES GERAIS
Esta atividade é para ser realizada com consulta e pesquisa.
OBJETIVO
Desenvolver os exercícios colocados no tópico Exercícios, ao final deste
documento.
PROGRAMAS NECESSÁRIOS
Os exercícios (que exigirem Implementação) da Atividade Prática de
Estrutura de Dados poderá ser realizado com a utilização do software
Pycharm.
ORIENTAÇÕES GERAIS
O estudante deverá entregar um ARQUIVO ÚNICO NO FORMATO PDF
no AVA no ícone Trabalhos. Caso o formato de entrega seja diferente do
formato PDF, a nota máxima do trabalho será decrescida.
Submeter o trabalho em múltiplos arquivos separados, ou em formato
diferente do imposto acima, acarretará redução de nota;
Esta atividade é para ser realizada com consulta e pesquisa. Portanto,
não basta somente estudar o material da rota de aprendizagem. Leia
também os livros bases, materiais complementares e procure seu tutor
para tirar dúvidas diretamente via Canal de Tutoria;
Cada linha de código programada (código escrito pelo estudante),
deverá ser explicada através de comentário. A falta de comentários no
código implicará em redução de nota;
3
Roteiro de Atividade Prática de
Estrutura de Dados
4
Roteiro de Atividade Prática de
Estrutura de Dados
5
Roteiro de Atividade Prática de
Estrutura de Dados
6
Roteiro de Atividade Prática de
Estrutura de Dados
Onde:
𝐷𝑒𝑠𝑐𝑜𝑛𝑡𝑜𝑠 = 𝐴𝑟𝑞𝑢𝑖𝑣𝑜 + 𝐼𝑛𝑑𝑒𝑛𝑡𝑎çã𝑜 + 𝐶𝑜𝑚𝑒𝑛𝑡á𝑟𝑖𝑜𝑠 + 𝑃𝑟𝑖𝑛𝑡𝐷𝑜𝑇𝑒𝑟𝑚𝑖𝑛𝑎𝑙
𝑁𝑜𝑡𝑎𝐴𝑡𝑢𝑎𝑙𝑖𝑧𝑎𝑑𝑎 = 𝑁𝑜𝑡𝑎𝐸𝑥𝑒𝑟𝑐í𝑐𝑖𝑜 ∗ (100% − 𝐷𝑒𝑠𝑐𝑜𝑛𝑡𝑜𝑠)
E a Nota do Trabalho é a média entre a nota dos exercícios.
EXERCÍCIOS
1. “O algoritmo de ordenação por intercalação, ou Merge Sort, usufrui da estratégia de dividir
para conquistar. O Merge Sort realiza a ordenação dividindo um conjunto de dados em
metades iguais e reorganizando essas metades. É um algoritmo que opera de maneira
recursiva, dividindo de maneira contínua o conjunto de dados até eles tornarem-se
indivisíveis.”
Abaixo temos o código da função em Python do algoritmo Merge Sort.
def mergeSort(dados):
if len(dados) > 1:
meio = len(dados)//2
esquerda = dados[:meio]
direita = dados[meio:]
mergeSort(esquerda)
mergeSort(direita)
i = j = k = 0
while i<len(esquerda) and j<len(direita):
if esquerda[i]<direita[j]:
dados[k]=esquerda[i]
i=i+1
else:
7
Roteiro de Atividade Prática de
Estrutura de Dados
dados[k]=direita[j]
j=j+1
k=k+1
while i<len(esquerda):
dados[k]=esquerda[i]
i=i+1
k=k+1
while j<len(direita):
dados[k]=direita[j]
j=j+1
k=k+1
Para chamar a função acima utilizamos o seguinte trecho de código:
dados = [54, 26, 93, 17, 77, 31, 44, 55]
mergeSort(dados)
print(dados)
Onde “dados” é o vetor de entrada da função.
Reescreva a função “mergeSort” de forma que ela realize a ordenação dos elementos do
maior para o menor elemento. Por exemplo:
Para a entrada: [54, 26, 93, 17, 77, 31, 44, 55]
A saída deve ser: [93, 77, 55, 54, 44, 31, 26, 17]
Além de reescrever a função, você estudante deve comentar todas as linhas de código,
explicando o que está sendo realizado. Não se esqueça de testar o código e anexar a print
do terminal no documento de entrega.
2. Você e seus amigos decidiram desenvolver um jogo de cartas em linguagem python, e você
ficou encarregado de desenvolver as funções: embaralhaCartas e compraCarta.
As 52 cartas do baralho estão na lista de string abaixo:
baralho = ["A-Copas","A-Paus","A-Espadas","A-Ouros",
"2-Copas","2-Paus","2-Espadas","2-Ouros",
"3-Copas","3-Paus","3-Espadas","3-Ouros",
"4-Copas","4-Paus","4-Espadas","4-Ouros",
"5-Copas","5-Paus","5-Espadas","5-Ouros",
"6-Copas","6-Paus","6-Espadas","6-Ouros",
"7-Copas","7-Paus","7-Espadas","7-Ouros",
"8-Copas","8-Paus","8-Espadas","8-Ouros",
"9-Copas","9-Paus","9-Espadas","9-Ouros",
"10-Copas","10-Paus","10-Espadas","10-Ouros",
"J-Copas","J-Paus","J-Espadas","J-Ouros",
"Q-Copas","Q-Paus","Q-Espadas","Q-Ouros",
"K-Copas","K-Paus","K-Espadas","K-Ouros"]
A função “embaralhaCartas”, deve receber a lista “baralho” e retornar uma pilha de cartas, a
qual será utilizada pela função “compraCartas”. A função “compraCartas” vai receber a pilha
de cartas e retirar a carta do topo da pilha, e imprimindo a mesma na tela.
8
Roteiro de Atividade Prática de
Estrutura de Dados
Vale lembrar que a cada vez que o código rodar, novas três cartas serão apresentadas
devido a função “embaralhaCartas”. Você estudante deve comentar todas as linhas de
código, explicando o que está sendo realizado. Não se esqueça de testar o código e anexar
a print do terminal no documento de entrega.
9
Roteiro de Atividade Prática de
Estrutura de Dados
nodo_atual = filaPacientes.head
while nodo_atual is not None:
print(f"Cartão: {nodo_atual.cor}, Senha: {nodo_atual.dado}")
nodo_atual = nodo_atual.proximo
A saída deve ser:
10
Roteiro de Atividade Prática de
Estrutura de Dados
4. Uma árvore binária, por não ser uma estrutura linear, apresenta distintas maneiras de se
percorrer por ela para visualizar, manipular ou processar os dados da árvore. Dado o código
abaixo de uma árvore binária de busca, escreva uma função chamada “folhas“, que irá
retornar um vetor contendo apenas os nós folha da arvore (nós sem filhos).
class BST:
def __init__(self, dado=None):
self.dado = dado
self.esquerda = None
self.direita = None
11
Roteiro de Atividade Prática de
Estrutura de Dados
Você estudante deve comentar todas as linhas de código desenvolvidas (função folhas
apenas), explicando o que está sendo realizado. Não se esqueça de testar o código e
anexar a print do terminal no documento de entrega. Deve-se utilizar apenas a estrutura de
BTS, a utilização de outras estruturas ou bibliotecas, acarretará redução de nota.
12