Logica Algoritmo 02 Algoritmo

18,476 views

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
18,476
On SlideShare
0
From Embeds
0
Number of Embeds
48
Actions
Shares
0
Downloads
444
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Logica Algoritmo 02 Algoritmo

  1. 1. Introdução à Lógica <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul><ul><ul><li>Última atualização em 20/04/2007 </li></ul></ul>
  2. 2. Algoritmo <ul><li>A palavra algoritmo tem origem no sobrenome, Al-Khwarizmi, do matemático persa do século IX Mohamed ben Musa, cujas obras foram traduzidas no ocidente cristão no século XII, tendo uma delas recebido o nome &quot;Algorithmi de numero indorum&quot;, sobre os algoritmos usando o sistema de numeração decimal (indiano). </li></ul><ul><li>Outros autores, contudo, defendem a origem da palavra em Al-goreten (raiz - conceito que se pode aplicar aos cálculos). </li></ul><ul><li>Segundo o dicionário Aurélio, o termo algoritmo é oriundo do idioma Latim das palavras algorismos ou algorithmos, que representam o conceito de algarismo. Este termo teve influência do idioma Grego através da palavra arithmós, que representa número. </li></ul>
  3. 3. Algoritmo <ul><li>Matemática </li></ul><ul><ul><li>Descreve o processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema. </li></ul></ul><ul><li>Computação </li></ul><ul><ul><li>Descreve o conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas. </li></ul></ul><ul><ul><li>O conceito de programação está profundamente vinculado ao conceito de algoritmos. </li></ul></ul>
  4. 4. Algoritmo <ul><li>Um algoritmo poderia ser grosseiramente comparado a uma receita culinária. </li></ul><ul><li>Uma receita é um programa de atividades que deve ser respeitada e cumprida passo-a-passo. Caso um dos passos seja desconsiderado, a receita não dará certo. </li></ul><ul><li>Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. </li></ul><ul><li>Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa. </li></ul>
  5. 5. Algoritmo <ul><li>Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. </li></ul><ul><li>Algoritmo é um caminho para a solução de um problema. </li></ul><ul><ul><li>Em geral, os caminhos que levam a uma solução são muitos. </li></ul></ul>
  6. 6. Por que usar algoritmos? <ul><li>Abstração - todo o esforço é concentrado na resolução do problema e não em detalhes computacionais que podem ser acrescentados posteriormente </li></ul><ul><li>Portabilidade - uma solução algorítmica pode ser traduzida para qualquer linguagem de programação </li></ul>
  7. 7. Fases do Algoritmo
  8. 8. Processamento de Dados <ul><li>Processamento de Dados é qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado. </li></ul>
  9. 9. Fases da Programação
  10. 10. Representação de Algoritmos <ul><li>Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. </li></ul><ul><li>Algumas formas de representação de algoritmos tratam dos problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. </li></ul><ul><li>Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurescer a idéia principal, o algoritmo, dificultando seu entendimento. </li></ul>
  11. 11. Representação de Algoritmos <ul><li>Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam: </li></ul><ul><ul><li>Descrição Narrativa </li></ul></ul><ul><ul><li>Fluxograma Convencional </li></ul></ul><ul><ul><li>Diagrama de Chapin </li></ul></ul><ul><ul><li>Pseudocódigo, também conhecido como Português Estruturado ou Portugol. </li></ul></ul>
  12. 12. Descrição Narrativa <ul><li>Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. </li></ul><ul><li>Exemplo: </li></ul><ul><ul><li>Troca de um pneu furado </li></ul></ul><ul><ul><ul><li>Afrouxar ligeiramente as porcas </li></ul></ul></ul><ul><ul><ul><li>Suspender o carro </li></ul></ul></ul><ul><ul><ul><li>Retirar as porcas e o pneu </li></ul></ul></ul><ul><ul><ul><li>Colocar o pneu reserva </li></ul></ul></ul><ul><ul><ul><li>Apertar as porcas </li></ul></ul></ul><ul><ul><ul><li>Abaixar o carro </li></ul></ul></ul><ul><ul><ul><li>Dar o aperto final nas porcas </li></ul></ul></ul>
  13. 13. Descrição Narrativa <ul><li>Desvantagens: </li></ul><ul><ul><li>Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. </li></ul></ul><ul><ul><li>Por exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. </li></ul></ul><ul><ul><ul><li>Uma instrução mais precisa seria: “afrouxar a porca, girando-a de 30º no sentido anti-horário”. </li></ul></ul></ul>
  14. 14. Descrição Narrativa <ul><li>Problema: Calcular a média final dos alunos. Os alunos realizarão quatro provas: P1, P2, P3 e P4, onde: </li></ul><ul><ul><li>MF = (P1 + P2 + P3 +P4) / 4 </li></ul></ul><ul><li>Algoritmo: </li></ul><ul><ul><li>Receba a nota da prova1 </li></ul></ul><ul><ul><li>Receba a nota de prova2 </li></ul></ul><ul><ul><li>Receba a nota de prova3 </li></ul></ul><ul><ul><li>Receba a nota da prova4 </li></ul></ul><ul><ul><li>Some todas as notas e divida o resultado por 4 </li></ul></ul><ul><ul><li>Mostre o resultado da divisão </li></ul></ul>
  15. 15. Descrição Narrativa <ul><li>Algoritmo Trocar uma lâmpada queimada </li></ul><ul><li>pegar uma escada </li></ul><ul><li>posicionar a escada debaixo da lâmpada </li></ul><ul><li>buscar uma lâmpada nova </li></ul><ul><li>subir na escada </li></ul><ul><li>retirar a lâmpada queimada </li></ul><ul><li>colocar lâmpada nova </li></ul>
  16. 16. Descrição Narrativa <ul><li>O algoritmo não atingirá seu objetivo se a lâmpada nova estiver queimada. Para tal, acrescentamos um teste condicional ( estrutura seletiva ). </li></ul><ul><ul><li>pegar uma escada </li></ul></ul><ul><ul><li>posicionar a escada debaixo da lâmpada </li></ul></ul><ul><ul><li>buscar uma lâmpada nova </li></ul></ul><ul><ul><li>subir na escada </li></ul></ul><ul><ul><li>retirar a lâmpada queimada </li></ul></ul><ul><ul><li>colocar lâmpada nova </li></ul></ul><ul><ul><li>se a lâmpada nova não acender, então: </li></ul></ul><ul><ul><ul><li>retirar a lâmpada queimada </li></ul></ul></ul><ul><ul><ul><li>colocar lâmpada nova </li></ul></ul></ul><ul><ul><ul><li>se a lâmpada nova não acender, então: </li></ul></ul></ul><ul><ul><ul><ul><li>retirar a lâmpada queimada </li></ul></ul></ul></ul><ul><ul><ul><ul><li>colocar a lâmpada nova </li></ul></ul></ul></ul><ul><ul><ul><ul><li>se a lâmpada nova não acender, então: </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>retirar a lâmpada queimada </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>colocar a lâmpada nova </li></ul></ul></ul></ul></ul><ul><ul><ul><li>. . . </li></ul></ul></ul><ul><ul><li>até quando???? </li></ul></ul>
  17. 17. Descrição Narrativa <ul><li>Algoritmo Trocar uma lâmpada queimada com o uso de estruturas de repetição </li></ul><ul><li>pegar uma escada </li></ul><ul><li>posicionar a escada debaixo da lâmpada </li></ul><ul><li>buscar uma lâmpada nova </li></ul><ul><li>subir na escada </li></ul><ul><li>retirar a lâmpada queimada </li></ul><ul><li>colocar lâmpada nova </li></ul><ul><li>enquanto lâmpada nova não acender, faça: </li></ul><ul><ul><li>retirar a lâmpada queimada </li></ul></ul><ul><ul><li>colocar lâmpada nova </li></ul></ul>
  18. 18. Fluxograma <ul><li>É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações distintas. </li></ul><ul><li>Objetivo: Facilitar o entendimento das idéias contidas nos algoritmos. </li></ul>
  19. 19. Principais símbolos usados em Fluxogramas
  20. 20. Fluxograma <ul><li>Cálculo da média de um aluno: </li></ul><ul><li>– Obter as notas da primeira e da segunda prova </li></ul><ul><li>– Calcular a média aritmética entre as duas </li></ul><ul><li>– Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado </li></ul>
  21. 21. Diagrama de Chapin <ul><li>Diagrama criado por Ned Chapin a partir de trabalhos de Nassi-Shneiderman, para substituição do fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa. </li></ul><ul><li>Representa as estruturas que tem um ponto de entrada e um ponto de saída e são compostas pelas estruturas básicas de controle de seqüência, seleção e repetição. </li></ul><ul><li>Enquanto é difícil mostrar o embutimento e a recursividade com o fluxograma tradicional, torna-se mais simples mostrá-lo com o diagrama de Chapin, bem como codificá-lo futuramente em pseudocódigo. </li></ul>
  22. 22. Diagrama de Chapin
  23. 23. Pseudocódigo <ul><li>Também conhecido como português estruturado ou portugol . </li></ul><ul><li>Bastante rico em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação. </li></ul><ul><li>Representação suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. </li></ul>
  24. 24. Pseudocódigo <ul><li>Algoritmo <nome_do_algoritmo> </li></ul><ul><li><declaração_de_variáveis> </li></ul><ul><li><subalgoritmos> </li></ul><ul><li>Início </li></ul><ul><li><corpo_do_algoritmo> </li></ul><ul><li>Fim. </li></ul>
  25. 25. Pseudocódigo <ul><li>Algoritmo Media </li></ul><ul><li>Var N1, N2, Media : real </li></ul><ul><li>Início </li></ul><ul><li>Leia N1, N2 </li></ul><ul><li>Media  (N1+N2)/2 </li></ul><ul><li>Se Media >= 7 Entao </li></ul><ul><li>Escreva &quot;Aprovado&quot; </li></ul><ul><li>Senao </li></ul><ul><li>Escreva &quot;Reprovado&quot; </li></ul><ul><li>Fim. </li></ul>
  26. 26. Pseudocódigo <ul><li>Calcular a área de uma mesa retangular </li></ul><ul><li>Algoritmo AreaRetangulo </li></ul><ul><li>Var comprimento, largura, area : real </li></ul><ul><li>Início </li></ul><ul><li>leia comprimento </li></ul><ul><li>leia largura </li></ul><ul><li>area  comprimento * largura </li></ul><ul><li>imprima 'Área igual a', area </li></ul><ul><li>Fim </li></ul>
  27. 27. Pseudocódigo <ul><li>Calcular o preço de uma passagem de ônibus </li></ul><ul><li>Algoritmo PassagemOnibus </li></ul><ul><li>Var idade : inteiro </li></ul><ul><li>preco : real </li></ul><ul><li>Início </li></ul><ul><li>leia idade </li></ul><ul><li>leia preco </li></ul><ul><li>se idade < 65 então </li></ul><ul><li>imprima 'Preço é ', preco </li></ul><ul><li>senão </li></ul><ul><li>imprima 'Grátis' </li></ul><ul><li>fimse </li></ul><ul><li>Fim </li></ul>

×