Introdução à Lógica Regis Pires Magalhães [email_address] Última atualização em 20/04/2007
Algoritmo 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 "Algorithmi de numero indorum", sobre os algoritmos usando o sistema de numeração decimal (indiano).  Outros autores, contudo, defendem a origem da palavra em Al-goreten (raiz - conceito que se pode aplicar aos cálculos). 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.
Algoritmo Matemática 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. Computação Descreve o conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas. O conceito de programação está profundamente vinculado ao conceito de algoritmos.
Algoritmo Um algoritmo poderia ser grosseiramente comparado a uma receita culinária.  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. 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. Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa.
Algoritmo Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema. Em geral, os caminhos que levam a uma solução são muitos.
Por que usar algoritmos?  Abstração  - todo o esforço é concentrado na resolução do problema e não em detalhes computacionais que podem ser acrescentados posteriormente Portabilidade  - uma solução algorítmica pode ser traduzida para qualquer linguagem de programação
Fases do Algoritmo
Processamento de Dados Processamento de Dados é qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.
Fases da Programação
Representação de Algoritmos Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. 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.  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.
Representação de Algoritmos Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam: Descrição Narrativa Fluxograma Convencional Diagrama de Chapin Pseudocódigo, também conhecido como Português Estruturado ou Portugol.
Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplo: Troca de um pneu furado Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas
Descrição Narrativa Desvantagens: 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.  Por exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas.  Uma instrução mais precisa seria: “afrouxar a porca, girando-a de 30º no sentido anti-horário”.
Descrição Narrativa Problema: Calcular a média final dos alunos. Os alunos realizarão quatro provas: P1, P2, P3 e P4, onde: MF = (P1 + P2 + P3 +P4) / 4 Algoritmo: Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da divisão
Descrição Narrativa Algoritmo  Trocar uma lâmpada queimada pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova
Descrição Narrativa O algoritmo não atingirá seu objetivo se a lâmpada nova estiver queimada. Para tal, acrescentamos um  teste condicional  ( estrutura seletiva ).  pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então:  retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova . . .  até quando????
Descrição Narrativa Algoritmo Trocar uma lâmpada queimada com o uso de estruturas de repetição pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova enquanto lâmpada nova não acender, faça: retirar a lâmpada queimada colocar lâmpada nova
Fluxograma É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações distintas. Objetivo:  Facilitar o entendimento das idéias contidas nos algoritmos.
Principais símbolos usados em Fluxogramas
Fluxograma Cálculo da média de um aluno: –  Obter as notas da primeira e da segunda prova –  Calcular a média aritmética entre as duas –  Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado
Diagrama de Chapin 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. 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. 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.
Diagrama de Chapin
Pseudocódigo Também conhecido como  português estruturado  ou  portugol . Bastante rico em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação. 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.
Pseudocódigo Algoritmo  <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo_do_algoritmo> Fim.
Pseudocódigo Algoritmo  Media Var  N1, N2, Media : real Início Leia  N1, N2 Media    (N1+N2)/2 Se  Media >= 7  Entao Escreva  &quot;Aprovado&quot; Senao Escreva  &quot;Reprovado&quot; Fim.
Pseudocódigo Calcular a área de uma mesa retangular Algoritmo  AreaRetangulo Var  comprimento, largura, area  : real  Início leia  comprimento leia  largura area    comprimento * largura imprima  'Área igual a', area Fim
Pseudocódigo Calcular o preço de uma passagem de ônibus Algoritmo  PassagemOnibus Var  idade  : inteiro preco  : real  Início leia  idade leia  preco se  idade < 65  então imprima  'Preço é ', preco senão imprima  'Grátis' fimse Fim

Logica Algoritmo 02 Algoritmo

  • 1.
    Introdução à LógicaRegis Pires Magalhães [email_address] Última atualização em 20/04/2007
  • 2.
    Algoritmo A palavraalgoritmo 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). Outros autores, contudo, defendem a origem da palavra em Al-goreten (raiz - conceito que se pode aplicar aos cálculos). 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.
  • 3.
    Algoritmo Matemática Descreveo 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. Computação Descreve o conjunto predeterminado e bem definido de regras e processos destinados à solução de um problema, com um número finito de etapas. O conceito de programação está profundamente vinculado ao conceito de algoritmos.
  • 4.
    Algoritmo Um algoritmopoderia ser grosseiramente comparado a uma receita culinária. 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. 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. Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa.
  • 5.
    Algoritmo Algoritmo nãoé a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é um caminho para a solução de um problema. Em geral, os caminhos que levam a uma solução são muitos.
  • 6.
    Por que usaralgoritmos? Abstração - todo o esforço é concentrado na resolução do problema e não em detalhes computacionais que podem ser acrescentados posteriormente Portabilidade - uma solução algorítmica pode ser traduzida para qualquer linguagem de programação
  • 7.
  • 8.
    Processamento de DadosProcessamento de Dados é qualquer atividade que, utilizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.
  • 9.
  • 10.
    Representação de AlgoritmosExistem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. 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. 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.
  • 11.
    Representação de AlgoritmosDentre as formas de representação de algoritmos mais conhecidas, sobressaltam: Descrição Narrativa Fluxograma Convencional Diagrama de Chapin Pseudocódigo, também conhecido como Português Estruturado ou Portugol.
  • 12.
    Descrição Narrativa Nestaforma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplo: Troca de um pneu furado Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas
  • 13.
    Descrição Narrativa Desvantagens: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. Por exemplo, a instrução “afrouxar ligeiramente as porcas” no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: “afrouxar a porca, girando-a de 30º no sentido anti-horário”.
  • 14.
    Descrição Narrativa Problema:Calcular a média final dos alunos. Os alunos realizarão quatro provas: P1, P2, P3 e P4, onde: MF = (P1 + P2 + P3 +P4) / 4 Algoritmo: Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da divisão
  • 15.
    Descrição Narrativa Algoritmo Trocar uma lâmpada queimada pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova
  • 16.
    Descrição Narrativa Oalgoritmo não atingirá seu objetivo se a lâmpada nova estiver queimada. Para tal, acrescentamos um teste condicional ( estrutura seletiva ). pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova se a lâmpada nova não acender, então: retirar a lâmpada queimada colocar a lâmpada nova . . . até quando????
  • 17.
    Descrição Narrativa AlgoritmoTrocar uma lâmpada queimada com o uso de estruturas de repetição pegar uma escada posicionar a escada debaixo da lâmpada buscar uma lâmpada nova subir na escada retirar a lâmpada queimada colocar lâmpada nova enquanto lâmpada nova não acender, faça: retirar a lâmpada queimada colocar lâmpada nova
  • 18.
    Fluxograma É umarepresentação gráfica de algoritmos onde formas geométricas diferentes implicam ações distintas. Objetivo: Facilitar o entendimento das idéias contidas nos algoritmos.
  • 19.
  • 20.
    Fluxograma Cálculo damédia de um aluno: – Obter as notas da primeira e da segunda prova – Calcular a média aritmética entre as duas – Se a média for maior ou igual a 7, o aluno foi aprovado, senão ele foi reprovado
  • 21.
    Diagrama de ChapinDiagrama 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. 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. 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.
  • 22.
  • 23.
    Pseudocódigo Também conhecidocomo português estruturado ou portugol . Bastante rico em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos, encontra muita aceitação. 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.
  • 24.
    Pseudocódigo Algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo_do_algoritmo> Fim.
  • 25.
    Pseudocódigo Algoritmo Media Var N1, N2, Media : real Início Leia N1, N2 Media  (N1+N2)/2 Se Media >= 7 Entao Escreva &quot;Aprovado&quot; Senao Escreva &quot;Reprovado&quot; Fim.
  • 26.
    Pseudocódigo Calcular aárea de uma mesa retangular Algoritmo AreaRetangulo Var comprimento, largura, area : real Início leia comprimento leia largura area  comprimento * largura imprima 'Área igual a', area Fim
  • 27.
    Pseudocódigo Calcular opreço de uma passagem de ônibus Algoritmo PassagemOnibus Var idade : inteiro preco : real Início leia idade leia preco se idade < 65 então imprima 'Preço é ', preco senão imprima 'Grátis' fimse Fim