Anda di halaman 1dari 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, 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 "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
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