Você está na página 1de 19

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Programao em Geofsica
Aula 01

Lgica de Programao
Prof. Marcelo Peres Rocha
marcelorocha@unb.br blog: my.opera.com/marcelorocha

Braslia-DF - 2 Semestre/2011

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

O que lgica?

- Podemos dizer que a lgica a arte do bem pensar, que a


cincia das formas de pensamento.

- Visto que a forma mais complexa do pensamento o

raciocnio, a lgica estuda a correo do raciocnio, ou ainda, podemos dizer que a lgica tem em vista a ordem da razo.
Exemplo: Todo mamfero um animal. Todo cavalo um mamfero. Portanto, todo cavalo um animal.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Existe lgica no dia-a-dia?

- Sempre que pensamos, a lgica nos acompanha. Quando


falamos ou escrevemos, estamos expressando nosso pensamento, logo precisamos usar a lgica nestas atividades.

- Podemos perceber a importncia da lgica em nossa vida,


no s na teoria, mas tambm na prtica, j que, quando queremos pensar, falar, escrever ou agir, precisamos colocar ordem no pensamento.

Exemplo:
A gaveta est fechada. A caneta est dentro da gaveta. Precisamos primeiro abrir a gaveta para depois pegar a caneta.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Mas e a Lgica de Programao?

- O raciocnio algo abstrato. Os seres humanos tm a capacidade


de express-lo atravs da palavra falada ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma srie de padres (gramtica).

- Um mesmo raciocnio pode ser expresso em qualquer um dos


inmeros idiomas existentes, mas continuar representando o mesmo raciocnio, usando apenas uma outra conveno.

- Algo similar ocorre com a Lgica de Programao, que pode ser


concebida e pode ser representada em qualquer uma das inmeras linguagens de programao existentes.

- Como cada uma das diversas linguagens tem suas particularidades,


interessante, para representar mais fielmente o raciocnio lgico, o uso dos chamados Algoritmos.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

O que um Algoritmo?

- Um algoritmo pode ser definido como a seqncia de passos


necessrios para se atingir um objetivo bem definido.

- Na medida em que precisamos especificar uma seqncia de

passos, precisamos utilizar ordem, ou seja, pensar em ordem, portanto precisamos utilizar a Lgica.

- Apesar do nome pouco comum, os algoritmos so comuns em


nosso cotidiano, como por exemplo, uma receita de bolo.

- Quando elaboramos um algoritmo, devemos especificar aes


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

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Exemplos de Algoritmo

- Podemos escrever um algoritmo, utilizando portugus


coloquial que descreva os passos para a soluo de um determinado problema, como por exemplo, trocar uma lmpada.
Algoritmo 1.1:
- Pegar uma escada; - Posicionar a escada embaixo da lmpada; - Buscar uma lmpada nova; - Subir na escada; - Retirar a lmpada velha; - Colocar a lmpada nova.

- A seqncia acima pode ser seguida por qualquer pessoa para se alcanar o objetivo deste algoritmo: Trocar a lmpada. Esta seqncia linear e de cima para baixo e da esquerda para direita, considerando que se trata de um texto.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- E no caso da lmpada no estar queimada?


A execuo das aes conduziria a uma troca, independente de a lmpada estar ou no queimada, pois no foi prevista esta possibilidade na execuo. Um novo algoritmo poderia ser construdo efetuando um teste sobre a lmpada.
Algoritmo 1.2:
- 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 velha; - Colocar a lmpada nova.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- No algoritmo anterior foi colocado um teste condicional. Este


algoritmo est certo, visto que atinge seu objetivo, mas ele pode ser melhorado.
Algoritmo 1.3: - 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 velha; - Colocar a lmpada nova.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- O algoritmo ser correto se atingir o objetivo final, mas deve-se buscar o mnimo esforo e a mxima objetividade.

Algoritmo 1.4: - Acionar o interruptor; - Se a lmpada no acender, ento - Pegar uma escada; - Posicionar a escada embaixo da lmpada; - Buscar uma lmpada nova; - 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???

- O algoritmo anterior
no leva em conta a possibilidade da lmpada nova estar queimada, e sendo assim necessrio alter-lo caso o desejo seja, alm trocar a lmpada, que esta funcione.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- O algoritmo anterior no est completo, falta especificar at quando ser feito o teste da lmpada.

Algoritmo 1.5:
- Acionar o interruptor; - Se a lmpada no acender, ento - Pegar uma escada; - Posicionar a escada embaixo da lmpada; - Buscar uma lmpada nova; - Acionar o interruptor; - Subir na escada; - Retirar a lmpada queimada; - Colocar a lmpada nova; - Enquanto a lmpada no acender, faa - Retirar a lmpada queimada; - Colocar a lmpada nova;

- As aes cessaro
quando conseguirmos colocar uma lmpada que acenda, caso contrrio, ficaremos testando indefinidamente. Alm disso, a parte do algoritmo que testa a lmpada repetido vrias vezes, tornando-o pouco objetivo.

- Dessa forma, podemos


fazer uma pequena alterao no algoritmo para torn-lo mais eficiente.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Exerccio 01: Um homem precisa atravessar um rio com um barco que possui capacidade apenas para carregar ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um p de alface. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? Escreva um algoritmo mostrando a resposta, ou seja, indicando todas as aes necessrias para efetuar uma travessia segura.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- Resoluo do Exerccio 01.


Chamaremos a margem atual de margem 1 e a de destino de margem 2.
Algoritmo:

O O O O O O O

homem homem homem homem homem homem homem

leva o bode da margem 1 para a margem 2; retorna sozinho da margem 2 para a margem 1; leva o lobo da margem 1 para a margem 2; retorna trazendo o bode da margem 2 para a margem 1; leva o alface da margem 1 para a margem 2; retorna sozinho da margem 2 para a margem 1; leva o bode da margem 1 para a margem 2.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Exerccio 02: 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-23), 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.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

- Resoluo do Exerccio 02.


Algoritmo:

Mover Mover Mover Mover Mover Mover Mover

o o o o o o o

disco disco disco disco disco disco disco

1 2 1 3 1 2 1

da da da da da da da

haste haste haste haste haste haste haste

A A B A C C A

para para para para para para para

a a a a a a a

haste haste haste haste haste haste haste

B; C; C; B; A; B; B.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

De que maneira representamos um algoritmo?

- Um algoritmo pode ser representado utilizando diagramas de blocos ou


fluxogramas.

- O diagrama de blocos uma forma padronizada e eficaz de representar


passos lgicos de um determinado processo.

- A grande vantagem da utilizao deste tipo de diagrama para representar


um algoritmo, a simplificao de um grande nmero de palavras por desenhos, deixando o algoritmo mais simples.

- A grande desvantagem que sempre mais difcil desenhar do que


escrever, sendo a forma textual mais prtica. Alm disso existem tipos de blocos diferentes, que o programador precisa conhecer para utilizar o diagrama de blocos.

- Resumindo, os diagramas de bloco normalmente so utilizados para

programas profissionais, os quais se tornam parte da documentao do programa.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Alguns tipos de blocos:

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Representao do Algoritmo 1.5 em Diagrama de blocos

Algoritmo 1.5: - Acionar o interruptor; - Se a lmpada no acender, ento - Pegar uma escada; - Posicionar a escada embaixo da lmpada; - Buscar uma lmpada nova; - Acionar o interruptor; - Subir na escada; - Retirar a lmpada queimada; - Colocar a lmpada nova; - Enquanto a lmpada no acender, faa - Retirar a lmpada queimada; - Colocar a lmpada nova;

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Outro exemplo de diagrama de blocos

Calcular a mdia de 4 notas: - Recebe a nota da Prova 1; - Recebe a nota da Prova 2; - Recebe a nota da Prova 3; - Recebe a nota da Prova 4; - Soma as notas das provas e divide por 4; - Imprime o valor obtido.

Universidade de Braslia Instituto de Geocincias Programao em Geofsica

Exerccio 03:

Um carro bicombustvel abastecido com gasolina tem melhor desempenho (roda mais km por litros) do que se abastecido com lcool.
O abastecimento deste carro com lcool s compensa se o valor deste combustvel estiver at 70% do valor da gasolina. Construa um algoritmo detalhado e o seu respectivo diagrama de blocos para avaliar esta situao no momento em que o motorista vai abastecer. Utilize os blocos ao lado para esta operao.

Você também pode gostar