Universidade Estadual da Paraíba — UEPB
Centro de Ciências e Tecnologia — CCT
Departamento de Computação — DC
Estrutura de Dados
Introdução à disciplina
Estrutura de Dados
Janderson Jason Barbosa Aguiar
Campina Grande – PB
2022
Sobre a disciplina
• Relembrando a estrutura curricular...
EDA — Janderson J. B. Aguiar 2
Sobre a disciplina
• Relembrando a estrutura curricular...
– 1º ao 3º semestre:
• Algoritmos
• Linguagem de Programação I
• Linguagem de Programação II
• ...
– 4º semestre:
• Laboratório de Programação
• Estrutura de Dados
• ...
EDA — Janderson J. B. Aguiar 3
Sobre a disciplina
• Estrutura de Dados (EDA)
– Carga Horária:
• 60h
– Outras informações:
• https://classroom.google.com
EDA — Janderson J. B. Aguiar 4
Sobre a disciplina
• Referência básica:
– Introduction to Algorithms
• CORMEN et al. (2002)
– Versão em português: Algoritmos: Teoria e Prática
EDA — Janderson J. B. Aguiar 5
Sobre a disciplina
• Algumas possíveis dúvidas iniciais...
– É importante?
– Vamos usar alguma linguagem de
programação?
• Vamos aprender uma nova linguagem?
– É “rasgada”?
• Dá para “pagar” com 10?
• Dá para pelo menos “pagar” com 5?
– Vai ser só prova para avaliar o desempenho?
– ... ?
EDA — Janderson J. B. Aguiar 6
Resultados em períodos anteriores...
• Turmas noturnas
Aprovação Abandono Reprovação
100%
4%
16%
21% 22%
30%
26%
80%
28%
60% 45%
42%
33%
40%
70%
50%
20% 37% 39% 38%
0%
2015.2 2016.1 2016.2 2017.1 2017.2
EDA — Janderson J. B. Aguiar 7
Resultados em períodos anteriores...
• Turmas noturnas
2015.2 2016.1 2016.2 2017.1 2017.2
Menor média final * 3,6 2,7 2,0 1,9 1,3
Maior média final 9,7 8,3 9,1 10,3 11,0
% aprovação ** 16/23 10/27 12/31 09/24 09/18
% abandono *** 06/23 09/27 14/31 10/24 05/18
% reprovação **** 01/23 08/27 05/31 05/24 04/18
* Não considerando os alunos reprovados por falta
** Nº de aprovados / nº de matriculados
*** Nº de reprovados por falta / nº de matriculados
**** Nº de reprovados por nota / nº de matriculados
EDA — Janderson J. B. Aguiar 8
Sobre a disciplina
• Avaliação I1
I2
– Provas P1
I3
• P1, P2, P3
– Implementações
I4
• I1, I2, I3, I4
P2
P3
Unidade 1 Unidade 2
– E reposição...
• No máximo, 1 prova por unidade
EDA — Janderson J. B. Aguiar 9
Sobre a disciplina
• Avaliação*
– 1ª Unidade (Parcial1)
• 08% Implementação1 (Análise de Busca Linear e Busca Binária)
• 17% Implementação2 (Análise de Algoritmos de Ordenação)
• 55% Prova1 (Análise de Algoritmos; Ordenação)
• 20% Implementação3 (Pilha e Fila)
– 2ª Unidade (Parcial2)
• 38% Prova2 (Pilha e Fila; Listas Encadeadas; BST; Tabelas Hash)
• 25% Implementação4 (Listas Encadeadas; BST; Tabelas Hash; Heapsort)
• 37% Prova3 (Heap Binária; Árvores AVL, PV e B)
*podem ocorrer alterações durante o período
EDA — Janderson J. B. Aguiar 10
O que é um algoritmo?
• Sequência finita de instruções que
permitem a realização de uma tarefa
• Procedimento computacional bem definido
que toma algum valor (ou conjunto de
valores) como entrada e produz algum
valor (ou conjunto de valores) como saída
• ...
EDA — Janderson J. B. Aguiar 11
Como descrever algoritmos?
• Linguagem natural
– Informal, ambígua, prolixa, falta de estrutura
• Linguagem de programação
– Às vezes a sintaxe atrapalha
• Pseudocódigo
– Conciso, estruturado, adequado para a
tradução em linguagem de programação
EDA — Janderson J. B. Aguiar 12
Avaliação de Algoritmos
• Corretude
– Um algoritmo é correto se para toda entrada
ele produz a saída esperada
• Simplicidade
– Um algoritmo é simples se for fácil: entender,
implementar e manter
• Eficiência
– Qual a relação entre o algoritmo e o consumo
de recursos?
EDA — Janderson J. B. Aguiar 13
Eficiência
• Vamos discutir sobre este trecho de
código:
while not isInOrder(deck):
shuffle(deck)
EDA — Janderson J. B. Aguiar 14
Eficiência
• Como?
– Abordagem Experimental
• Implementar os algoritmos
• Realizar um experimento controlado
– Ex.: Análise estatística dos resultados
• Fatores que influenciam
– Ex.: Hardware e Tamanho da entrada
long antes = System.nanoTime();
//trecho de código a ser analisado
long depois = System.nanoTime();
long tempo = depois - antes;
EDA — Janderson J. B. Aguiar 15
Eficiência
• Como?
– Método Analítico
• Simples
• Independente de plataforma
• Pode ser generalizado para um espectro maior de
entrada
• Análise de pseudocódigo, sem a necessidade de
execução
EDA — Janderson J. B. Aguiar 16
E as Estruturas de Dados?
• Estrutura de Dados: meio para
armazenar e organizar dados, facilitando
seu acesso e modificações
– Nenhuma estrutura de dados funciona bem
para todos os propósitos
– É importante conhecer os pontos fortes e as
limitações de várias delas
• Antes de estudá-las, é importante saber analisá-las!
EDA — Janderson J. B. Aguiar 17
Slides da disciplina
baseados no material dos
professores João Arthur
e Adalberto Cajueiro
(DSC/CEEI/UFCG)
EDA — Janderson J. B. Aguiar 18