Transcript
Page 1: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Programação para GeociênciasProgramação para Geociências

Aula 01Aula 01

Lógica de ProgramaçãoLógica de Programação

Brasília-DF - 1º Semestre/2011Brasília-DF - 1º Semestre/2011

Prof. Marcelo Peres RochaProf. Marcelo Peres Rocha

[email protected]@unb.brblog: my.opera.com/marcelorochablog: my.opera.com/marcelorocha

Page 2: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

O que é lógica?

- Podemos dizer que a lógica é a “arte do bem pensar”, que é “a ciência das formas de pensamento”.

- Visto que a forma mais complexa do pensamento é o raciocínio, a lógica estuda a “correção do raciocínio”, ou ainda, podemos dizer que a lógica tem em vista a “ordem da razão”.

Exemplo:

Todo mamífero é um animal.Todo cavalo é um mamífero.Portanto, todo cavalo é um animal.

Page 3: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Existe lógica no dia-a-dia?

- Sempre que pensamos, a lógica nos acompanha. Quando falamos ou escrevemos, estamos expressando nosso pensamento, logo precisamos usar a lógica nestas atividades.

- Podemos perceber a importância da lógica em nossa vida, não só na teoria, mas também na prática, 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.

Page 4: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Mas e a Lógica de Programação?

- O raciocínio é algo abstrato. Os seres humanos têm a capacidade de expressá-lo através da palavra falada ou escrita, que por sua vez se baseia em um determinado idioma, que segue uma série de padrões (gramática).

- Um mesmo raciocínio pode ser expresso em qualquer um dos inúmeros idiomas existentes, mas continuará representando o mesmo raciocínio, usando apenas uma outra convenção.

- Algo similar ocorre com a Lógica de Programação, que pode ser concebida e pode ser representada em qualquer uma das inúmeras linguagens de programação existentes.

- Como cada uma das diversas linguagens tem suas particularidades, é interessante, para representar mais fielmente o raciocínio lógico, o uso dos chamados Algoritmos.

Page 5: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

O que é um Algoritmo?

- Um algoritmo pode ser definido como a seqüência de passos necessários para se atingir um objetivo bem definido.

- Na medida em que precisamos especificar uma seqüência de passos, precisamos utilizar ordem, ou seja, “pensar em ordem”, portanto precisamos utilizar a Lógica.

- Apesar do nome pouco comum, os algoritmos são comuns em nosso cotidiano, como por exemplo, uma receita de bolo.

- Quando elaboramos um algoritmo, devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido.

Page 6: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- Quando elaboramos um algoritmo, devemos especificar ações claras e precisas, que a partir de um estado inicial, após um período de tempo finito, produzem um estado final previsível e bem definido.

Page 7: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Exemplos de Algoritmo

- Podemos escrever um algoritmo, utilizando português coloquial que descreva os passos para a solução de um determinado problema, como por exemplo, trocar uma lâmpada.

Algoritmo 1.1:

- Pegar uma escada;- Posicionar a escada embaixo da lâmpada;- Buscar uma lâmpada nova;- Subir na escada;- Retirar a lâmpada velha;- Colocar a lâmpada nova.

- A seqüência acima pode ser seguida por qualquer pessoa para se alcançar o objetivo deste algoritmo: Trocar a lâmpada. Esta seqüência é linear e de cima para baixo e da direita para esquerda, considerando que se trata de um texto.

Page 8: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- E no caso da lâmpada não estar queimada?

A execução das ações conduziria a uma troca, independente de a lâmpada estar ou não queimada, pois não foi prevista esta possibilidade na execução. Um novo algoritmo poderia ser construído efetuando um teste sobre a lâmpada.

Algoritmo 1.2:

- 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

- Subir na escada;- Retirar a lâmpada velha;- Colocar a lâmpada nova.

Page 9: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- 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 lâmpada não acender, então

- Pegar uma escada;- Posicionar a escada embaixo da lâmpada;- Buscar uma lâmpada nova;- Subir na escada;- Retirar a lâmpada velha;- Colocar a lâmpada nova.

Page 10: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- O algoritmo será correto se atingir o objetivo final, mas deve-se buscar o mínimo esforço e a máxima objetividade.

- O algoritmo anterior não leva em conta a possibilidade da lâmpada nova estar queimada, e sendo assim é necessário alterá-lo caso o desejo seja, além trocar a lâmpada, que esta funcione.

Algoritmo 1.4:

- Acionar o interruptor;- Se a lâmpada não acender, então

- Pegar uma escada;- Posicionar a escada embaixo da lâmpada;- Buscar uma lâmpada nova;- Acionar o interruptor;- Subir na escada;- Retirar a lâmpada queimada;- Colocar a lâmpada nova;- Se a lâmpada não acender, então

- Retirar a lâmpada queimada;- Colocar a lâmpada nova;- Se a lâmpada não acender, então

- Retirar a lâmpada queimada;- Colocar a lâmpada nova;- Se a lâmpada não acender, então

- Retirar a lâmpada queimada;- Colocar a lâmpada nova;

...Até quando???

Page 11: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- O algoritmo anterior não está completo, falta especificar até quando será feito o teste da lâmpada.

- As ações cessarão quando conseguirmos colocar uma lâmpada que acenda, caso contrário, ficaremos testando indefinidamente. Além disso, a parte do algoritmo que testa a lâmpada é repetido várias vezes, tornando-o pouco objetivo.

- Dessa forma, podemos fazer uma pequena alteração no algoritmo para torná-lo mais eficiente.

Algoritmo 1.5:

- Acionar o interruptor;- Se a lâmpada não acender, então

- Pegar uma escada;- Posicionar a escada embaixo da lâmpada;- Buscar uma lâmpada nova;- Acionar o interruptor;- Subir na escada;- Retirar a lâmpada queimada;- Colocar a lâmpada nova;- Enquanto a lâmpada não acender, faça

- Retirar a lâmpada queimada;- Colocar a lâmpada nova;

Page 12: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Exercício 01:

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 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 ações necessárias para efetuar uma travessia segura.

Page 13: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- Resolução do Exercício 01.Chamaremos a margem atual de margem 1 e a de destino de margem 2.

Algoritmo:

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

Page 14: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Exercício 02:

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 o menor. O objetivo é transferir os três discos para outra haste.

Page 15: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

- Resolução do Exercício 02.

Algoritmo:

- Mover o disco 1 da haste A para a haste B;- Mover o disco 2 da haste A para a haste C;- Mover o disco 1 da haste B para a haste C;- Mover o disco 3 da haste A para a haste B;- Mover o disco 1 da haste C para a haste A;- Mover o disco 2 da haste C para a haste B;- Mover o disco 1 da haste A para a haste B.

Page 16: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

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 lógicos de um determinado processo.

- A grande vantagem da utilização deste tipo de diagrama para representar um algoritmo, é a simplificação de um grande número de palavras por desenhos, deixando o algoritmo mais simples.

- A grande desvantagem é que sempre é mais difícil desenhar do que escrever, sendo a forma textual mais prática. Além disso existem tipos de blocos diferentes, que o programador precisa conhecer para utilizar o diagrama de blocos.

- Resumindo, os diagramas de bloco normalmente são utilizados para programas “profissionais”, os quais se tornam parte da documentação do programa.

Page 17: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Alguns tipos de blocos:

Page 18: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Representação do Algoritmo 1.5 em Diagrama de blocos

Algoritmo 1.5:

- Acionar o interruptor;- Se a lâmpada não acender, então

- Pegar uma escada;- Posicionar a escada embaixo da lâmpada;- Buscar uma lâmpada nova;- Acionar o interruptor;- Subir na escada;- Retirar a lâmpada queimada;- Colocar a lâmpada nova;- Enquanto a lâmpada não acender, faça

- Retirar a lâmpada queimada;- Colocar a lâmpada nova;

Colocar uma lâmpada nova

Retirar a lâmpada queimada

Subir na escada

Acionar o interruptor

Buscar uma nova lâmpada

Posicionar a escada embaixo da lâmpada

Pegar a escada

Não

Acendeu? Sim

Acionar o Interruptor

Inicio

Acendeu?

Fim

Não

Sim

Page 19: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Outro exemplo de diagrama de blocos

Calcular a média 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.

Page 20: Universidade de Brasília Instituto de Geociências Programação para Geociências Programação para Geociências Aula 01 Lógica de Programação Brasília-DF -

Universidade de BrasíliaUniversidade de BrasíliaInstituto de GeociênciasInstituto de Geociências

Programação para GeociênciasProgramação para Geociências

Exercício 03:

Um carro bicombustível 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 combustível estiver até 70% do valor da gasolina.

Construa um algoritmo detalhado e o seu respectivo diagrama de blocos para avaliar esta situação no momento em que o motorista pára para abastecer.

Utilize os blocos ao lado para esta operação.


Top Related