Académique Documents
Professionnel Documents
Culture Documents
Programao
Professor Emannuel Diego G. de Freitas
Lgica de Programao
O desenvolvimento de um programa requer a utilizao de um raciocnio
diferenciado
No h formulas prontas onde bastam trocar variveis por valores do problema
Existem padres lgicos podem ser usados em problemas diferentes, ms no h
uma passo a passo que seja capaz de solucionar todos os problemas
possvel que no exista apenas uma maneira correta de solucionar um
determinado problema
Solucionar problemas de programao consiste em encontrar uma sequencia de
instrues do computador que o leve ao resultado esperado
Lgica de Programao
comum se utilizar a termo algoritmo para indicar uma sequncia de
instrues que resolvem um dado problema
Desenvolver esse algoritmo pode no ser uma atividade trivial
normal que alguns tenham mais facilidade que outros
normal que no primeiro contato seja difcil entender
A lgica pode ser desenvolvida como qualquer outra habilidade
Requer dedicao
Requer prtica constante
Muitas vezes requer persistncia
Algoritmos
Um algoritmo correto deve possuir trs propriedades mnimas:
Cada passo deve corresponder a uma instruo que possa ser realizada
A ordem dos passos deve ser precisamente determinada
O algoritmo deve ter fim
Algoritmos
Exemplo de problema: trocar uma lmpada
Como construir um algoritmo que solucione esse problema?
Lembre-se: preciso conhecer quais so as instrues que podem ser realizadas
Como o as instrues so limitadas comum o uso de abstrao
Ex.: antes de pegar a lmpada necessrio caminhar at ela, ms essa instruo pode ser omitida,
pois subentende-se que no h como pegar a lmpada sem ir at o local onde ela se encontra
(abstrao depende do contexto)
Algoritmos
Exemplo de problema: trocar uma lmpada
Inicio
Remova a lmpada queimada
Coloque a nova lmpada
Fim
Algoritmos
Voc deve estar se perguntando: Como saber se o algoritmo est detalhado o
suficiente?
A resposta simples: depende de quem vai execut-lo
Algoritmos
Sobre o algoritmo encontrado para o trocar uma lmpada
Possui Muita abstrao!
Pode funcionar como manual para humanos, ms um computador (rob, por
exemplo) no tem raciocnio para pensar sobre as etapas que foram abstradas,
como por exemplo pegar a lmpada nova, subir na escada, etc.
necessrio que o programador crie uma sequencia com aquilo que o computador
pode fazer, e a ordem da instruo deve ser pensada para o computador, que
burro!
Algoritmos
Exemplo de problema: trocar uma lmpada
Inicio
posicione a escada debaixo da lmpada
pegue um lmpada nova semelhante a queimada
suba na escada at que a lmpada possa ser alcanada
gire a lmpada no sentido anti-horrio, at que ela se solte
retire a lmpada queimada
posicione a nova lmpada nova no soquete
gire a lmpada nova no sentido horrio at que ela se firme
desa a escada
Fim
Algoritmos
Note que, mesmo incompleta, a primeira verso do algoritmo foi importante
para que se conseguisse um algoritmo completo
Pode ser interessante desenvolver algoritmos iniciando com muita abstrao
(instrues genricas) e depois desdobrar esses passos genricos em
instrues mais detalhadas
A este desdobramento, d-se o nome de refinamento sucessivo
Programadores tendem a escrever primeiro os passos gerais e, s depois, aplicar
um desdobramento dos passos at que se atinja o resultado desejado
Algoritmos
Desafio para a construo de algoritmos:
No devemos definir os passos de forma muito genrica (ou abstrata), nem
tampouco detalhar demasiadamente os passos a ponto de tornar o algoritmo bvio
e grande demais
Algoritmos
Exemplo de problema: Gravar um programa de TV em um DVD
Conecte o gravador DVD a TV
Sintonize o canal desejado
Insira um DVD virgem no gravador
Pressione a tecla rec
Algoritmos
Quais so os passos necessrios para mostrar para uma pessoa C, a soma de
dois nmeros dados por uma pessoa A?
Inicio
Receber o primeiro nmero de A
Receber o segundo nmero de A
Somar o primeiro nmero com o segundo
Mostrar a C o resultado da soma
Fim
Quais so as entradas e as sadas do algoritmo?
Resoluo de problemas
Um senhor, infelizmente bastante gordo, est numa das margens de um rio
com uma raposa, uma dzia de galinhas e um saco de milho (considere 3
cargas)
O senhor precisa atravessar o rio, ms, devido ao peso, s pode levar no seu barco
uma carga de cada vez
O senhor no pode deixar em uma das margens, sozinhos, a raposa e a galinha,
nem a galinha e o milho
Qual seria a sequencia de movimentos de carga que o senhor deve fazer para
atravessar ao outro lado do rio?
Resoluo de problemas
Como resolver?
Se existe um sequencia lgica para soluo do problema, ento podemos criar um
algoritmo
Devemos conhecer quais so as possveis instrues (lembre-se da abstrao):
Atravessar sozinho
Voltar sozinho
Atravessar com a raposa
Voltar com a raposa
Atravessar com a galinha
Voltar com a galinha
Atravessar com o milho
Voltar com o milho
Resoluo de problemas
Como resolver?
Tendo posse da instrues, vai ser fcil solucionar o problema em questo, basta
apenas ordenar a sequencia de como eles devem ocorrer e excluir alguma, caso
no seja necessria
Existem vrias tcnicas para o soluo de problemas como este. Para o problema
em questo, vamos utilizar a tcnica da exausto
Vamos testar todas as instrues em cada passo do algoritmo e anular aquelas que causam
erro, at que s se tenha a instruo correta para aquela situao
Resoluo de problemas
O senhor do barco, a raposa, as galinhas, o milho e o rio para atravessar
1 passo:
Atravessar sozinho erro: no faz sentido (erro de sintaxe ou de semntica?)
Atravessar com o milho erro: raposa devora as galinhas
Atravessar com a raposa erro: as galinhas comeriam o milho
Como nenhuma das instrues com voltar possui lgica, s resta Atravessar com as
galinhas
Portanto:
1 passo: Atravessar com as galinhas
Resoluo de problemas
O senhor do barco, a raposa, as galinhas, o milho e o rio para atravessar
1.
2.
Voltar sozinho
3.
4.
5.
6.
Voltar sozinho
7.
Resoluo de problemas
Uma outra tcnica de resoluo de problemas:
Tentar resolver casos particulares da questo ou resolver a questo para dados
menores do que os dados que foram fixados
Resoluo de problemas
4 litros com recipientes de 3 e 5
Plano:
Se conseguirmos obter 1 litro d gua, tambm conseguiremos resolver a questo!
possvel conseguir 1, com recipientes de 3 e 5? (pois isso que temos como entrada)
1=3+35
Lgica: 1 o que sobra (resto) se preenchermos um espao de 5 litros com 3 litros, e depois com
mais 3 litros
Resoluo de problemas
4 litros com recipientes de 3 e 5
Sejam A e B os recipientes de 3 litros e de 5 litros, respectivamente;
(X, n) o fato de o recipiente X conter n litros de gua;
No incio temos (A, 0) e (B, 0) e, aps a execuo de cada instruo, teremos:
1.
2.
3.
4.
5.
6.
7.
8.
Resoluo de problemas
Mesmo com a concluso bem sucedida de um problema, ainda podemos
levantar questes:
H outras solues?
Caso positivo, existe alguma soluo que realize a mesma tarefa com menos
instrues?
Resoluo de problemas
4 litros com recipientes de 3 e 5: outra soluo!
Plano: obter 2 litros no reservatrio de 3
2=53
Lgica: 2 o que sobra se preenchermos um espao de 3 litros com 5 litros
Resoluo de problemas
4 litros com recipientes de 3 e 5: outra soluo!
1.
(A, 0) e (B, 0)
2.
3.
4.
5.
6.
7.
Resoluo de problemas
Pratiquem com a lista de exerccios!
Lgica booleana
A lgica booleana se refere ao sistema de lgica matemtica utilizada em
expresses algbricas onde a resposta pode ser um de dois possveis valores:
Verdadeiro ou Falso
Lgica booleana
Exemplos de expresses booleanas:
Fortaleza a capital do Cear (VERDADEIRO)
Natal a capital da Paraba (FALSO)
2 + 2 = 4 (VERDADEIRO)
10 < 2 (FALSO)
Lgica booleana
S pra lembrar: Expresses aritmticas possuem operadores que causam
processamento sobre valores numricos e retornam (oferecem como sada)
nmeros reais (inteiros ou quebrados)
Exemplos de operadores aritmticos: soma, subtrao, multiplicao e diviso
Expresses lgicas, por sua vez, possuem operadores que agem apenas sobre
valores da lgica booleana e, por tanto, no podem retornar outra coisa alm
de Verdadeiro ou Falso
Lgica booleana
Operadores booleanos: permitem realizar a anlise expresses compostas
AND (conjuno): A resposta deste operador s ser verdadeira quando as duas
expresses associadas por ele so verdadeiras
Natal a capital da Paraba AND Fortaleza a capital do Cear (FALSO)
Recife a capital da Paraba AND Fortaleza a capital do Cear (VERDADEIRO)
10 < 2 AND 2 + 2 = 4 (FALSO)
10 > 2 AND 2 + 2 = 4 (VERDADEIRO)
(30 >= 2) AND (Fortaleza no est na Paraba) AND (crculos so redondos) = VERDADEIRO
Expresso 1
Expresso 2
Resposta
Lgica booleana
Operadores booleanos: permitem realizar a anlise expresses compostas
OR (disjuno): A resposta deste operador ser verdadeira quando, pelo menos, uma das duas
expresses associadas por ele so verdadeiras
Natal a capital da Paraba OR Fortaleza a capital do Cear (VERDADEIRO)
Recife no a capital da Paraba AND Fortaleza no a capital do Cear (FALSO)
10 < 2 OR 2 + 2 = 4 (VERDADEIRO)
10 > 2 OR 2 + 2 = 4 (VERDADEIRO)
(30 <= 2) AND (Fortaleza est na Paraba) AND (crculos no so redondos) = FALSO
Expresso 1
Expresso 2
Resposta
Lgica booleana
Operadores booleanos: permitem realizar a anlise expresses compostas
NOT (negao): A resposta deste operador ser verdadeira quando a expresso for falsa; da
mesma forma, sua resposta ser falsa quando a expresso for verdadeira
NOT(Natal a capital da Paraba) = verdadeiro
NOT(Natal no a capital da Paraba) = falso
NOT (Natal no a capital da Paraba AND Fortaleza capital do Cear) = falso
Expresso
Resposta
Fim de papo