2. Introdução à Lógica
¨ Comumente associada apenas à matemática
¤ Não percebemos a sua área de atuação
¤ Relação com diversas ciências
¨ Pode ser considerada a “correção do pensamento”
¤ Preocupa-se em determinar quais operações são válidas ou não
¨ Como filosofia, procura entender o motivo de pensarmos
assim e não de outra maneira
¨ Como arte ou técnica, ensina a usar as leis do pensamento
corretamente
3. Introdução à Lógica
¨ Pode ser definida como:
¤ “Arte de pensar bem”
¤ “Ciência das forma do pensamento”
¨ A forma mais complexa de pensar é o raciocínio
¤ A lógica estuda a “correção do raciocínio”
¨ Tem em vista a “ordem da razão
¤ Podemos pensar de maneira desordenada
¨ A lógica ensina a pôr “ordem no pensamento”
4. Introdução à Lógica
¨ Exemplos
¤ Todo mamífero é um animal
¤ Todo cavalo é um mamífero
¤ Logo, todo cavalo é um animal
¤ Brasil é um país do planeta Terra
¤ Todos os brasileiros são do Brasil
¤ Portanto, todo brasileiro é terráqueo
5. Introdução à Lógica
¨ Argumentos compostos de duas premissas e uma
conclusão
¤ As relações podem ser válidas ou inválidas
¨ Um dos objetivos da lógica é permitir verificar a
validade dos argumentos
¨ Lógica ou ilógica nos acompanha sempre que
pensamos
6. Introdução à Lógica
¨ Quando falamos ou escrevemos precisamos pensar
¤ Logo, utilizamos a lógica
¨ A lógica é muito importante em nossa vida
¤ Na teoria e na prática
¤ Ao falar, pensar, escrever ou agir corretamente
¤ Precisamos “ordenar o pensamento”
¨ Exemplo:
¤ A gaveta está fechada
¤ A caneta está dentro da gaveta
¤ É preciso primeiro abrir a gaveta para pegar a caneta
7. Lógica de Programação
¨ Uso correto das leis do pensamento, ordem da razão e
processos de raciocínio e simbolização formais na
programação de computadores
¨ Resolver com qualidade os problemas que se deseja
solucionar
¤ Soluções logicamente coerentes e válidas
¨ O raciocínio é abstrato, algo intangível
¤ O ser humano o expressa pela fala ou escrita
¤ Baseia-se em um determinado idioma
¤ Idiomas possuem uma série de padrões (gramática)
8. Lógica de Programação
¨ É possível expressar o mesmo raciocínio em diversos idiomas
¤ Continuará representando o mesmo raciocínio
¤ Usará apenas outra convenção
¨ Algo similar ocorre com a lógica de programação
¤ É criada por uma mente treinada
¤ Pode ser aplicada em qualquer uma das diversas linguagens de
programação
¤ Cada linguagem possui suas diversidades
¨ Usamos os ALGORITMOS para fugir destas diferenças
¤ Representa mais fielmente o raciocínio da lógica de programação
9. Algoritmos
¨ Conceito central da programação e da ciência da
computação
¨ Sequência finita de passos que visam atingir um
objetivo bem definido
¨ Para especificar uma sequência de passos é necessário
utilizar ordem
¤ Pensar em ordem
¤ Utilizamos lógica
10. Algoritmos
¨ São comuns no nosso dia-a-dia
¨ Pode ser aplicado a qualquer situação que exija a
descrição da solução
¨ A receita de um bolo é um bom exemplo
¤ Ingredientes e a sequência de passos para o preparo
(ações)
¤ Se cumpridos fielmente teremos o bolo conforme desejado
inicialmente (objetivo bem definido)
11. Algoritmos
¨ Outros exemplos de algoritmos em nosso cotidiano
¤ Instruções de uso
¤ Manual de instalação
¤ Receitas de cozinha
¤ Partituras musicais
¨ Quando perguntamos o caminho de um local, temos
um algoritmos cujo seguimento nos leva ao objetivo
12. Algoritmos
¨ Um algoritmo precisa ter ações claras e precisas
¨ Parte de um estado inicial e após um período de tempo
finito produz um estado final
¤ Resultado previsível e bem definido
¨ Fixa um padrão de comportamento a ser seguido
¤ Tem como resultado final a solução de um problema
¤ Sempre que executado (sob as mesmas condições) deve
produzir o mesmo resultado
13. Algoritmos
¨ Normas para execução de ações
¤ Evento que ocorre em período de tempo finito
¤ Possui efeito bem definido e intencionado
¤ Exemplos:
n “Caminhar até a próxima esquina”
n “Colocar um livro em cima da mesa”
¨ Programar é, basicamente, construir algoritmos
14. Algoritmos
¨ Construir algoritmos eficientes exige considerar
algumas regras no momento da construção
¤ Definir ações simples e sem ambiguidade
¤ Organizar as ações em uma ordem lógica
¤ Estabelecer as ações dentro de uma sequência finita
de passos
Ação
1
Ação
2
Ação
3
15. Algoritmos
¨ Exemplo de algoritmo (em português) para a troca
de uma lâmpada
¤ Pegar uma escada;
¤ Posicionar a escada embaixo da lâmpada;
¤ Buscar uma lâmpada nova;
¤ Subir na escada;
¤ Retirar a lâmpada queimada;
¤ Instalar a lâmpada nova.
16. Algoritmos
¨ Involuntariamente definimos uma sequência de
ações
¤ Naturalmente seguido por qualquer pessoa (padrão
de comportamento)
¨ A sequenciação rege o fluxo de execução do
algoritmo
¤ Determina a primeira ação a ser executada e qual a
ação seguinte
¤ Sequência linear (de cima para baixo)
17. Algoritmos
¨ Exercício: Descrevam os passos necessários para a troca de um
pneu
1. Desligar o carro
2. Pegar a chave de roda e o macaco
3. Pegar o estepe
4. Erguer o carro com o macaco
5. Retirar os 4 parafusos do pneu furado
6. Remover o pneu furado
7. Colocar o estepe
8. Apertar os 4 parafusos
9. Baixar o carro com o macaco
10. Guardar as ferramentas
18. Algoritmos
¨ No algoritmo da lâmpada tínhamos um objetivo
bem definido
¤ Trocar a lâmpada
¨ E se a lâmpada não estivesse queimada?
¤ A execução das ações levaria a troca da lâmpada
¤ Independente de estar queimada ou não
¤ Essa situação não foi prevista na construção do
algoritmo
19. Algoritmos
¨ Podemos efetuar um teste e verificar se a lâmpada
está queimada ou não
¤ Pegar uma escada;
¤ Posicionar a escada embaixo da lâmpada;
¤ Buscar uma lâmpada nova;
¤ Acionar o interruptor;
¤ Se a lâmpada não acender, então
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova.
20. Algoritmos
¨ Ligamos ações à condição “lâmpada não acender”
¤ Condição verdadeira = lâmpada queimada
n Efetuamos a troca
¤ Condição falsa = lâmpada funcionando
n Nenhuma ação de troca é executada
¨ Incluímos uma condição para indicar as ações que
serão executadas
¤ Conforme resultado da condição (verdadeiro ou falso)
21. Algoritmos
¨ Algoritmo correto mas pode ser melhorado
¤ A escada e a lâmpada nova são buscados mesmo sem saber se o
uso será necessário
¨ Uma solução ideal para este caso seria:
¤ Acionar o interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n Buscar uma lâmpada nova;
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova.
22. Algoritmos
¨ Existem muitas formas de resolver um problema
¤ Cada pessoa pensa e age de maneira diferente
¤ Casa indivíduo possui uma heurística própria
¨ Para o mesmo problema de troca da lâmpada
podemos ter diversas soluções corretas
¨ Bom senso e prática indicarão a solução mais
adequada
¤ Menor esforço e maior objetividade produza o resultado
desejado
23. Algoritmos
¨ E se a lâmpada nova não funcionar?
¨ O objetivo especificado não será alcançado
¨ Podemos ajustar o algoritmo
¤ Trocar a lâmpada até que ela funcione corretamente
¤ Vejamos uma solução a seguir
24. ¤ Acionar o interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n Buscar uma lâmpada nova;
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
n Se a lâmpada não acender, então
n Retirar a lâmpada queimada;
n Instalar outra lâmpada nova;
n Se a lâmpada não acender, então
n Retirar a lâmpada queimada;
n Instalar outra lâmpada nova;
n ...
Até quando?
25. Algoritmos
¨ Não é possível definir a quantidade de testes necessária
¨ Precisamos indicar até quando o teste será feito
¤ Neste caso, quando uma que funcione for instalada
¨ É possível alterar o fluxo sequencial de execução
¨ Ao executar “Colocar outra lâmpada nova” voltamos a
executar o teste “Se a lâmpada não acender”
¤ Ações executadas várias vezes
¤ Sem a necessidade de reescrevê-las
26. Algoritmos
¨ Expressamos a repetição sem repetir o texto que
representa a ação
¨ Também é preciso determinar um limite para a
operação
¤ Criar uma condição de parada
¤ No exemplo, deve parar a repetição se a lâmpada
nova acender
27. Algoritmos
¨ Uma solução seria:
¤ Enquanto a lâmpada não acender, faça
n Retirar a lâmpada queimada;
n Instalar outra lâmpada nova;
¨ A condição “lâmpada não acender” estabelece um
fluxo repetitivo
¤ Será finalizado assim que a condição for FALSA
¤ O número de repetições indefinido porém finito
28. Algoritmos
¨ Uma nova solução seria:
¤ Acionar o interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n Buscar uma lâmpada nova;
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
n Enquanto a lâmpada não acender, faça
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
29. Algoritmos
¨ Até agora trocamos a lâmpada de apenas um
soquete
¨ O que faríamos se fosse preciso testar 10 soquetes?
¨ A solução mais óbvia seria repetir o algoritmo de
uma única lâmpada para os 10 soquetes existentes
¨ Veja exemplo a seguir
30. ¤ Acionar o primeiro interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n Buscar uma lâmpada nova;
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
n Enquanto a lâmpada não acender, faça
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
¤ Acionar o segundo interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n ...
¤ ...
¤ Acionar o décimo interruptor;
¤ Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n ...
31. Algoritmos
¨ Temos um algoritmo com 10 repetições do algoritmo de
troca de um soquete
¨ O conjunto de operações a ser executada é o mesmo
¤ O que muda é o soquete
¨ Podemos alterar o fluxo sequencial da execução
¤ Executar o conjunto de ações de um único soquete
¤ Quantas vezes forem necessárias
¨ Vejamos uma possível solução
32. ¤ Ir até o interruptor do primeiro soquete;
¤ Enquanto a quantidade de soquetes testados for menor que
dez, faça;
n Acionar o interruptor;
n Se a lâmpada não acender, então
n Pegar uma escada;
n Posicionar a escada embaixo da lâmpada;
n Buscar uma lâmpada nova;
n Subir na escada;
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
n Enquanto a lâmpada não acender, faça
n Retirar a lâmpada queimada;
n Instalar a lâmpada nova;
n Ir até interruptor do próximo soquete;
33. Algoritmos
¨ Inicialmente tínhamos um pequeno conjunto de ações
¤ Deveriam ser executadas passo a passo
¤ Uma após a outra
¤ Ordem sequencial de execução (estrutura sequencial)
¨ Vimos que nem todas as ações previstas precisariam
ser executadas
¤ Um determinado conjunto de ações poderia ser evitado
¤ Conforme resultado de determinada condição
¤ Criamos uma estrutura condicional
34. Algoritmos
¨ Foi preciso repetir um trecho do algoritmo
¤ Repetir enquanto uma condição era verdadeira
¨ Agimos de forma semelhante quando foi preciso
trocar dez lâmpadas
¨ Criamos uma estrutura de repetição
35. Algoritmos
¨ Qualquer pessoa seria capaz de resolver o
problema na prática
¤ Inclusive imprevistos que viessem a surgir
¨ Programas de computador tradicionais não tem
conhecimento prévio e nem adquirem experiência
¤ Devemos determinar todas as ações a serem
executadas em detalhes
¤ Sequência finita de passos que garantam a solução do
problema
36. Algoritmos
¨ Até o momento representamos os algoritmos em forma
textual
¤ Usando português coloquial
¨ Formas gráficas são mais fiéis ao raciocínio original
¤ Convenções de desenhos no lugar de um grande número de
palavras
¨ Conheceremos duas formas de representar os algoritmos
graficamente
¤ Fluxograma tradicional
¤ Diagrama de Chapin
37.
38.
39. Algoritmos
¨ Cada técnica possui vantagens e desvantagens
¨ Ambas permitem um grande nível de clareza quanto ao
fluxo de execução
¨ O algoritmo em forma textual deve ser mais fácil de
compreender
¤ Nas formas gráficas é necessário conhecer suas convenções
¤ São simples mas não são naturais
¤ Estamos condicionados a nos expressar por palavras
40. Algoritmos
¨ Sempre é mais trabalhoso fazer um desenho do que
escrever um texto
¨ O problema aumenta quando é necessário alterar ou
corrigir o desenho
¨ Esses pontos podem desencorajar o uso de representações
gráfica
¤ E, de maneira errada, a própria construção de algoritmos
¨ Portanto, usaremos o método textual
¤ É menos claro mas é natural e fácil de usar
41. Algoritmos
¨ Usaremos o português para representar
textualmente os algoritmos
¨ Usaremos um conjunto de regras para restringir e
estruturar o uso nos algoritmos
¤ Facilitar a codificação dos algoritmos em uma
linguagem de programação
¤ Faremos essa codificação em C++
42. Exercícios de Fixação
1. Três senhoras (Dona Branca, Dona Rosa e Dona
Violeta) passeavam pelo parque, quando Dona
Rosa disse:
¤ Não é curioso? Estamos usando vestidos de cores
branca, rosa e violeta, embora nenhuma de nós esteja
usando um vestido de cor igual ao seu próprio nome.
¤ Uma simples coincidência - respondeu a senhora com
vestido violeta.
¤ Qual a cor do vestido de cada senhora?
43. Exercícios de Fixação
2. Um homem precisa atravessar um rio com um barco que
possui capacidade apenas para carregar ele mesmo e
mais uma de suas três cargas, que são: um lobo, um bode
e um maço de alfafa. O que o homem deve fazer para
conseguir atravessar o rio sem perder suas cargas?
¤ Não podem ficar sozinhos do mesmo lado
n Lobo e bode
n Bode e alfafa
¤ Escreva um algoritmo mostrando a resposta, ou seja, indicar
todas as ações necessárias para efetuar uma travessia segura
44. Exercícios de Fixação
3. Elabore um algoritmo que mova três discos de uma Torre
de Hanói, que consiste em três hastes (a-b-c), uma das
quais serve de suporte para três discos de tamanhos
diferentes (1-2-3), os menores sobre os maiores. Pode-se
mover um disco de cada vez para qualquer haste,
contanto que nunca seja colocado um disco maior sobre um
menor. O objetivo é transferir os três discos para outra
haste.
45. Exercícios de Fixação
4. Três jesuítas e três canibais precisam atravessar
um rio; para tal, dispõem de um barco com
capacidade para duas pessoas. Por medidas de
segurança não se permite que em alguma
margem a quantidade de jesuítas seja inferior à
de canibais. Qual a sequência de passos que
permitiria a travessia com segurança?
46. Exercícios de Fixação
5. No torneio de atletismo, Barnabé, Gumercindo e
Teodoro participam das provas de 100 metros rasos,
salto em distância e arremesso de dardo. Cada um
deles conseguiu um primeiro lugar, um segundo e um
terceiro. Descubra o que cada um conquistou, sabendo
que:
¤ Gumercindo venceu Barnabé no salto de distância;
¤ Teodoro chegou atrás de Gumercindo no arremesso de
dardo;
¤ Barnabé não chegou em primeiro nos 100 metros rasos.
47. Exercícios de Fixação
6. João tem três barris. No barril A, que está vazio,
cabem 8 litros. No barril B, 5 litros e no barril C, 3
litros ambos estão cheios. Que deve ele fazer
para deixar os barris A e B com 4 litros cada e o
C vazio?
48. Exercícios de Fixação
7. Considere que uma calculadora comum, de quatro
operações, está com as teclas de divisão e
multiplicação inoperantes. Escreva algoritmos que
resolvam as expressões matemáticas a seguir usando
apenas a operação de adição e de subtração.
¤ 12 x 4
¤ 23 x 11
¤ 10 / 2
¤ 175 / 7
¤ 28
49. Exercícios de Fixação
8. Aprimore o exercício de troca de pneu para
considerar o seguinte conjunto de situações:
¤ Trocar o pneu traseiro esquerdo;
¤ Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu
reserva está em condições de uso;
¤ Verificar se existe algum pneu furado; se houver, verificar o
pneu reserva e, então, trocar o pneu correto.
¤ Para cada algoritmo faça um refinamento do anterior,
introduzindo novas ações e alterando o fluxo de execução
de forma compatível com as situações apresentadas.