24
Prof a . Rita de Cássia Mota Universidade Federal do Amazonas Departamento de Física Física Computacional

Notas de Fortran da Prof Rita

Embed Size (px)

DESCRIPTION

As notas não são minhas, estou postando apenas para teste, desculpas a prof. Rita se ela não gostar.

Citation preview

Page 1: Notas de Fortran da Prof Rita

Profa. Rita de Cássia Mota

Universidade Federal do Amazonas

Departamento de Física

Física Computacional

Page 2: Notas de Fortran da Prof Rita

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

Ementa:Linguagem e AlgoritmoPrecisão da máquinaDerivação numéricaQuadratura de uma funçãoEquações diferenciais ordinárias

técnicas de soluçõesalgoritmo de Euler , Runge-Kuttadinâmica em uma dimensão dinâmica em duas dimensõesdinâmica em três dimensões

Projetos:Multiplicação de inteirosMultiplicação de reaisderivada de uma função: fórmula de 3 e 5 pontosquadratura de uma função: trapézio, Simpsonresfriamento de Newton e/ou variação da pressão

com alturaqueda livre, queda com atritolançamento de um corpo: com e sem atritooscilador harmônicosistema planetário: leis de Kepler

Page 3: Notas de Fortran da Prof Rita

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

IntroduçãoLinguagem de programação: Como qualquer povo, há a necessidade

de se ter um meio de comunicação. No nosso caso comunicaçãopessoa <=> computador.

Existem várias linguagens: BASIC Beginner's All-purpose Symbolic Instruction CodeCOBOL COmmon Business Oriented LanguageALGOL ALGOrithmic LanguagePL/I Programming Language OnePASCALC, 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(*)

Page 4: Notas de Fortran da Prof Rita

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

72

20

19

18

17

16

15

14

13

12

11

110

987654321

Page 5: Notas de Fortran da Prof Rita

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

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

Caracteres da linguagemAlfabéticos: A a B b C c D d E e F f I i J j etcNuméricos: 0 1 2 3 4 5 6 7 8 9Especiais: + - * / (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 decimal0 -3 3254 -22876

Constantes reais: Números que apresentam o ponto decimal3.141592 -2.71 -0.0015

OBS: Números do tipo 3x105, 0. 00004 podem ser escritos na forma3x105 -> 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.

Page 6: Notas de Fortran da Prof Rita

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:

REGRA PARA OS NOMES DAS VARIÁVEIS1.- 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.

Numéricas

Reais

Inteiras

Alfanuméricas

Lógicas

Page 7: Notas de Fortran da Prof Rita

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

Expressões aritméticasEm 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

Page 8: Notas de Fortran da Prof Rita

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

sin(A) seno de A, sendo A dado em radianoscos(A) cosseno de Atan(A) tangente de Aexp(A) exponencial de A ( eA )log(A) logaritmo neperiano de Alog10(A) logaritmo base 10 de Aatan(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 escrevermosX=2.5

estaremos atribuindo à posição de memória denominada de X o valor 2.5. Assim, ao fazermos

A= X+Yestaremos 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.

Page 9: Notas de Fortran da Prof Rita

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

LOGICAUm 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.

Page 10: Notas de Fortran da Prof Rita

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

Armazenamento e representação de dadosTodos 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 -1Assim, 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

Page 11: Notas de Fortran da Prof Rita

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.

8 bits23 bits1 bit

ExpoenteFraçãoSinal

É possível "juntar" dois ou mais bytes para se formar uma palavra maior. A tabela abaixo sumariza os tipos de dados.

* padrão

conjunto de caracteres ASCII1*CHARACTER

valores: .TRUE. e .FALSE.4*LOGICAL

valores: .TRUE. e .FALSE.1LOGICAL

-2.23e-308 a 1.79e308precisão de 15-16 dígitos

8COMPLEX

-1.18e-38 a 3.40.e38precisão de 7-8 dígitos

4*COMPLEX

-2.23e-308 a 1.79e308precisão de 15-16 dígitos

8REAL

-1.18e-38 a 3.40.e38precisão de 7-8 dígitos

4*REAL

-2.147.483.647 a 2.147.483.6474*INTEGER

-32.767 a 32.7672INTEGER

-127 a 1271INTEGER

NOTAS (Intervalo de validade)Nº de BytesTYPE

Page 12: Notas de Fortran da Prof Rita

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

Page 13: Notas de Fortran da Prof Rita

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.

READFormato livre: read(*,*) => “lê” direto do teclado.Formatado: read(3,8) => lê do arquivo 3 no formato 5

ACCEPTFormato livre: accept*, a,b,c => aceita a,b,c valores direto

do tecladoFormatado: accept 123, x => le x no formato 123

WRITEFormato livre: write(*,*) => escreve na tela sem

formataçãoFormatado: write(2,9) => escreve no arquivo 2 com o

formato 9PRINT

Formato livre: print*, ‘temperatura’Formatado: print 32, as

OPENPara dar um nome a um arquivo de dados ( de entrada ou

de saída)

Page 14: Notas de Fortran da Prof Rita

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.

CLOSEPara fechar o arquivo que foi aberto.Close(3)

Comando FORMAT : Especificação de formatoEste 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

Page 15: Notas de Fortran da Prof Rita

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 1A – para caracteres: A3

Page 16: Notas de Fortran da Prof Rita

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

COMANDOS de CONTROLE e de PROGRAMAÇÃOIFCondicional. 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=3if(a.gt.b) then se a > b então

c=10 faça c=10else caso contrário

p=20 faça p=20endif fim da condiçãoGOTO

Comando – vá para. Obriga a execução a ir para onde se manda.

Page 17: Notas de Fortran da Prof Rita

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

Loop: Do ... ENDDOPara 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 umPrint*, ‘repetindo’ Para cada I escreve repetindoEnddo Limite da execução repetitiva

Do k=1,250, 3 Faça k ir de 1 a 250 de 3 em 3Print*, ‘repetindo’ Para cada I escreve repetindoEnddo Limite da execução repetitiva

CONTINUEComo o nome diz, é para continuar a execução a partir daí.PAUSEComo o nome sugere, para parar a execução neste ponto.STOPENDEste dois comando são sempre usados para terminar o programa. São as duas últimas instruções do programa.

Page 18: Notas de Fortran da Prof Rita

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.

Page 19: Notas de Fortran da Prof Rita

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, S0integer*4 SOMA, ITEM, CONTreal *4 A1, XYZreal *8 ZZ, SOMAcharacter *10 NOMEimplicit 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 1implicit character*20 (A,B,X-Z)

todas as variáveis começando por A, B, X, Y, e Z são caracteres de tamanho 20implicit 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

Page 20: Notas de Fortran da Prof Rita

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.

Page 21: Notas de Fortran da Prof Rita

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 NOMEdimension 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.1A(2)=-0.03J = 22NOME=PEDROM(1)=5, M(2)=5, M(3)=5

Page 22: Notas de Fortran da Prof Rita

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.

Page 23: Notas de Fortran da Prof Rita

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…stopendSubroutine subnomecomandos de especificação…returnendFunction FF ou Double Precision Function FFcomandos de especificação…returnend

Page 24: Notas de Fortran da Prof Rita

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.

AlgoritmoCódigo fonte em FORTRAM - nome.for ou nome.f

Compilador FORTRAN

Link

Código objetonome.o

Executávelnome.exe