sábado, 16 de fevereiro de 2008

PDA - Aula 02: O que é Algoritmo?

* Esta obra é uma adptação do autor desse blog da disciplina de Projeto e Desenvolvimento de Algoritmo para Computação do curso de Tecnologia em Sistemas de Computacão/Cederj UFF das aulas originais cujo os autores são: Adriano Cruz e Jonas Knopman.

Revisão em 27/fev/2008 19:28
Conteúdo:

2. Introdução
  • Receita
  • Exemplo
  • Origem
  • Características
  • Dificuldades
  • Exemplo das rãs

3. Representação de Algoritmos
  • Linguagem Natural
  • Fluxograma
  • Pseudo-Linguagem
4. Técnicas de Projeto de Algoritmos
  • Técnicas de Construção
  • Reaproveitamento
5. Bibliografia


1. Objetivos
  • Apresentar o que são algoritmos.
  • Formas de representação.
  • Técnicas de criação e desenvolvimento de algoritmos.
2. Introdução

Receita
  • Um algoritmo é um conjunto finito de regras que fornece uma sequência precisa de operações para resolver um problema específico.
  • Por exemplo, uma receita é um algoritmo para resolver o problema de fazer um bolo.
  • Claro que a receita dever ser precisa, por exemplo, colocar sal à gosto não vale!
Exemplos
  • Todos nós sabemos criar e seguir algoritmos.
  • Como ir de casa até o trabalho?
  • Como fazer um bife à milanesa?
  • Como trocar o pneu do carro?
Origem
  • Segundo Donald Knuth, um conceituado pesquisador da criação e estudo de algoritmos, a palavra tem origem no nome de um matemático persa, que viveu no século IX, cujo nome era Ab Ja´far Maomé ibn Mûsâ al-Khowârizm ou Pai de Já´far, Maomé, filho de Moisés da cidade de Khowârizm.
Características
  • Finitude - algoritmos devem terminar após um número finito de passos;
  • Definição - cada passo deve ser precisamente definido;
  • Entradas - devem ter zero ou mais entradas;
  • Saídas - devem ter uma ou mais saídas;
  • Efetividade - todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado por um ser humano.
Dificuldades
  • Pode haver mais de uma solução para um problema.
  • Criação de algoritmos é um processo não automático e tem muito de arte.
  • Difícil para iniciantes saber o que o computador pode ou não fazer.
Exemplo da rã

Como fazer para que os quadros que estão com; a rã, o x e o zero que estão em quatro casas nas seguintes posiçõe,



terminem assim?



Regra para a rã e os demais quadros
  • Somente pular para a casa da frente ou de trás se ela estiver vazia.
  • Pular o quadro vizinho se for parar em uma casa vazia.
  • Este algoritmo serve para ordenar dados, e é muito utilizado em computação.
Rã movendo


Click para ver movimento!

3. Representação de algoritmos

  • Linguagem natural: algoritmos expressos diretamente em linguagem natural, como nas receitas.
  • Fluxogramas; representação gráfica.
  • Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação.
Linguagem Natural
  • Repetir 10 vezes cada um dos quatro exercícios abaixo;
.: Levantar e abaixar o braço direito;
.: Levantar e abaixar o braço esquerdo;
.: Levantar e abaixar a perna direita;
.: Levantar e abaixar a perna esquera.

Fluxogramas
  • Representação de algorítmos por meio de símbolos geométricos.
  • Cada tipo de operação é representado por um símbolo diferente.
  • Tem a vantagem de permitir o acompanhamento visual do fluxo do algoritmo.
.: Alguns símbolos de Fluxogramas



Início e fim de algorítmo



Atribuições e cáculos de valores


Decisões



Entrada de dados



Discos



Impressão de resultados



Conector na página



Conector fora da página



Entrada manual



Ligação entre símbolos


Exemplo - Um dia de sol!



Pseudo-linguagem

  • Este método será o mais empregado ao longo do nosso curso, portanto agora somente iremos mostrar alguns exemplos.
  • Este método procura misturar as facilidades da linguam natural com a precisão das linguagens de programação.
  • Não existe um padrão para esta forma de descrição.
  • A nossa pseudo-linguagem será definida ao longo do curso.
Exemplo de pseudo-linguagem
  • Calcular a área de uma mesa retangular


4. Técnicas de Projeto de Algoritmos

Técnica para Construção
  • Considere a receita a seguir
  • Filé de peixe com molho branco
.: { preparo dos peixes }
- Lave os filés e tempere com o suco de limões, sal, ...
.: { preparo do molho branco }
- Coloque em uma panela a manteiga, a farinha e o leite ...
.: { juntando os dois }
- Adicione queijo parmessão ralado e queijo gruyère. Misture e ponha sobre os filés.
  • Fim da receita de filé de peixe com...
  • Observe na receita acima técnica de divisão do problema em partes menores (preparo dos peixes, molho e o final)
  • Permite que o prato seja preparado por mais de uma pessoa e simplifica a execução.
Reaproveitamento
  • Considere a receita de alface com molho branco
  • Alface com molho branco
.: { preparo do alface }
- Derreta a manteiga. Junte alface cortada. ...
.: { preparo do molho branco }
- Coloque em uma panela a manteiga, a farinha e o leite ...
.: { juntando os dois }
- Junt suco de limão ao alface e ao molho branco ...
  • Fim da receita de alface com ...
  • Nesta receita também temos uma parte descrevendo como preparar o molho branco.
  • Se o livro de receitas tiver vários pratos com molho branco há desperdício de papel.
  • Considere agora que a página 25 do livro ensine como preparar o molho branco.
  • As duas receitas poderiam indicar que para preparar o molho branco o mestre cuca deve ler a página 25.
  • O livro fica menor.
  • Se amanhã descobrir que colocar um dente de alho melhora o sabor, somente preciso alterar a página 25 e todas as receitas ficam mais saborosas automaticamente.
  • Uma solução mais radical para reaproveitar algoritmos é usar o que outros criaram.
  • Assuma que você descobriu que no supermercado há um enlatdado de molho branco ótimo, melhor que o seu (heresia, vale somente como exemplo!).
  • Neste caso a sua receita da marca tal no supermercado (heresia novamente!)
5. Bibliografia

http://equipe.nce.ufrj.br/adriano/algoritmos/apostila/algoritmos.htm

http://www.ucb.br/programar/algoritmo/conceitosV.htm

Nenhum comentário: