int
tipo
int a
variável
int a[]
vetor
if
condicional
for
loop
&
endereço
int *a
ponteiro
struct
registro
void soma(int a, int b)
função
malloc
alocação de
memória
1. Ir até o armário
2. Abrir o armário
3. Pegar o pão
4. Colocar o pão na mesa
5. ...
algoritmo
Tutoria AEDSI
Pablo Silva
Pedidos E NÃO REGRAS!
• Não usem o celular
• Tentem chegar no horário
• Perguntem e respondam
Conceitos
iniciais
O que é um algoritmo?
Sequência de passos para
resolver um problema.
Tipos de dados?
&23423sdf 5
&s2sdf3sdf “sdf”
&89423sdf ‘c’
.
.
.
int
char[]
char
Tipos de dados?
&23423sdf 5
&s2sdf3sdf “sdf”
&89423sdf ‘c’
.
.
.
&89423s6f 1.5
int
char[]
char
char
Métodos para
interpretar o
conteúdo da
memória do
computador.
Tipos de dados?
Programadores não se importam muito com
a representação no hardware, mas sim por
exemplo, com o conceito matemático que
um inteiro tem e quais operações ele
suporta!
TAD?
Biblioteca
• Livros
• Mesas
• Estantes
Estrutura
de dados
TAD?
Antes do TAD, o programador
não tinha uma maneira de juntar
as coisas para formar novos
tipos. Ele tinha que supor!!!
É uma abstração da realidade.
TAD?
Quando não pensamos nas estruturas
de dados da maneira como elas são
implementadas, mas sim das
operações que elas suportam, então
temos um Tipo Abstrato de Dados.
TAD?
Biblioteca
• Emprestar livros
• Achar livros
• Receber livros
Operações
TAD?
Mas e o modelo matemático?
v (conjunto de valores), o (operações)
Par (v,o)
Ex.: Naturais e reais
Análise da
complexidade de
algoritmos
Qual o é custo?
Qual o é custo?
Tempo de execução
Memória gasta
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
5 9 8 4 6 2 1 12 55 7
1
Análise de algoritmos
1 2 4 6 7 9 10 12 55 80
1
Análise de algoritmos
1 2 4 6 7 9 10 12 55 80
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
80 55 12 10 9 8 7 5 2 1
1
Análise de algoritmos
Análise de algoritmos
Busca linear ou sequencial
Melhor caso: O elemento está na primeira posição.
Pior caso: O elemento está na última posição.
Caso médio: O elemento está perto do meio.
1 2 3 4 6 8 9 12 55 70
1
Análise de algoritmos
1 2 4 6 7
1
Análise de algoritmos
9 10 12 55 80
1 2 4
1
Análise de algoritmos
6 7
1 2
1
Análise de algoritmos
4
2
1
Análise de algoritmos
1
2
1
Análise de algoritmos
1
Análise de algoritmos
Busca binária
• Melhor caso: Quando o elemento procurado
está exatamente no meio do vetor.
• Pior caso: Quando o elemento está na primeira
posição do vetor ou quando está na última.
• Caso médio: Elemento próximo do meio.
Existem muitos
Algoritmos de busca!!!
A* B*
Ternary
Uniform
Best-First
Análise de algoritmos
Existem vários algoritmos que
resolvem o mesmo problema, uns são
piores, outros melhores. Mas sempre
depende da entrada de dados do seu
problema!!!
Próxima aula
Análise da complexidade dos
algoritmos
Resolver Exercícios
Perguntas?

Conceitos básicos de AEDS