You are on page 1of 26

Universidade Federal do Esprito Santo

Programao II
Professora: Norminda Luiza

Lgica
Podemos relacionar a lgica com a
correo do pensamento, pois uma
de suas preocupaes determinar
quais operaes so vlidas e quais
no so fazendo anlises das formas e
leis do pensamento.
Poderamos dizer tambm que a arte de
bem pensar, que a cincia das
formas do pensamento. Visto que a
forma mais complexa do pensamento o
raciocnio, a lgica estuda a correo do
pensamento.

Lgica
Todo mamfero um animal.
Todo cavalo um mamfero.
Portanto, todo cavalo um animal.
Esse exemplo ilustra silogismos, que no estudo da
Lgica Proposicional (ou clculo sentencial)
representam um argumento composto de duas
premissas e uma concluso; e est estabelecendo
uma relao, que pode ser vlida ou no.
Esse um dos objetivos da lgica, o estudo de
tcnicas de formalizao, deduo e anlise que
permitam vefiricar a validade de argumentos.

Lgica de Programao
Significa o uso correto das leis do
pensamento, da ordem da razo e de
processos de raciocnio e simbolizao
formais na programao de computadores,
objetivando
racionalidade
e
o
desenvolvimento de tcnicas que cooperam
para a produo de solues logicamente
vlidas e coerentes, que resolvam com
qualidade os problemas que se deseja
programar.
Para representar mais fielmente o raciocnio
da Lgica de Programao, utilizamos os
Algoritmos.

Algoritmo
a descrio de um conjunto de
comandos que, obedecidos, resultam
numa sucesso finita de aes.
Ao um acontecimento que, a partir de
um estado inicial, aps um perodo de
tempo finito, produz um estado final
previsvel e bem definido.
Geralmente, um algoritmo se destina a
resolver um problema: fixa um padro de
comportamento a ser seguido, uma norma de
execuo a ser trilhada, para se atingir, como
resultado final, a soluo de um problema.

Algoritmo
Um algoritmo pode ser definido como uma
sequncia de passos que visam a atingir um
objetivo bem definido
Para especificar uma sequncia de passos,
necessrio utilizar ordem, ou seja, pensar com
ordem, portanto precisamos utilizar lgica.

Ao elaborar um algoritmo, devemos


especificar aes claras e precisas, que a
partir de um estado inicial, aps um
perodo de tempo finito, produz um estado
final previsvel e bem definido.

Algoritmo
Por que importante construir um algoritmo?
Representar mais fielmente o raciocnio envolvido na
Lgica de Programao.
Pode ser traduzida para qualquer linguagem de
programao.
Exemplo (utilizando um portugus coloquial)
Algoritmo 1.1 - Troca de lmpada
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova.

Algoritmo
Algoritmo 1.2 - Troca de lmpada com teste
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
acionar o interruptor;
se a lmpada no acender, ento
subir na escada;
retirar a lmpada queimada;
colocar a lmpada nova.

Algoritmo
Algoritmo 1.3 - Troca de lmpada com teste no incio
acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada queimada;
colocar a lmpada nova.

Algoritmo
Algoritmo 1.4 - Troca de lmpada com teste e repetio indefinida
acionar o interruptor;
subir na escada;
retirar a lmpada queimada;
colocar a lmpada nova.
se a lmpada no acender, ento
retirar a lmpada queimada;
colocar a lmpada nova.
se a lmpada no acender, ento
retirar a lmpada queimada;
colocar a lmpada nova.
se a lmpada no acender, ento
retirar a lmpada queimada;
colocar a lmpada nova. at quando?

Algoritmo
Algoritmo 1.5 parada

Troca de lmpada com teste e condio de

acionar o interruptor;
se a lmpada no acender, ento
pegar uma escada;
posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada queimada;
colocar uma lmpada nova;
Enquanto a lmpada no acender, faa
retirar a lmpada queimada;
colocar uma lmpada nova;

Algoritmo
Um homem precisa atravessar um rio com um barco
que possui capacidade de transportar apenas ele
mesmo e mais uma de suas trs cargas, que so: um
lobo, um bode e um mao de alfafas. O que o homem
deve fazer para conseguir atravessar o rio sem perder
suas cargas?
Informaes:
um barco
um homem
um lobo
um bode
um mao de alfafa

Ao:
atravessar o rio sem perder as cargas

Algoritmo
Resultado:
todas as cargas na outra margem do rio

algoritmo:
atravessar homem e bode
voltar homem
atravessar homem e lobo
voltar homem e bode
atravessar homem e alfafa
voltar homem
atravessar homem e bode

fim algoritmo

Algoritmo
Elabore um algoritmo que mova trs discos
de uma Torre de Hani, que consiste em trs
hastes (a-b-c), uma das quais serve de
suporte para trs 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 o
menor. O objetivo transferir os trs discos
para outra haste.

Informaes:

Algoritmo

3 discos
3 hastes

Aes:
movimentar um disco de cada vez de forma que fiquem
ordenado

Resultado:
discos transferidos o ordenados para outra haste
algoritmo
- mover o disco 1 para a haste b
- mover o disco 2 para a haste c
- mover o disco 1 para a haste c
- mover o disco 3 para a haste b
- mover o disco 1 para a haste a
- mover o disco 2 para a haste b
- mover o disco 1 para a haste b
fim algoritmo

Torre de Hani

Torre de Hani

Algoritmo
Escrever os termos da sequncia de Fibonacci
inferiores a um valor numrico L.
A Sequncia de Fibonacci se define como tendo os
dois primeiros termos iguais a 1 e cada termo
seguinte igual a soma dos dois termos
imediatamente anteriores.
L = 50
1
1

L = 13
1
1

13

21

34

L=1
Algoritmo
Escreva os termos de Fibonacci inferiores a L
fim algoritmo

Algoritmo - Refinamentos sucessivos


Um algoritmo considerado completo se for
do entendimento do seu destinatrio.
Num algoritmo, um comando que no for do
entendimento do destinatrio ter de ser
desdobrado em novos comandos, que
constituiro um refinamento do comando
inicial.
Ref. Escreva os termos de Fibonacci inferiores a L
Receba o valor de L.
Processe os 2 primeiros termos.
Processe os termos restantes.
fim ref.

Algoritmo - Refinamentos sucessivos


Um algoritmo e seus refinamentos so formados
por comandos, que determinam as aes a
serem executadas pelo seu destinatrio e por
estruturas de controle que determinam a
ordem em que os comandos devem ser
executados, se devem ser executados ou no e
quando devem ser repetidos.
No refinamento anterior vigora a mais simples das
estruturas de controle: a estrutura sequncial.

Se um comando de um refinamento for um tanto


vago, ele poder por sua vez, ser desdobrado em
novos comandos, produzindo-se o refinamento
de um refinamento, e assim sucessivamente.

Algoritmo - Refinamentos sucessivos


Ref. Processe os 2 primeiros termos
Atribua o valor 1 ao primeiro termo
Se ele for menor que L
ento escreva-o
fim se
Atribua o valor 1 ao segundo termo
Se ele for menor que L
ento escreva-o
fim se
fim ref.
Neste refinamento aparece uma segunda estrutura
de controle: a estrutura condicional

Algoritmo - Refinamentos sucessivos


Ref. Processe os termos restantes
Repita
Calcule novo termo somando os 2 anteriores
Se novo termo for maior ou igual a L
ento interrompa
fim se
Escreva novo termo
fim repita
fim ref.
Neste refinamento aparece uma terceira estrutura de
controle: a estrutura de repetio
Aps esses refinamentos sucessivos, o algoritmo pode
ser considerado completo, a menos que o destinatrio
no saiba fazer a adio de dois termos ou no seja
capaz de entender diretamente algum comando.

Algoritmo
Algoritmo {Escrita dos termos de Fibonacci inferiores a L}
Receba o valor de L.
{Processamento dos 2 primeiros termos}
Atribua o valor 1 ao primeiro termo
Se ele for menor que L
ento escreva-o
fim se
Atribua o valor 1 ao segundo termo
Se ele for menor que L
ento escreva-o
fim se
{Processamento dos termos restantes.}
Repita
Calcule novo termo somando os 2 anteriores
Se novo termo for maior ou igual a L
ento interrompa
fim se
Escreva novo termo
fim repita
fim algoritmo

Algoritmos Estruturados
So tcnicas que permitem sistematizar e
ajudar o desenvolvimento de algoritmos para a
resoluo de grandes e complexos problemas
nos computadores: so as tcnicas de
desenvolvimento estruturado de algoritmos.
Objetivos:
facilitar o desenvolvimento dos algoritmos;
facilitar o seu entendimento pelos humanos;
antecipar a comprovao da sua correo;
facilitar a sua manuteno e a sua modificao;
permitir que o seu desenvolvimento possa ser
empreendido simultaneamente por uma equipe de
pessoas.

Algoritmos Estruturados
Para atingir estes objetivos, o
desenvolvimento estruturado preconiza que:
os algoritmos sejam desenvolvidos por
refinamentos sucessivos. Este desenvolvimento
tambm se denomina construo hierrquica de
algoritmos e desenvolvimento de cima para
baixo (em ingls, top-down);
os sucessivos refinamento so mdulos, que
delimitam poucas funes e so o mais
independente possvel, isto , conservam poucos
vnculos com outros mdulos;
nos mdulos deve ser usado um nmero limitado
de diferentes comandos e de diferentes
estruturas de controle.

Linguagens de Programao
Para armazenar um algoritmo na memria de um
computador e para que ele possa, em seguida, comandar
as operaes a serem executadas, necessrio que ele
seja programado, isto , que seja transcrito para uma
linguagem que o computador possa entender, direta ou
indiretamente.
Os computadores s podem executar diretamente os
algoritmos expressos em linguagem de mquina, que
um conjunto de instrues capazes de ativar diretamente
os dispositivos eletrnicos do computador.
Compilador: um programa que traduz o algoritmo escrito
na linguagem escolhida para a linguagem de mquina
Interpretador: um programa que interpreta cada
comando do programa e executa uma srie de instrues
que a ele correspondem.

You might also like