You are on page 1of 27

Introdução à Lógica

Regis Pires Magalhães
regis@cefetpi.br
Última atualização em 20/04/2007

Algoritmo
• A palavra algoritmo tem origem no sobrenome, AlKhwarizmi, 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.

• 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
• 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 antihorá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 "Aprovado" Senao Escreva "Reprovado" 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

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

Pseudocódigo