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 Computacional
2011-2
UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO INSTITUTO DE FÍSICA ARMANDO DIAS TAVARES
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.
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.
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.
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.
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.
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.
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
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.
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ências
ou 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 nopensamento 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.
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.
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
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.
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.
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.
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...
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.
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.
Introdução
A lógica de programação depende da lógica do ser
humano (aluno).
Aprender a pensar corretamente (logicamente) é sua
prioridade.
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?
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?
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)
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
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.
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).
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.
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.
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.
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.
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).
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
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.
Introdução – Algoritmo
Terminamos? Sim.
Podemos construir o algoritmo? Sim.
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
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
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.
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.
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).
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.
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.
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.