introprog_cap3
TRANSCRIPT
![Page 1: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/1.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
CET/DSAS {IntroProg}CET/DSAS {IntroProg}Joel Carvalho - 29.09.2011Joel Carvalho - 29.09.2011
Capítulo 3Algoritmos
FORMAÇÃO TECNOLÓGICA
![Page 2: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/2.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Síntesei. Importânciaii. Tipos de Algoritmos
i. Ordenaçãoii.Pesquisa
iii.Recursividade
FORMAÇÃO TECNOLÓGICA
![Page 3: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/3.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
i. Importância
![Page 4: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/4.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
O que é um algoritmo?
– “Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita”. In wikipédia.
![Page 5: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/5.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
O que é um algoritmo?– Podemos comparar um algoritmo a uma receita de
culinária:– Por exemplo: Fazer um bolo de chocolate
• Pesar 100g de chocolate.• Derreter o chocolate.• Juntar 6 gemas de ovos.• Deitar 500gr de Farinha.• Mexer bem até ficar uma solução uniforme.• Deitar para a forma e levar ao forno a 300ºC.
![Page 6: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/6.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Importância
– O algoritmo não representa necessariamente um programa de computador.
– Através de um algoritmo podemos delinear as mais variadas tarefas, passíveis de serem elaboradas, quer por um computador, quer por uma pessoa, etc.
– Ajuda na compreensão real do problema.
![Page 7: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/7.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Importância na Computação
– Método de resolução de problemas, ou seja, conseguimos através dele definir a estratégia.
– Demonstra-se a viabilidade de resolução de um problema.
– Facilitar a implementação.– É uma ferramenta essencial para o Programador.
![Page 8: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/8.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Representação dos Algoritmos
– Os algoritmos podem ser representados por:• Fluxogramas.• Pseudo-código.• Linguagem Natural.
– Posteriormente os algoritmos são traduzidos em programas, numa determinada linguagem, para serem executados pelo computador.
![Page 9: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/9.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Exemplos– Fluxograma
LâmpadaFundida?
Sim
Não
Sim
LâmpadaEnroscada?
Não
![Page 10: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/10.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Exemplos– Pseudo-código para testar se um número é maior que zero e
escrever sempre o número positivo:início
ler(x);
se x >=0 então
y ← x;
senão
y ← -x;
fim se
escrever(y);
fim
![Page 11: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/11.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Características de um Algoritmo– Sequência ordenada (todos os passos podem ser
numerados).– Instruções não-ambíguas e bem definidas (cada
instrução tem que ser distinguível e passível de ser automaticamente executada).
– Realização de uma tarefa (objectivo final do algoritmo).– Tempo de execução finito (o algoritmo tem um princípio
e um fim definidos).
![Page 12: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/12.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Categorias de Operações Algorítmicas1. Operações Sequenciais
– Todas as instruções têm uma ordem pela qual são executadas.
2. Operações Condicionais– Existe uma estrutura de controlo que efectua um teste
lógico binário e selecciona a próxima instrução a ser executada.
3. Operações Iterativas– Uma instrução de controlo repete a execução de um
bloco (Conjunto de instruções).
![Page 13: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/13.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
ii.Tipos de
Algoritmos
![Page 14: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/14.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Tipos de Algoritmos– Existem várias formas de classificar os algoritmos, quanto ao
paradigma, campo de estudo, complexidade, etc. De seguida são apresentados alguns tipos de algoritmos classificados por campo de estudo.
• Algoritmos de Ordenação• Algoritmos de Pesquisa• Algoritmos de Análise Combinatória• Algoritmos de Criptografia• Algoritmos de Compressão de Dados• Etc.
![Page 15: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/15.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Algoritmos de Ordenação– Os algoritmos de ordenação são algoritmos que permitem
ordenar a informação segundo um determinado critério.– Efectuam a ordenação de um ou mais elementos.– Podem ser aplicados a diferentes tipos de dados:
• Inteiros• Strings• Etc.
– Exemplos: Bubble sort, Quick sort, Merge sort, Selection sort, etc.
![Page 16: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/16.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Exercício
– Sem se preocuparem com nomes ou definições Ordenem as seguintes listas de inteiros (de forma crescente, mais pequeno para o maior), utilizando técnicas diferentes no processo de ordenação
• 3 2 9 7• 7 9 2 3
![Page 17: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/17.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Bubble Sort– Analise e interprete o algoritmo Bubble Sort aplicado no
video abaixo (a ordenação é crescente).
![Page 18: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/18.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Bubble Sort– Em Português, ordenação em bolha ou por flutuação.– Este algoritmo consiste em realizar diversas passagens
por uma lista até que esta esteja totalmente ordenada:• Trocar o elemento actual com o seguinte, se a
condição de ordenação se verificar.• Repete-se processo até que não seja elaborada
outra troca de elementos (numa passagem completa pela lista).
![Page 19: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/19.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Bubble Sort– http://en.wikipedia.org/wiki/File:Bubble-sort-example-300px.gif
![Page 20: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/20.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Bubble Sort (Ordenação Crescente)4 8 1 0 4 > 8 Condição Falsa
4 8 1 0 8 > 1 Condição Verdadeia (trocar)
4 1 8 0 8 > 0
4 1 0 8 4 > 1
1 4 0 8 4 > 0
1 0 4 8 4 > 8 Condição Falsa
Condição Verdadeia (trocar)
Condição Verdadeia (trocar)
Condição Verdadeia (trocar)
1 0 4 8 1 > 0
0 1 4 8 1 > 4
Condição Verdadeia (trocar)
Condição Falsa
![Page 21: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/21.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Bubble Sort (Ordenação Crescente)
– Na 12ª iteração foi concluída uma passagem pela lista de valores sem que nenhuma troca tenha sido feita.
– Assim sendo a lista após 12 iterações, encontra-se ordenada por ordem crescente.
0 1 4 8 4 > 8 Condição Falsa
0 1 4 8 0 > 1
0 1 4 8 1 > 4
0 1 4 8 4 > 8
Condição Falsa
Condição Falsa
Condição Falsa (FIM)
![Page 22: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/22.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Selection Sort– Algoritmo de ordenação baseado na
passagem do menor valor da lista para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim sucessivamente com os (n-1) elementos restantes, até os últimos dois elementos.
![Page 23: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/23.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Insertion Sort– Algortimo de Ordenação simples que a cada repetição
remove o elemento seleccionado da lista e insere-o de novo mas na posição correcta, tendo em conta apenas parte da lista que já foi ordenada
– A escolha do elemento a remover é arbitrária desde que seja feita na parte da lista não ordenada.
![Page 24: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/24.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort– Analise e interprete o algoritmo Quick Sort aplicado no
video abaixo (a ordenação é crescente).
![Page 25: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/25.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort– Trata-se de um algoritmo de ordenação que tem por
premissa: “Dividir para conquistar”.– Cria por Tony Hoare (Sir Charles Antony Richard Hoare)
em 1960.– É um dos mais famosos algoritmos de ordenação.– Tem como base o uso da recursividade, embora
também exista a versão iterativa.
![Page 26: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/26.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort (Algoritmo)– Algoritmo (ordenação crescente):
• Escolhe-se um elemento da lista, denominado pivô;• É reordenada a lista de forma a que todos os
elementos:– Inferiores ao pivô fiquem à esquerda do mesmo.– Superiores ao pivô fiquem à direita do mesmo.
• No fim deste processo o pivô estará na sua posição final e haverá duas sub-listas não ordenadas;
![Page 27: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/27.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort (Algoritmo)– Continuação...
• A operação de separação é denominada por partição;
• Recursivamente ordenemos as sub-lista dos elementos menores e a sub-lista dos elementos maiores;
• O algoritmo acaba quando atingirmos listas de tamanho zero ou um. Pois estão sempre ordenadas.
•
![Page 28: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/28.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort
– Que garantias existem de que o processo termina?• A cada iteração pelo menos um elemento é colocado
na sua posição final.• Temos a garantia que esse elemento não irá ser
alterado. • Com o processo de partição estamos sempre a criar
um novo processo de tamanho n/2.
![Page 29: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/29.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort– http://en.wikipedia.org/wiki/File:Quicksort-example.gif
![Page 30: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/30.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort
![Page 31: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/31.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Quick Sort (Dicas)– Escolher o elemento mais à esquerda ou mais à direita
como pivot não se revela a solução mais eficiente para listas de grande dimensão.
– Neste caso o ideal é identificar sempre o elemento que divide a lista e sub-listas em duas partes iguais.
– Esta situação só é relevante para listas de grande dimensão, em termos de implementação é mais simples escolher sempre o mesmo elemento (o mais à esquerda, direita, etc.
![Page 32: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/32.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Algoritmos de Pesquisa– Os algoritmos de pesquisa são algoritmos que permitem ao
utilizador, ter acesso à informação independentemente da forma como esta se encontra armazenada.
– Efectuam a pesquisa de um ou mais elementos.– Podem ser aplicados a diferentes tipos de dados:
• Inteiros• Strings• Etc.
– Exemplos: Pesquisa Sequencial, Pesquisa Binária
![Page 33: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/33.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Sequencial– A procura é feita sequencialmente num conjunto de
elementos não ordenados.– A ideia base é:
• Percorrer o vector, comparando os elementos que o constituem, com o elemento que desejamos procurar.
• Começamos pelo primeiro elemento, depois segundo, etc. até encontrarmos o elemento que desejamos.
• Encontrado esse elemento devolvemos a posição.• Caso não tenha sido encontrado devolvemos uma
mensagem, por exemplo: “Elemento não encontrado”.
![Page 34: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/34.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Sequencial (exemplo)– Pesquisar o número 7 nas listas seguintes:
5 = 7 Condição Falsa
3 = 7
2 = 7
7 = 7
Condição Falsa
Condição Falsa
Condição Verdadeia (Retorno 3)
5 = 7
3 = 7
Condição Falsa
Condição Falsa (Retorno “Elemento Não Encontrado”).
5 3 2 7 8 4
5 3
![Page 35: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/35.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Binária
– É bastante simples de utilizar mas só pode ser aplicado a listas ordenadas.
– É mais eficiente que a pesquisa sequencial mas mais limitativo uma vez que a lista tem de estar previamente ordenada.
– A ideia base desta pesquisa é:• Ir dividindo o intervalo de busca ao meio, de forma a
torna-lo mais pequeno.
![Page 36: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/36.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Binária (Algoritmo)– Primeiro tem de ser calcular a posição central:
• Vector de n elementos:– Meio = Nº de elementos / 2;
– Se o elemento na posição do meio for o desejado, termina aqui a pesquisa.
– Caso contrário, verifica-se se o elemento da pesquisa é maior ou menor que o elemento do meio.
– Se for maior continua-se para o vector superior.– Se for menor continua-se para o vector inferior.– Repete-se isto até se encontrar o elemento pretendido.
![Page 37: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/37.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
– Inicialmente– Meio = 8 / 2 = 4
Ana Bia Cid Eva Gil Ivo Lia Rui
![Page 38: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/38.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Eva = Rui
Condição Falsa
![Page 39: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/39.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Eva > Rui
Condição Falsa
![Page 40: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/40.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Ivo = Rui
Condição Falsa
![Page 41: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/41.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Ivo > Rui
Condição Falsa
![Page 42: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/42.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Lia = Rui
Condição Falsa
![Page 43: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/43.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Inf. M. Sup.
Lia > Rui
Condição Falsa
![Page 44: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/44.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ana Bia Cid Eva Gil Ivo Lia Rui
Pesquisa Binária (Exemplo)– Encontrar a palavra “Rui” no seguinte vector:
Rui = Rui
Condição Verdadeira
![Page 45: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/45.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Pesquisa Sequencial Vs Binária– Sequencial:
• Elementos podem não estar ordenados.• Mais lento.• Requer um maior número de iterações.
– Binária:• Elementos têm de estar ordenados.• Mais rápido.• Requer um menor número de iterações.
![Page 46: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/46.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Tabelas de Hash– Estruturas de armazenamento de informação, para
grandes quantidades de informação e com uma facilidade extrema de implementação.
– A outra ideia fundamental corresponde à facilidade de procura inerente às tabelas de Hash. Através delas a informação torna-se bastante fácil de encontrar.
– Estas estruturas já estão definidas em muitas linguagens de programação pelo que a sua utilização varia consoante cada linguagem.
![Page 47: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/47.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Tabelas de Hash
– As tabelas de Hash servem para• Armazenar:
– A informação de um modo simples e intuitivo.– Eficiente para grandes quantidades de dados.
• Pesquisar:– Tornam a pesquisa muito mais eficiente.– A procura é rápida.
![Page 48: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/48.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Tabelas de Hash– Como funcionam?
• Separação da informação por relevância (criação de uma função).
• Armazenam essa informação com base na função anterior.
• É gerada uma chave para a posição onde essa mesma informação irá ser guardada.
• Por fim a pesquisa é feita através dessa mesma chave.
![Page 49: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/49.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Componentes das Tabelas de Hash– Função de Hash:
• Mapea entre o valor das chaves e as entradas na tabela.• Fornece o local onde se insere/procura o elemento pretendido.• Se nessa posição houver mais do que um elemento aplica-se
uma pesquisa sequencial ao vector.– Tabela de Hash:
• Armazena a informação.• Permite o acesso à informação.• O armazenamento pode ser um único vector, ou uma estrutura
mais complexa.
![Page 50: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/50.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Vantagens das Tabelas de Hash– Simplicidade
• É muito fácil de definir um algoritmo para implementar.– Escalabilidade
• Possibilidade de adequar o tamanho da tabela ao número de elementos a armazenar.
– Eficiência• Para grande número de elementos, por exemplo um problema
com 100'000 dados e uma tabela de 1'000 entradas, temos uma divisão do espaço de procura de 100'000/1'000 = 100.
– Aplicabilidade• Funcionamento imediato para arquivos.
![Page 51: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/51.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Desvantagens das Tabelas de Hash– Importância da função de Hash
• Uma boa função de hash tem de dividir o universo de dados de uma maneira equitativa.
• Uma má escolha origina um maior número de colisões.
– Ineficiência Parcial• Quanto maior o número de elementos de uma
entrada da tabela, maior o tempo de pesquisa aos últimos elementos dessa entrada.
![Page 52: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/52.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
iii. Recursividade
![Page 53: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/53.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Recursividade– Mecanismo que permite que uma função se chame a
ela própria.– Técnica de programação que serve como base para
muitos algoritmos.• Por exemplo: Programação Dinâmica.
– É baseado na ideia de “Dividir para conquistar”:• Dividir o problema inicial em subproblemas• Em que o processo de resolução é o mesmo.
![Page 54: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/54.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Como funciona a Recursividade– 1º Verifica-se se o problema pode ser dividido em
subproblemas idênticos.– 2º Definem-se os critérios de paragem do problema,
que são eles:• Caso(s) base – corresponde ao caso onde o
problema tem sempre de chegar.• Erro – corresponde a uma situação onde o problema
nunca poderá chegar.
![Page 55: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/55.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Recursividade (Exemplo)
– Factorial: 5!=5*4!; 4!=4*3!; … por sua vez 5!=5*4*3*2*1– 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880,...– Função Factorial
• n!=n*(n-1)!• Critérios de Paragem:
– 0!=1– (-n)! = “Erro”
![Page 56: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/56.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Recursividade (Pseudo-Código)– Função Factorial (i)
Inicio Função//Condição de errose i ≤ 0 então
escreve(“Erro”);retorna -1;
fim se
![Page 57: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/57.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Recursividade (Pseudo-Código)– Função Factorial (i)
//Caso Basese i = 1 então
retorna 1;fim seretorna Factorial(i-1)*i;
Fim Função
![Page 58: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/58.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Referências– http://pt.wikipedia.org/wiki/Algoritmo– http://pt.wikipedia.org/wiki/Pesquisa_binária– http://pt.wikipedia.org/wiki/Algoritmo_de_ordenação– http://pt.wikipedia.org/wiki/Bubble_sort– http://pt.wikipedia.org/wiki/Quick_sort– http://www.claymath.org/millennium/index.php– http://pt.wikipedia.org/wiki/Tabela_hash– http://pt.wikipedia.org/wiki/Recursividade_(ciência_da_computação)– http://pt.wikipedia.org/wiki/Complexidade_computacional
![Page 59: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/59.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Perguntas?
{Obrigado e Bom Trabalho!}
![Page 60: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/60.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Perguntas– O que é um algoritmo e qual a sua importância?– Indique os três modos de representação de um algoritmo?– Diga quantos tipos de Pesquisa conhece? E indique em duas
linhas o funcionamento geral das mesmas.– O quick sort e o bubble sort pertencem a que grupo de algoritmos?– Descreva o modo de funcionamento de um algoritmo de ordenação
à sua escolha.– Indique quais as vantagens e desvantagens da pesquisa
sequencial e binária.– Defina Recursividade e indique os dois critérios de paragem.
![Page 61: IntroProg_Cap3](https://reader034.vdocument.in/reader034/viewer/2022051819/54e9c53c4a795922038b4de6/html5/thumbnails/61.jpg)
Mo d
.AFT
EBI .P
- 052
.rev0
2
CURSO: CET/DPMDISCIPLINA: Intro. à ProgramaçãoANO LECTIVO: 2011/2013
Ipsa scientia potestas Ipsa scientia potestas estest
{O saber é poder}
FORMAÇÃO TECNOLÓGICA