Notas de Fortran da Prof Rita

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

description

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

Transcript of Notas de Fortran da Prof Rita

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