Transcript
Page 1: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

Programação em GeofísicaProgramação em GeofísicaAula 01Aula 01

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

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

Prof. Marcelo Peres RochaProf. Marcelo Peres Rocha

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

Page 2: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 esquerda para direita, considerando que se trata de um texto.

Page 7: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 8: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 9: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 10: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 11: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 12: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 13: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 14: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

- 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 15: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 16: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

Alguns tipos de blocos:

Page 17: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 18: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 19: Aula01 Programacao Em Geofisica

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

Programação em GeofísicaProgramação em Geofísica

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 vai abastecer.

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