Sunteți pe pagina 1din 24

Universidade Federal do Amazonas

Departamento de Física

Física Computacional

Profa. Rita de Cássia Mota


À Ementa:
Linguagem e Algoritmo
Precisão da máquina
Derivação numérica
Quadratura de uma função
Equações diferenciais ordinárias
técnicas de soluções
algoritmo de Euler , Runge-Kutta
dinâmica em uma dimensão
dinâmica em duas dimensões
dinâmica em três dimensões

À Projetos:
Multiplicação de inteiros
Multiplicação de reais
derivada de uma função: fórmula de 3 e 5 pontos
quadratura de uma função: trapézio, Simpson
resfriamento de Newton e/ou variação da pressão
com altura
queda livre, queda com atrito
lançamento de um corpo: com e sem atrito
oscilador harmônico
sistema planetário: leis de Kepler
Baseado nas Notas de Física Computacional – Prof. Rino
À Introdução
Linguagem de programação: Como qualquer povo, há a necessidade
de se ter um meio de comunicação. No nosso caso comunicação
pessoa <=> computador.
Existem várias linguagens:
BASIC Beginner's All-purpose Symbolic Instruction Code
COBOL COmmon Business Oriented Language
ALGOL ALGOrithmic Language
PL/I Programming Language One
PASCAL
C, C++
FORTRAN FORmula TRANslation.
Como qualquer linguagem => regras, sintaxe, gramática.

À Regras Básicas para o FORTRAN (algumas regras tem sido modificadas


devido a evolução da linguagem).

1.- A escrita é sempre feita da esquerda para a direita e de cima para baixo.

2.- A escrita é feita de modo a ter uma "letra" (caractere) por coluna.

3.- Colunas de 1 a 5 são colunas para endereçamento, rótulos de instrução. (*)

4.- Coluna 6, para permitir continuação da linha anterior. Um número ou


símbolo, tais como *, &, +, nesta coluna indica que a instrução desta linha é
continuação da linha anterior(*)
Baseado nas Notas de Física Computacional – Prof. Rino
5.- A atribuição é feita somente a partir da 7ª coluna, e até o máximo na
coluna 72. (*)

6.- Se na primeira coluna existir algum dos símbolos C, c, ou * significa que


o conteúdo da linha é inoperante - não é executado, é uma linha de
comentário.

7.- Não há diferenciação entre letras maiúsculas e minúsculas.

8.- Nomes das entidades ("palavras") usadas na linguagem devem sempre


começar com uma letra do alfabeto, podendo conter números, $ e _ .
Pode ter até 6 caracteres.(*)

(*) regras que tem sido modificadas

1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 1 2 7
0 1 2 3 4 5 6 7 8 9 0 2

Baseado nas Notas de Física Computacional – Prof. Rino


Exemplos: A, y, xpto, h2so4, Maria, Al_2

Caracteres da linguagem
Alfabéticos: A a B b C c D d E e F f I i J j etc
Numéricos: 0123456789
Especiais: + - * / (soma, subtração, multiplicação, divisão)
( ) = , (vírgula) . (ponto) ' (apóstrofo) : (dois pontos) $ (cifrão) !
(exclamação)

Constantes: São elementos que ficam inalterados durante toda a execução do


programa.

Constantes inteiras: Números que não apresentam o ponto decimal


0 -3 3254 -22876
Constantes reais: Números que apresentam o ponto decimal
3.141592 -2.71 -0.0015

OBS: Números do tipo 3x105, 0. 00004 podem ser escritos na forma


3x105 -> 3e5 ou 3.e+5
0.00004 -> 4.e-5 ou +4.e-5
-0.00004 -> -4.e-5
onde a letra e ou E representa a base 10 de uma exponenciação.

Baseado nas Notas de Física Computacional – Prof. Rino


Variáveis: Váriável é o elemento que pode assumir diferentes valores durante
a execução do programa.
Variáveis podem ser: Reais

Numéricas
Inteiras

Alfanuméricas

Lógicas

REGRA PARA OS NOMES DAS VARIÁVEIS


1.- O primeiro caractere deve ser alfabético

2.- Branco no meio do nome é ignorado

3.- Número máximo de caracteres = 6 (versão mais nova permite mais


caracteres)

4.- Se NÃO for especificado nada previamente, então qualquer nome


começando com as letras I, J, K, L, M, N (ou i, j, k, l, m, n)
representará um número INTEIRO.
Baseado nas Notas de Física Computacional – Prof. Rino
À Expressões aritméticas
Em FORTRAN as expressões aritméticas são escritas de forma
similar àquela da matemática. No entanto toda operação deve ser escrita
explicitamente. Assim, os símbolos representando cada operação são:
+ adição (a+b , 2+3)
- subtração (a-b , 5-1)
* multiplicação (a*b , 12*9)
/ divisão (a/b , 23/4)
** potenciação (a**b , 52)

Exemplo: (a+b)x((d-e):3)2 será escrito como (A+B)*((D-E)/3)**2

x+3a NECESSARIAMENTE deverá ser escrita como X+3*A o sinal de


multiplicação não pode ser subentendido.

Nenhuma operação pode ser implícita.

Outras operação matemáticas :


sqrt(A) raiz quadrada de A

Baseado nas Notas de Física Computacional – Prof. Rino


sin(A) seno de A, sendo A dado em radianos
cos(A) cosseno de A
tan(A) tangente de A
exp(A) exponencial de A ( eA )
log(A) logaritmo neperiano de A
log10(A) logaritmo base 10 de A
atan(A) arco tangente de A

Hierarquia das operações: ** - mais alta


* ou / - intermediária
+ ou - - mais baixa
Em FORTRAN cada nome de constante ou variável de um código
fonte é associada a uma certa localização da memória do computador.
Não nos interessa saber o endereço físico da memória, só nos interessa
saber que ao se dar um nome para a constante/variável estamos alocando,
reservando, uma memória para ela.
Com isso, ao escrevermos
X=2.5
estaremos atribuindo à posição de memória denominada de X o valor 2.5. Assim,
ao fazermos
A= X+Y
estaremos dizendo: pegue o valor atribuindo à posição de memória denominada
X e adicione ao valor atribuindo à posição de memória denominada Y e guarde o
resultado na posição de memória denominada A.
Baseado nas Notas de Física Computacional – Prof. Rino
As constantes e variáveis acima definidas podem ser ainda do tipo
complexo,caractere, lógica, hexadecimais, octais, hollerith, booleanas.
Aqui só iremos discutir
CARACTERE
LOGICA
Um caractere é um símbolo, usado por exemplo na ordenação
alfabética de nomes de pessoas.

O caractere pode ser uma letra, um número, um dígito ou um


símbolo especial.

Uma cadeia de caracteres é uma seqüência de um ou mais


caracteres entre apóstrofes. Por exemplo: 'b' 'soma' 'nome' 'maria'

A constante lógica especifica um valor VERDADEIRO ou


FALSO. Ou seja só existem duas constantes lógicas em FORTRAN,
.TRUE.
.FALSE.

Baseado nas Notas de Física Computacional – Prof. Rino


ÀArmazenamento e representação de dados
Todos os tipos de grandezas, constante ou variável, numérica, lógica
ou simbólica tem um limite de tamanho devido as limitações físicas inerentes
de qualquer computador.

O tamanho da unidade de armazenamento varia de máquina para


máquina. bits : menor unidade (ligado-desligado; 0 ou 1)
byte : tamanho de uma palavra = 8 bits.

Assim, como podemos ter números positivos e negativos, um dos


bits de uma palavra é reservado para o sinal. Em uma palavra de 1 BYTE (8
bits) sobram 7 bits para representar um número.

Lembrando que os números são representados na base 2, vemos que


o maior número possível de ser representado nesta base, tendo somente n
possíveis posições é:
2n -1
Assim, com 7 bits, o maior número inteiro aí armazenado será
27 -1 = 127.
No caso de números reais, os números são armazenados de forma
um pouco diferente. São representados na base 10, ou seja
±[fração].10±n
• 1 bit também é reservado para o sinal
• uma certa quantidade de bits é reservada para a parte fracionária
Baseado nas Notas de Física Computacional – Prof. Rino
• uma parte dos bits é reservada para o expoente, com um dos bits para o sinal
do expoente. A quantidade de bits reservada para a parte fracionária do
número, e consequëntemente para a parte exponencial, também varia de
máquina para máquina. Um exemplo para o FORTRAN for WINDOWS é
dado a seguir: Para um número real, a menor representação envolve 4 bytes,
ou seja 32 bits.
Sinal Fração Expoente

1 bit 23 bits 8 bits

TYPE Nº de Bytes NOTAS (Intervalo de validade)


É possível "juntar"
dois ou mais bytes INTEGER 1 -127 a 127
para se formar uma
palavra maior. A INTEGER 2 -32.767 a 32.767
tabela abaixo INTEGER 4* -2.147.483.647 a 2.147.483.647
sumariza os tipos
de dados. REAL 4* -1.18e-38 a 3.40.e38
precisão de 7-8 dígitos
REAL 8 -2.23e-308 a 1.79e308
precisão de 15-16 dígitos
COMPLEX 4* -1.18e-38 a 3.40.e38
precisão de 7-8 dígitos
COMPLEX 8 -2.23e-308 a 1.79e308
precisão de 15-16 dígitos
LOGICAL 1 valores: .TRUE. e .FALSE.
LOGICAL 4* valores: .TRUE. e .FALSE.
CHARACTER 1* conjunto de caracteres ASCII
* padrão
Baseado nas Notas de Física Computacional – Prof. Rino
Daremos agora uma introdução sobre os comandos específicos do
FORTRAN. Iremos dividir esta parte em :

À Comandos de Entrada e Saída

À Comando FORMAT

À Comandos de Controle e de Programação

À Comandos de Especificação

Baseado nas Notas de Física Computacional – Prof. Rino


COMANDOS de ENTRADA e SAÍDA

Os comandos PRINT, READ, WRITE e ACCEPT são em geral utilizados


juntamente com o comando FORMAT descrito abaixo.
READ
Formato livre: read(*,*) => “lê” direto do teclado.
Formatado: read(3,8) => lê do arquivo 3 no formato 5
ACCEPT
Formato livre: accept*, a,b,c => aceita a,b,c valores direto
do teclado
Formatado: accept 123, x => le x no formato 123
WRITE
Formato livre: write(*,*) => escreve na tela sem
formatação
Formatado: write(2,9) => escreve no arquivo 2 com o
formato 9
PRINT
Formato livre: print*, ‘temperatura’
Formatado: print 32, as
OPEN
Para dar um nome a um arquivo de dados ( de entrada ou
de saída)

Baseado nas Notas de Física Computacional – Prof. Rino


Open (unit=3,file=’dados.dat’,form=’formatted’,status=’unknown’)
A unidade e’ qualquer número. Em geral o número 5 é reservado
para o teclado, o número 6 para saída de tela.
O nome de file, escrito entre aspas simples, é de sua escolha.
O formato pode ser formatted ou unformatted. Normalmente
usamos o primeiro. O unformatted salva os dados em linguagem de máquina, e
portanto não é possível lê-los.

CLOSE
Para fechar o arquivo que foi aberto.
Close(3)
Comando FORMAT : Especificação de formato
Este comando serve para representar corretamente os dados de
saida/entrada de seu programa. É uma maneira de apresentar os dados de
forma legível e elegante.

Ex:
Format(5x,’temperatura (K)’, 5x,’Pressão (Pa)’)
Format(2e12.5)
FORMAT: I – para inteiros : I3 => só interiros com até 3 dígitos => maior
999
I6 => só inteiros com até 6 dígitos => maior 999999
F – para reais: f10.5 significa: número com 10 dígitos tendo 5 casas
de precisão: ex:: _ _ _ 3 .1 4 1 5 9; _ _ - 3 .1 4 1 5 9
Baseado nas Notas de Física Computacional – Prof. Rino
E – para reais na representação científica:
Ex: format(E10.5) . 3 1 4 1 6 E + 0 1;
format(E12.6) 0 . 3 1 4 1 5 9 E + 0 1
A – para caracteres: A3

Baseado nas Notas de Física Computacional – Prof. Rino


COMANDOS de CONTROLE e de PROGRAMAÇÃO
IF
Condicional. Usa as comparações
.lt. => menor do que
.le. => menor ou igual
.gt. => maior do que
.ge. => maior ou igual
.eq. => igual a
.ne. => não igual- diferente

Exemplos:

if(a.lt.5) b=3 => se a for menor do que 5, faça b=3


if(a.gt.b) then se a > b então
c=10 faça c=10
else caso contrário
p=20 faça p=20
endif fim da condição
GOTO
Comando – vá para. Obriga a execução a ir para onde se manda.

Baseado nas Notas de Física Computacional – Prof. Rino


Loop: Do ... ENDDO
Para se repetir algum tipo de instrução um número de vezes que se queira.

Exemplo:

Do I=1,30 Faça I ir de 1 a 30 de um em um
Print*, ‘repetindo’ Para cada I escreve repetindo
Enddo Limite da execução repetitiva
Do k=1,250, 3 Faça k ir de 1 a 250 de 3 em 3
Print*, ‘repetindo’ Para cada I escreve repetindo
Enddo Limite da execução repetitiva
CONTINUE
Como o nome diz, é para continuar a execução a partir daí.
PAUSE
Como o nome sugere, para parar a execução neste ponto.
STOP
END
Este dois comando são sempre usados para terminar o programa. São as
duas últimas instruções do programa.

Baseado nas Notas de Física Computacional – Prof. Rino


COMANDOS de ESPECIFICAÇÃO
São os comandos necessários para especificar qual o tipo de cada
variável, ou seja se é do tipo numérica, lógica ou simbólica, de precisão simples
ou dupla, se é real ou inteira, ou complexa, etc. Vejamos alguns destes
comandos.

IMPLICIT: declara, implicitamente, o tipo do nome simbólico.

INTEGER: declara, explicitamente, o tipo do nome simbólico como inteiro.

REAL: declara, explicitamente, o tipo do nome simbólico como real.

DOUBLE PRECISION: declara, explicitamente, o tipo do nome simbólico


como de precisão dupla.

COMPLEX: declara, explicitamente, o tipo do nome simbólico como


complexo.

CHARACTER: declara, explicitamente, o tipo do nome simbólico como


caractere.
Baseado nas Notas de Física Computacional – Prof. Rino
LOGICAL: declara, explicitamente, o tipo do nome simbólico como lógico.

Exemplos:
integer*2 I, B2, S0
integer*4 SOMA, ITEM, CONT
real *4 A1, XYZ
real *8 ZZ, SOMA
character *10 NOME
implicit double precision (C,D), character (M)

todas as variáveis começando por C e D são de precisão dupla

todas as variáveis começando por M são do tipo caractere de tamanho 1


implicit character*20 (A,B,X-Z)

todas as variáveis começando por A, B, X, Y, e Z são caracteres de tamanho 20


implicit complex (R,S,T), real(I-K)

todas as variáveis começando por R, S, T são complexas e aquelas começando


por I, J, K são reais

Baseado nas Notas de Física Computacional – Prof. Rino


implicit logical (L), integer (H)
todas as variáveis começando por L são lógicas, enquanto todas começando por
H são inteiras
implicit real*8 (A-H, O-Z)
todas as variáveis começando por A até H e de O até Z são do tipo real e de
precisão dupla, enquanto no intervalo, I, J, K, L, M, N são inteiras.

Outros comandos de especificação:

DIMENSION: declara o número de elementos de um conjunto.

EQUIVALENCE: associa a mesma área de memória para duas ou mais


entidades, dentro de uma unidade do programa.

COMMON: reserva área de memória para entidades entre duas ou mais


unidades de programa. São as unidades de memória comuns entre diferentes
unidades de programa.

PARAMETER: atribui um nome simbólico a uma constante

DATA: atribui valores iniciais a variáveis, conjuntos.

Baseado nas Notas de Física Computacional – Prof. Rino


Exemplos:

dimension A(20), F(30,30), P(10,10,10)


dimension G(1:10, -3:12)
parameter (N=200, ANO=365)
parameter(PI=3.141592)
data PI/3.141592/
data A,B/0.12,10.4/
character*10 NOME
dimension A(2),M(3)
data A,J /9.1,-0.03,22/,NOME,M/'PEDRO',5,5,5/
ou
data A,J /9.1,-0.03,22/,NOME,M/'PEDRO',5*2/

resultará em: A(1)=9.1


A(2)=-0.03
J = 22
NOME=PEDRO
M(1)=5, M(2)=5, M(3)=5

Baseado nas Notas de Física Computacional – Prof. Rino


Regras de Ouro da Programação

1. Sempre planeje os projetos antecipadamente.

2. Desenvolva-os por estágios.

3. Modularize-os.

4. Mantenha-o simples.

5. Sempre teste cada estágio.

6. Documente todo o programa.

7. Divirta-se programando.

Baseado nas Notas de Física Computacional – Prof. Rino


Estrutura básica de um Programa

Program nome
*………………………………………………………..
* Pequena descrição sobre o programa, o que ele faz
*………………………………………………………..
comandos de especificação

execução do algorítmo desenvolvido

stop
end
Subroutine subnome
comandos de especificação

return
end
Function FF ou Double Precision Function FF
comandos de especificação

return
end

Baseado nas Notas de Física Computacional – Prof. Rino


Todo programa é escrito com um editor de texto. Há pois a
necessidade a necessidade de um tradutor para que a comunicação desejada
(homem-máquina) seja compreendida. Esta tradução é feita em duas etapas
chamadas de compilação e linkagem, resultando no programa executável capaz
de efetuar aquilo que foi desenvolvido no algoritmo.

Código fonte em
Algoritmo FORTRAM - nome.for ou
nome.f

Compilador
FORTRAN

Código objeto
nome.o

Executável
nome.exe Link

Baseado nas Notas de Física Computacional – Prof. Rino

S-ar putea să vă placă și