Física Computacional1

48
INTRODUÇÃO À PROGRAMAÇÃO CIENTÍFICA PROF. LUÍS FERNANDO DE OLIVEIRA Física Computacional 2011-2 UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES DEPARTAMENTO DE FÍSICA APLICADA E TERMODINÂMICA

Transcript of Física Computacional1

I N T R O D U Ç Ã O À P R O G R A M A Ç Ã O C I E N T Í F I C A

P R O F . L U Í S F E R N A N D O D E O L I V E I R A

Física Computacional2011-2

UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO

INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES

DEPARTAMENTO DE FÍSICA APLICADA E TERMODINÂMICA

Introdução

Todos estamos habituados a organizar nossas tarefas diárias segundo uma lista de coisas “para fazer” (no inglês, ToDo).

Esta lista diária pode ser ordenada na forma de prioridades ou em uma ordem que faça sentido para cada um de nós.

O que se deseja é que, no final do dia, tudo tenha sido cumprido.

2

Introdução

Na rotina de um trabalho ou estudo, também nos deparamos com tarefas que devem ser cumpridas, as vezes numa mesma ordem, as vezes numa ordem diferente.

Algumas rotinas permitem essa flexibilidade, outras não.

Têm tarefas que podem ser realizadas simultanea-mente, outras não.

3

Introdução

Conforme nos tornamos mais maduros, percebemos que, pela experiência, algumas tarefas devem ser executadas numa determinada ordem para que o cumprimento delas seja bem sucedido.

A experiência é um instrumento muito valioso neste processo. Na ausência de experiência, devemos agir com sabedoria. O conhecimento científico se faz valer nestes momentos.

4

Introdução

Da ciência matemática, podemos lançar mão da lógica matemática baseada na lógica aristotélica.

A lógica em si vem do pensamento filosófico que, dentro da perspectiva científica moderna, é amplamente estudado e utilizado não só pela Matemática, mas também pela, Física, Química, Biologia, História, Direito, Atuária, Letras e Literatura, Belas Artes, Engenharias, ... – em fim, por todas as áreas de conhecimento humano.

5

Introdução – Lógica

A lógica é o estudo formal sistemático dos princípios da inferência válida e do pensamento correto.

Já que o pensamento é a manifestação do conhecimento, e que o conhecimento busca a verdade, é preciso estabelecer algumas regras para que essa meta possa ser atingida.

6

Introdução – Lógica

Assim, a lógica é o ramo da filosofia que cuida das regras do bem pensar, ou do pensar correto, sendo, portanto, um instrumento do pensar.

A aprendizagem da lógica não constitui um fim em si.

A lógica só tem sentido enquanto meio de garantir que nosso pensamento proceda corretamente a fim de chegar a conhecimentos verdadeiros.

7

Introdução – Lógica

Podemos, então, dizer que a lógica trata dos argumentos, isto é, das conclusões a que chegamos através da apresentação de evidências que a sustentam.

01/08/11 - http://pt.wikipedia.org/wiki/Lógica

8

Introdução – Método Científico

O método científico é um conjunto de regras básicas de como se deve proceder a fim de produzir conhecimento dito científico, quer seja este um novo conhecimento quer seja este fruto de uma integração, correção (evolução) ou expansão da área de abrangência de conhecimentos pré-existentes.

9

Introdução – Método Científico

Na maioria das disciplinas científicas, o método científico consiste em juntar evidências empíricas verificáveis baseadas na observação sistemática e controlada, geralmente resultantes de experiênciasou pesquisa de campo, e analisá-las com o uso da lógica.

Para muitos autores o método científico nada mais é do que a lógica aplicada à ciência.

10

Introdução – Método Científico

A metodologia científica tem sua origem no pensamento de Descartes que propôs chegar à verdade através da dúvida sistemática e da decomposição do problema em pequenas partes, características que definiram a base da pesquisa científica.

Compreendendo-se os sistemas mais simples, gradualmente se incorpora mais e mais variáveis, em busca da descrição do todo mais complexo.

11

Introdução – Método Científico

01/08/11 -http://pt.wikipedia.org/wiki/Método_científico

12

Introdução – Algoritmo

Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.

O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam muito mais complexos que isso.

13

Introdução – Algoritmo

Um algoritmo pode repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações) até que a tarefa seja completada.

Um algoritmo corretamente executado não irá resolver um problema se ele estiver implementado incorretamente ou se não for apropriado ao problema, isto é, se a lógica estiver errada ou for inapropriada.

14

Introdução – Algoritmo

Um algoritmo não representa, necessariamente, um programa de computador, e sim os passos necessários para realizar uma tarefa.

A implementação de um algoritmo pode ser feita por um computador, por outro tipo de autômato ou mesmo por um ser humano.

01/08/11 - http://pt.wikipedia.org/wiki/Algoritmo

15

Introdução

Uma das características mais fortes do pensamento científico é a aplicação de procedimentos sistemáticos para a investigação dos fatos observacionais.

A aplicação dos procedimentos sistemáticos corresponde ao método científico adotado na investigação.

16

Introdução

A construção textual do método científico corresponde a um algoritmo, pois o método científico se baseia na lógica para sua elaboração, assim como o algoritmo.

Em laboratório, a elaboração d0 procedimento experimental deve seguir os passos determinados pelo método científico. Logo, o procedimento experimental é o algoritmo da prática científica.

17

Introdução

O algoritmo é a elaboração lógica dos passos que devem ser percorridos para que um resultado correto e significativo seja produzido.

O algoritmo é a base da programação científica, onde o resultado poderá ser um programa computacional que, ao ser executado em um computador digital, produzirá a solução desejada.

18

Introdução

Por isso, tão ou mais importante quanto aprender uma linguagem de programação, é aprender a pensar logicamente, aprender a ordenar corretamente o pensamento para se conceber um algoritmo que, através de uma linguagem de programação apropriada, resultará nas respostas esperadas.

O computador é um instrumento sem inteligência. Ele faz o que o programador mandar: se o programador mandar fazer errado...

19

Introdução

A aplicação da lógica deveria se um elemento natural ao ser humano, principalmente a um estudante de Física.

Ao realizar uma prática de laboratório (várias, creio eu), ao resolver uma lista de exercícios (mais de uma certamente), o aluno deve aplicar uma sequência de passos (método experimental, método de estudo) até que o resultado seja atingido.

20

Introdução

Se a lógica está errada, o resultado é conhecido: ZERO!!!

Se o procedimento experimental está errado, o resultado é conhecido: TEM QUE FAZER DE NOVO.

Então, a primeira missão da disciplina Física Computacional é lidar com o desenvolvimento da lógica de programação.

21

Introdução

A lógica de programação depende da lógica do ser humano (aluno).

Aprender a pensar corretamente (logicamente) é sua prioridade.

22

Introdução – Problemas

Problemas: No tempo t0 , a velocidade de um corpo é v0. Qual sua

velocidade em t1 dado que o corpo está submetido a uma aceleração a?

Um corpo desliza sobre uma plataforma com velocidade constante v0. Ao atingir a borda da plataforma, o corpo cai em queda livre e percorre uma altura h até atingir o chão. Qual a distância horizontal entre a plataforma e o ponto de contato do corpo com o chão?

23

Introdução – Problemas

Problemas: Um aluno fez as seguintes medidas em laboratório:

Qual o erro percentual em relação ao tempo médio?

Erro percentual em relação à média:

24

Tempo (s)

1,3

1,2

1,2

1,4

X

.p.d

Introdução – Algoritmo

O desenvolvimento de um algoritmo segue um método lógico onde o problema é analisado e a solução inicial é descrita de forma natural.

Exemplo: Considere um corpo se movimentando com velocidade

constante.

Problema: como calcular o deslocamento do corpo a partir de uma posição inicial em dado instante de tempo?

25

Introdução – Algoritmo

Naturalmente, o primeiro passo é observar o modelo matemático que está associado ao problema.

Neste caso, é a equação de posição de um corpo em movimento uniforme:

x(t) = x(t0) + v×(t-t0)

26

Introdução – Algoritmo

O passo seguinte é a identificação dos elementos componentes desta equação: x é posição

v é velocidade

t0 é o instante de tempo inicial

t é o instante de tempo onde os demais elementos estão sendo inferidos

x(t0) é a posição no instante t0

x(t) é a posição no instante t

27

Introdução – Algoritmo

Pela experiência no uso de modelos matemáticos, sabemos que a terminologia x(t) significa: uma função chamada x cujo argumento é t ou que x é função de t.

Novamente pelo uso de modelos matemáticos, sabemos que a função x deve ter elementos (parâmetros) constantes e que o argumento t pode assumir diferentes valores.

28

Introdução – Algoritmo

Dado o modelo x(t) = x(t0)+v×(t-t0), percebemos que, sendo t0 uma constante, x(t0) também é uma constante: x0 = x(t0).

A velocidade v também é constante (movimento uniforme): v0 = v.

Desta forma, a equação da posição pode ser rescrita como: x(t) = x0 + v0×(t-t0).

29

Introdução – Algoritmo

O único elemento deste modelo matemático que pode variar é o tempo t. Por isso é chamada de variável.

Então, os parâmetros constantes são: t0, x0 e v0.

A variável é t.

Terminamos a análise? Não.

30

Introdução – Algoritmo

Falta responder qual a natureza de cada um destes elementos, isto é, se estes elementos são numéricos, literais ou lógicos (falso e verdadeiro).

Se forem numéricos, poderão ser números inteiros, números reais ou números complexos.

É importante que estas questões também sejam respondidas.

31

Introdução – Algoritmo

No caso da equação da posição do corpo, sabemos que todos os elementos envolvidos devem ser numéricos.

Matematicamente, estes elementos podem assumir quaisquer valores numéricos (inteiros, reais e complexos).

O bom senso nos diz que um corpo não assume posições representadas por complexos.

32

Introdução – Algoritmo

E como o conjunto dos números reais engloba o conjunto dos números naturais (inteiros), então é suficiente definir x0, v0, t0 e t como elementos numéricos reais.

Terminamos? Não.

Para encerrarmos a análise, é necessário saber quem é entrada e quem é saída.

33

Introdução – Algoritmo

No problema proposto, para que a solução seja encontrada, é necessário que o tempo inicial t0, a posição inicial x0 e a velocidade v0 sejam dados.

Logo, t0, x0 e v0 são dados do problema.

O tempo t é entrada. Sendo uma variável, pode assumir qualquer valor que o problema indicar (usuário).

34

Introdução – Algoritmo

A saída é o valor x(t), isto é, a posição x do corpo no instante t (a resposta do problema).

Por simplicidade, substituiremos x(t) por apenas x.

Então, temos: Dados: t0, x0 e v0 numéricos reais

Entrada: t numérico real

Saída: x numérico real

35

Introdução – Algoritmo

Resumindo: Dados: t0, x0 e v0 numéricos reais

Entrada: t numérico real

Saída: x numérico real

Método (como resolver):

Dados os valores de t0, x0 e v0, construir a equação da posição do corpo: x = x0 + v0(t-t0).

Para um valor específico de t, substituir o valor de t na equação e resolvê-la, isto é, gerar o resultado x.

36

Introdução – Algoritmo

Terminamos? Sim.

Podemos construir o algoritmo? Sim.

37

Introdução – Algoritmo

Dados: t0, x0 e v0 numéricos reais

Entrada: t numérico real

Saída: x numérico real

Método: Dados os valores de t0, x0 e v0, construir a equação da posição do corpo: x = x0 + v0(t-t0). Depois, ler o valor de t, resolver a equação e gerar o resultado x.

Algoritmo

ler t

x x0 + v0(t-t0)

escrever x

Fim algoritmo

38

Introdução – Algoritmo

A escrita de um algoritmo segue algumas regras básicas: Você deve sempre indicar quais são os dados do problema.

Você deve sempre indicar quais são as entradas do problema.

Você deve sempre indicar quais são as saídas do problema.

Você deve sempre indicar o método para resolver o problema.

Nunca se usa o símbolo matemático „=‟ para atribuir o conteúdo de uma variável ou equação a outra variável.

Usa-se o símbolo „‟ para a operação de atribuição de valores.

Cada linha do algoritmo só pode conter uma ação (verbo).

A ação (verbo) deve ser sublinhada.

39

Introdução – Algoritmo

O início do algoritmo deve ser identificado pela palavra „Algoritmo‟.

O algoritmo deve ser finalizado pela expressão „Fim algoritmo‟.

Para facilitar a visualização do algoritmo, pode-se utilizar linhas verticais ligando o início e o fim do conjunto de instruções.

O algoritmo deve ser o mais simples possível.

O algoritmo deve ser o mais claro possível.

O algoritmo deve ser o mais legível possível.

O algoritmo deve ser logicamente organizado.

O algoritmo deve ser lido e executado instrução por instrução.

40

Introdução – Algoritmo

Nunca se deve saltar uma instrução, a menos que um comando de salto esta sendo executado.

O algoritmo é executado verticalmente, de cima para baixo.

Qualquer um que execute o algoritmo deve chegar ao mesmo resultado (saída) dadas as mesmas condições iniciais (dados) e entradas.

Toda solução deve ser documentada, isto é, deve-se manter um registro temporal e espacial do que foi realizado

41

Introdução – Algoritmo

A documentação deve conter:

data

local

autor

título

propósito (motivo pelo qual o algoritmo foi desenvolvido)

objetivos (o que se deseja obter com o algoritmo)

método (como se resolve)

requisitos e restrições (condições especiais para que o algoritmo funcione)

dados, entradas e saídas

algoritmo

42

Introdução

Antes que alguém reclame da quantidade de coisas dentro de uma documentação, é importante lembrar que vocês não fazem só isso na vida.

Daqui a mais algumas semanas, todos estarão em semana de prova e as cabeças estarão em parafuso.

Logo, é melhor registrar o que está sendo feito agora, de forma bem completa, do que tentar lembrar depois no meio da confusão.

43

Introdução

O papel do laboratório de Física Computacional é criar uma oportunidade para o aluno transformar o conhecimento lógico em um código de programação.

O algoritmo independe da arquitetura dos computadores, do tempo e da tecnologia.

Um código de programação (código fonte) é a transformação do algoritmo numa linguagem que o computador entende.

44

Introdução

No curso de Física Computacional, a codificação será feita na linguagem FORTRAN.

O FORTRAN é uma linguagem de programação científica, é moderna (já está na versão 2008), incorpora modelos de programação estruturado e orientado a objeto, mas peca pela ausência de instruções para exibição gráfica (telas, menus, interfaces).

45

Introdução

Por outro lado, nenhuma outra linguagem de programação científica é tão madura quanto o FORTRAN e seu desempenho na execução de cálculos é imbatível.

Como o objetivo do curso de Física Computacional é introduzir a lógica de programação e apresentar o potencial da programação na Física, esta parte gráfica, não será coberta pela disciplina.

46

Introdução

Não adianta pensar em interfaces gráficas sofisticadas e outros aspectos desta natureza se vocês não souberem o mais básico de tudo isso: A LÓGICA POR TRÁS DA CODIFICAÇÃO.

Então, vamos trabalhar juntos para que o curso seja o mais agradável possível, sendo que vocês devem fazer a parte principal: SE DEDICAR.

47

Introdução

O curso utilizará, além do material tradicionalmente disponível na página

http://m4-dfat.fis.uerj.br,

o livro texto Lógica de Programação, a construção de algoritmos e estruturas de dados dos autores André Luiz Villar Forbellone e Henri Frederico Eberspächer, editora Pearson (Pretince-Hall), 3ª ed., 2005.

48