Lógica de Programação
Germano Marcos
Email: [email protected]
Lógica


Lógica é uma parte da filosofia que estuda o
fundamento, a estrutura e as expressões humanas
do conhecimento.
Lógica de programação é a técnica de encadear
pensamentos para atingir
determinado objetivo.
Lógica
Exemplos de ordenação do raciocínio:
Todo mamífero é um animal.
• Todo homem é mamífero.
Portanto, todo homem é um animal.
•
•
Pernambuco é um estado do Brasil
Quem nasce em Pernambuco é pernambucano
Portanto, todos os pernambucanos são brasileiros.
•
•
•
Lógica
Vamos pensar em novos exemplos:
?
??
???
?????
??????
?????????
????????????
Lógica
•
•
•



Todo mamífero é um animal.
Todo homem é mamífero.
Portanto, todo homem é um animal.
premissa
premissa
conclusão
SILOGISMO
Argumento composto por duas premissas e uma conclusão
Estabelece uma relação (válida ou não)
São estudos do Cálculo Sentencial ou Lógica Proposicional
Silogismo

Silogismo Válido
Ex:
Pernambuco é um estado do Brasil
Tiago reside em Pernambuco
Logo, Tiago reside no Brasil

Silogismo Inválido
Ex:
Existem biscoitos feitos de água e sal.
O mar é feito de água e sal.
Logo, o mar é um biscoitão.
Lógica de Programação
•
Um pensamento pode ser representado em
vários idiomas, embora sempre expresse a
mesma idéia, o mesmo raciocínio.
•
A idéia é concebida. Em seguida
racionalizada, ordenada, e formalizada
através da representação em uma certa
linguagem de programação, como C, Java,
PHP, Ruby...
Lógica de Programação
•
Entretanto, cada linguagem de programação, assim
como os idiomas da linguagem natural (linguagem
falada e escrita, Português, Inglês, Espanho,
Francês), tem suas especificidades.
•
Para que possamos representar formalmente um
raciocínio, sem nos preocuparmos com um
linguagem de programação específica, usamos os
ALGORITMOS.
Algoritmo

O que é um Algoritmo ?
é formalmente uma seqüência finita de passos que levam a
execução de uma tarefa. Podemos pensar em algoritmo
como uma receita, uma seqüência de instruções que dão
cabo de uma meta específica. Estas tarefas não podem ser
redundantes nem subjetivas na sua definição, devem ser
claras e precisas.

É um conjunto de passos, sequênciais, pré definidos e não
ambíguos.
Algoritmo
•
E como precisamos detalhar essa sequência
de ações/passos, então é necessário pensar
com ordem.
•
Quer dizer: usar a Lógica!
Algoritmo
•
No dia a dia usamos algoritmos, mas os
conhecemos como receitas.
•
Ao fazer um bolo precisamos seguir uma
receita.
•
Exercício: Vamos pensar numa receita de
bolo ou para tomar um banho.
Resposta: Algoritmo 1
Situação Problema => Fazer um Bolo
Dados de entrada => ingredientes (ovos, trigo,açúcar, fermento etc.)
Processamento:

Unte tabuleiro com manteiga;

Misture fermento,trigo,ovos,leite;

Mexa a massa;

Coloque a massa no tabuleiro;

Ligue o forno;

Coloque tabuleiro no forno;

Aguarde até o bolo assar;

Desligue o forno;

Tire o bolo do forno;
Saida de dados => Bolo Pronto
S
O
L
U
Ç
Ã
O
Resposta: Algoritmo 2
Situação Problema => Tomar Banho;
Dados de entrada => Pessoa suja;
Processamento:
1.
2.
3.
4.
5.
6.
7.
Tirar a roupa;
Ir para debaixo do chuveiro;
Abrir o registro;
Ensaboar-se;
Passar shampoo nos cabelos;
Enxaguar todo o corpo;
Fechar o registro;
Dados de saída => Pessoa Limpa:
S
O
L
U
Ç
Ã
O
Algoritmo

Observação:
Existem algumas diferenças entre o nosso algoritmo e aquele
utilizado pelo computador ?
SIM
Nosso

Português

Pseudocódigos
Computador

Inglês
Linhas de Códigos reais
e robustas

Algoritmo
•
•
Exemplo Clássico: Algoritmo para a troca de
uma lâmpada utilizando o português
coloquial.
Embora essas atividades pareçam óbvias,
normalmente as realizamos
inconscientemente para alcançar os nossos
objetivos.
Algoritmo da Lâmpada
V. 1
•
•
•
•
•
•
Pegar uma escada
Pegar uma lâmpada nova
Posicionar a escada abaixo da lâmpada a
ser trocada
Subir na escada
Retirar a lâmpada velha
Colocar a lâmpada nova
Algoritmo da Lâmpada
•



A sequenciação:
É uma forma de reger o fluxo das ações a
serem executadas;
A ordem é importante;
No exemplo da troca da lâmpada a
sequenciação é linear;
Algoritmo da Lâmpada
•
•
•
•
E se a lâmpada não estiver queimada?
De acordo com o algoritmo que desenvolvemos a
troca seria feita independentemente de a lâmpada
estar ou não queimada!
Essa possibilidade não foi prevista.
Podemos verificar se a lâmpada acende antes de
buscar a escada e a lâmpada.
Algoritmo da Lâmpada
•
Para solucionar a possibilidade de a
lâmpada não estar queimada podemos
refinar um pouco mais o nosso algoritmo
anterior.
•
Como?
•
Efetuando um teste. Vamos lá!
Algoritmo da Lâmpada
V. 2
•
•
•
•
•
•
•
•
•
Acionar o interruptor;
Se a lâmpada não acender, então:
Pegar uma escada;
Pegar uma lâmpada nova;
Posicionar a escada abaixo da lâmpada a ser
trocada;
Subir na escada;
Retirar a lâmpada velha;
Colocar a lâmpada nova;
Algoritmo da Lâmpada
•
•
Note que agora estabelecemos uma
condição ao nosso algoritmo:
Se essa condição for verdadeira (???)
efetuaremos a troca da lâmpada, seguindo
os próximos passos.
Algoritmo da Lâmpada
•
Se a condição for falsa (???) então os
passos relativos à troca da lâmpada não
serão executados.
•
Quer dizer, a lâmpada, que está
funcionando, não será trocada.
Algoritmo da Lâmpada
•
•
Essa condição de teste que estabelecemos
é o chamado Teste de Seleção.
Dada uma condição, então as ações a
serem executadas dependerão da avaliação
dessa condição (verdadeira ou falsa).
Atividades

Elaborar um Silogismo Válido e um Inválido;

Elaborar um Algoritmo para fazer um bolo ou
para tomar um banho;

Elaborar um Algoritmo para trocar um pneu
furado.
Lógica de Programação

Lógica de programação é a técnica de encadear
pensamentos para atingir
determinado objetivo.
•
Por que estamos estudando Lógica de Programação?
•
R: para aprendermos a construir algoritmos coerentes e
válidos.
Algoritmo da Lâmpada
V. 2
•
•
•
•
•
•
•
•
•
Acionar o interruptor;
Se a lâmpada não acender, então:
Pegar uma escada;
Pegar uma lâmpada nova;
Posicionar a escada abaixo da lâmpada a ser
trocada;
Subir na escada;
Retirar a lâmpada velha;
Colocar a lâmpada nova;
Algoritmo da Lâmpada
•
O algoritmo v.2 parece ser adequado, mas, e no
caso de a lâmpada nova estiver defeituosa?
•
Podemos melhorar o nosso algoritmo ao ponto de
ter que trocar a lâmpada, quantas vezes for
necessário, até que funcione.
•
Refinando...
Algoritmo da Lâmpada
Acionar o interruptor;
•
Se a lâmpada não acender, então:
•
Pegar uma escada;
•
Pegar uma lâmpada nova;
Posicionar a escada abaixo da lâmpada a ser trocada;
•
Subir na escada;
•
Retirar a lâmpada velha;
•
Colocar a lâmpada nova;
•
V. 3
•
•
•
•
•
•
•
•
•
•
•
Se a lâmpada não acender, então:
Retirar a lâmpada queimada;
Colocar outra lâmpada nova;
Se a lâmpada não acender, então:
Retirar a lâmpada queimada;
Colocar outra lâmpada nova;
Se a lâmpada não acender, então:
Retirar a lâmpada queimada;
Colocar outra lâmpada nova;
Se a lâmpada não acender, então:
•
. . . até quando???
Algoritmo da Lâmpada
•
Notemos que o algoritmo v.3 não especifica
até quando o teste da lâmpada será feito.
•
Refinando ainda mais o algoritmo v.3,
porém, agora teremos que lidar com o
problema descrito logo a cima.
Algoritmo da Lâmpada
O trecho:
• Enquanto a lâmpada não acender, faça:
• Retirar a lâmpada queimada;
• Colocar uma lâmpada nova;
Condição de Parada
Algoritmo da Lâmpada
v.4
•
•
•
•
•
•
•
•
•
•
•
Acionar o interruptor;
Se a lâmpada não acender, então:
Pegar uma escada;
Pegar uma lâmpada nova;
Posicionar a escada abaixo da lâmpada a ser trocada;
Subir na escada;
Retirar a lâmpada velha;
Colocar a lâmpada nova;
Enquanto a lâmpada não acender, faça:
Retirar a lâmpada queimada;
Colocar uma lâmpada nova;
Algoritmo da Lâmpada
•
Notemos que, até o momento, definimos um
algoritmo para a troca de apenas uma lâmpada (na
verdade, o conjunto: lâmpada, soquete, interruptor),
testando esse conjunto e trocando tantas lâmpadas
sejam necessárias até que o conjunto funcione.
•
E se precisássemos trocar várias lâmpadas??
Por exemplo 10...
Algoritmo da Lâmpada
V.5
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Ir até o interruptor do primeiro soquete;
Enquanto a quantidade de soquetes testados for igual dez, faça:
Acionar o interruptor
Se a lâmpada não acender, então
Pegar uma escada
Pegar uma lâmpada nova
Posicionar a escada abaixo da lâmpada a ser trocada
Subir na escada
Retirar a lâmpada velha
Colocar a lâmpada nova
Enquanto a lâmpada não acender, faça:
Retirar a lâmpada queimada;
Colocar uma lâmpada nova;
Ir até o interruptor do próximo soquete;
Algoritmo da Lâmpada
V.5
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Estrutura de repetição
Ir até o interruptor do primeiro soquete;
Enquando a quantidade de soquetes testados for igual a dez, faça:
Acionar o interruptor
Teste de seleção
Se a lâmpada não acender, então
Pegar uma escada
Pegar uma lâmpada nova
Posicionar a escada abaixo da lâmpada a ser trocada
Subir na escada
Retirar a lâmpada velha
Colocar a lâmpada nova
Enquanto a lâmpada não acender, faça:
Estrutura de parada
Retirar a lâmpada queimada;
Colocar uma lâmpada nova;
Ir até o interruptor do próximo soquete;
Algoritmos
•
Qualquer pessoa pode resolver o problema
de trocar a lâmpada do seu modo.
Algoritmos
•
•
Entretanto, o computador tradicional não tem
conhecimento prévio nem adquire
experiências, por isso devemos determinar
detalhadamente as ações que desejamos
que ele execute.
Como?
Algoritmos
•
Prevendo possíveis obstáculos e a forma de
transpô-los = descrever uma sequência finita
de ações que garantam a solução do
problema.
Algoritmos
Algoritmos
Formas de Representação

Textualmente:

Graficamente:
•
Mais fácil de entender, pois
usa a nossa linguagem
natural;
Passível de erros, por conta
de que as vezes não
usamos palavras
adequadas
Menos trabalhoso
•
Mais fiel ao raciocínio
original
Substitui algumas palavras
por desenhos
Mais difícil de enteder (??)
Mais trabalhoso
•
•
•
•
•
Algoritmos Gráficos
• Fluxograma Tradicional
Estruturas
de Seleção e de
Repetição
Ação
Início
• Diagrama de Chapin
Ação
Bloco de ações
1a Ação
2a Ação
...
n-ésima Ação
V
F
1a Ação
2a Ação
...
n-ésima Ação
Algoritmos Gráficos
Fluxograma
Início
Leia B1, B2
Calcule
M
verdadeira
(B1 + B2) / 2
Média >= 6
Aluno aprovado
Falsa
Aluno reprovado
Fim
Algoritmos Gráficos
Diagrama de Chapin
Exercício
Produzir um algoritmo (contendo um teste de
seleção) textual.
Este exercício pode ser feito individualmente ou
em dupla.
ATENÇÃO!!
Não façam algoritmos pequenos;
Entregar ainda nesta aula (assim q for solicitado).
Algoritmos
Formas de Representação

Textualmente:

Graficamente:
•
Mais fácil de entender, pois
usa a nossa linguagem
natural;
Passível de erros, por conta
de que as vezes não
usamos palavras
adequadas
Menos trabalhoso
•
Mais fiel ao raciocínio
original
Substitui algumas palavras
por desenhos
Mais difícil de enteder (??)
Mais trabalhoso
•
•
•
•
•
Algoritmos Gráficos
• Fluxograma Tradicional
Estruturas
de Seleção e de
Repetição
Ação
Início
• Diagrama de Chapin
Ação
Bloco de ações
1a Ação
2a Ação
...
n-ésima Ação
V
F
1a Ação
2a Ação
...
n-ésima Ação
Algoritmos Gráficos
Fluxograma
Início
Leia B1, B2
Calcule
M
verdadeira
(B1 + B2) / 2
Média >= 6
Aluno aprovado
Falsa
Aluno reprovado
Fim
Algoritmos Gráficos
Diagrama de Chapin
Exercício
Implementar o algoritmo feito no exercício anterior
e transforma-lo em um fluxograma.
Este exercício pode ser feito individualmente ou
em dupla.
ATENÇÃO!!
Não façam algoritmos pequenos;
Entregar ainda nesta aula (assim q for solicitado).
Respondendo o exercício
Algoritmo para escovar os dentes
1. início;
2. pegar a escova;
3. pegar a pasta;
4. verificar se tem água;
5. - - - - se tiver água, faça;
6. - - - - - - - - - - - tirar a tampa da pasta;
7. - - - - - - - - - - - colocar a pasta na escova;
8. - - - - - - - - - - - fechar a pasta;
9. - - - - - - - - - - - escovar os dentes;
10. - - - - - - - - - - - abrir a torneira;
11. - - - - - - - - - - - enxaguar a boca;
12. - - - - - - - - - - - lavar a escova;
13. - - - - - - - - - - - fechar a torneira;
14. - - - - Fim se;
15. guardar a escova;
16. guardar a pasta;
17. Fim.
Finalizando nosso silogismo
Premissa
Todo ser humano é um ser vivo
Premissa
Você é um ser humano
Conclusão
Logo você é um ser vivo
O
r
Termos
Classificação
Termo específico = Você
Válido
ou
Inválido
Termo médio = Ser humano
Termo mais abrangente = Ser vivo
g
a
n
i
z
a
ç
ã
o
Finalizando nosso algoritmo
1. início;
2. pegar a escova;
3. pegar a pasta;
4. verificar se tem água;
5. - - - - se tiver água, faça;
6. - - - - - - - - - - - tirar a tampa da pasta;
7. - - - - - - - - - - - colocar a pasta na escova;
8. - - - - - - - - - - - fechar a pasta;
9. - - - - - - - - - - - escovar os dentes;
10. - - - - - - - - - - - abrir a torneira;
11. - - - - - - - - - - - enxaguar a boca;
12. - - - - - - - - - - - lavar a escova;
13. - - - - - - - - - - - fechar a torneira;
14. - - - - Fim se;
15. guardar a escova;
16. guardar a pasta;
17. Fim.
Bloco VERDADE
Download

Lógica de Programação