Buscar

Aula 6 - Revisão AV1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CCT0608 ALGORITMOS AVANÇADOS
Aula 6: Revisão AV1
Prof. Dr. Roney L. de S. Santos
RONEY.LIRASALE@professores.estacio.br
DEFINIÇÕES IMPORTANTES
2
• Vetores
• Matrizes
• Ponteiros
• Registros (Struct)
• Funções
DEFINIÇÕES IMPORTANTES
3
• Vetores
– Arranjo cuja capacidade pode variar dinamicamente.
– Se o espaço reservado for totalmente ocupado e espaço adicional for
necessário, este será alocado automaticamente
• o programador não precisa se preocupar com a capacidade de armazenamento ou
com a ocupação até o momento
• Matrizes
• Ponteiros
• Registros (Struct)
• Funções
DEFINIÇÕES IMPORTANTES
4
• Vetores
• Matrizes
– Coleção de elementos de mesmo tipo acessíveis com um único nome e
armazenados contiguamente na memória.
– A individualização de cada elemento de um vetor é feita através do uso
de índices.
– Os vetores são matrizes de uma só dimensão.
• Ponteiros
• Registros (Struct)
• Funções
DEFINIÇÕES IMPORTANTES
5
• Vetores
• Matrizes
• Ponteiros
– O programador é responsável por operar explicitamente com os
endereços das variáveis
• Registros (Struct)
• Funções
DEFINIÇÕES IMPORTANTES
6
• Vetores
• Matrizes
• Ponteiros
• Registros (Struct)
– Permite agrupar dados de diferentes tipos numa mesma estrutura
• Ao contrário de matrizes que possuem elementos de um mesmo tipo
• Funções
DEFINIÇÕES IMPORTANTES
7
• Vetores
• Matrizes
• Ponteiros
• Registros (Struct)
• Funções
– Ideia básica : é encapsular um código que poderá ser
invocado/chamado por qualquer outro trecho do programa
– Implementada em alguma linguagem de programação
ALGORITMOS
8
ALGORITMOS
9
• Projetar algoritmos corretos
– Geram a solução esperada
• Eficientes
– Executam em tempo e espaço aceitáveis para problemas complexos
• Um algoritmo resolve um problema quando, para qualquer
entrada, produz uma resposta correta
– Se forem concedidos tempos e memória suficientes para sua execução
ALGORITMOS
10
• O fato de um algoritmo resolver (teoricamente) um problema
não significa que seja aceitável na prática
• Recursos de espaço e tempo requeridos têm grande importância
em casos práticos
• Às vezes, o algoritmo mais imediato está longe de ser razoável
em termos de eficiência
– Conseguem dar um exemplo?
ANÁLISE DE COMPLEXIDADE
11
• Principais medidas de complexidade:
– Tempo
– Espaço
– Relação a velocidade e a quantidade de memória
• Formas de medir a complexidade: empírica
– Podemos pensar em medir experimentalmente a quantidade de trabalho
(tempo ou memória) requerida por um algoritmo executado em um
computador específico.
ANÁLISE DE COMPLEXIDADE
12
Quantidade de trabalho para executar um algoritmo
=
DESEMPENHO DO ALGORITMO
• Complexidade pessimista fornece o pior caso
– Máximo esforço
• Tempo requerido por um algoritmo sobre uma entrada pode ser
medido pelo número de execuções de algumas operações
ANÁLISE DE COMPLEXIDADE
13
• Tempo de Execução depende:
– Da implementação computacional
• Programa, linguagem, compilador
– Do ambiente de execução
• Processador
• Sistema operacional
• Memória (real e cache)
• Barramento...
– Organização e conteúdo dos dados de entrada
ANÁLISE DE COMPLEXIDADE
14
• Deve-se identificar as operações primitivas e quantidade de
vezes que são executadas:
NOTAÇÃO ASSINTÓTICA
15
• Usada para problemas realmente grandes
– Com entradas grandes
• Preocupação com o quão rápido os limites serão atingidos
– Ordem de Crescimento de Funções
– Pior caso
ANÁLISE ASSINTÓTICA
16
• A notação O define uma cota assintótica superior a menos de
constantes
• A função quadrática g(n) = n2 cresce mais rapidamente do que
a linear f(n) 7n + 13. Dizemos que a f(n) é O(g(n))
• Dizer que um algoritmo é O(1) significa que o número de
operações primitivas executadas é limitado por uma constante
– Analogamente, uma função O(n) é limitada superiormente por uma
função linear cn
ANÁLISE ASSINTÓTICA
17
ANÁLISE ASSINTÓTICA
18
ANÁLISE ASSINTÓTICA
19
ANÁLISE ASSINTÓTICA
20
ANÁLISE ASSINTÓTICA
21
ANÁLISE ASSINTÓTICA
22
RECURSIVIDADE
23
• É uma técnica de programação na qual um método chama a si
mesmo.
• Uma função é dita recursiva quando dentro dela é feita uma ou
mais chamadas a ela mesma.
RECURSIVIDADE
24
• A ideia é dividir um problema original um subproblemas
menores de mesma natureza (divisão) e depois combinar as
soluções obtidas para gerar a solução do problema original de
tamanho maior (conquista).
• Os subproblemas são resolvidos recursivamente do mesmo modo
em função de instâncias menores, até se tornarem problemas
triviais que são resolvidos de forma direta, interrompendo a
recursão.
RECURSIVIDADE
25
• Uma definição recursiva é constituída de duas partes:
• Parte 1
– Há um ou mais casos base que dizem o que fazer em situações simples
• A resposta pode ser dada de imediato
– Garante que a recursão eventualmente possa parar.
• Parte 2
– Há um ou mais casos recursivos que são mais gerais e definem a função
em termos de uma chamada mais simples a si mesma.
RECURSIVIDADE
26
• Exemplo 1: Fatorial de um número
CASO BASE
CASO RECURSIVO
RECURSIVIDADE
27
• Exemplo 1: Fatorial de um número
RECURSIVIDADE
28
• Pilha de Execução: fat(5)
Fonte: Embarcados. Disponível em https://embarcados.com.br/recursividade/
https://embarcados.com.br/recursividade/
RECURSIVIDADE
29
• Exemplo 1: Fatorial de um número: Recursivo vs Iterativo
RECURSIVIDADE
30
• Código RECURSIVO vs Código ITERATIVO
• Tanto recursão quanto iteração usam repetição
– Iteração: comandos de repetição (for, while, do while, ...)
– Recursão: chamadas repetitivas a uma rotina
• Ambas precisam de um teste de terminação
– Iteração: quando uma expressão lógica de teste é falsa
– Recursão: quando se atinge o caso trivial
– Ambas podem entrar em loop...
• no caso da iteração se o teste nunca se tornar falso e no caso da recursão se o
problema não for reduzido de forma que convirja para o caso trivial
RECURSIVIDADE
31
• Código RECURSIVO vs Código ITERATIVO
• Gasto computacional (complexidade) da recursão é maior na
maioria das vezes!
– Vale a pena?
– É menos custoso implementar a mesma função de forma iterativa?
PRÁTICA
32
• Implemente soluções recursivas e iterativas para resolver os
problemas a seguir:
• Calcular xn, sendo n > 0
• Imprimir todos os elementos de um vetor
• Somar os elementos de uma lista de inteiros
• Transformar um número n >= 0 em binário
PRÁTICA
33
• Calcular xn, sendo n > 0
PRÁTICA
34
• Imprimir todos os elementos de um vetor
PRÁTICA
35
• Somar os elementos de uma lista de inteiros
PRÁTICA
36
• Somar os elementos de uma lista de inteiros
PRÁTICA
37
• Transformar um número n >= 0 em binário
CCT0608 ALGORITMOS AVANÇADOS
38
• Dúvidas?
• Fiquem à vontade para entrar em contato no 
RONEY.LIRASALE@professores.estacio.br
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39

Outros materiais