Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Fortran
Apostila de Fortran
1 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Programao em
Linguagem FORTRAN
Helder Pereira
Cristo
Belo Horizonte
Junho/2003
NDICE
CAPTULO 1: CONCEITOS DA LINGUAGEM
1. INTRODUO
2. FORMATAO
3. CONCEITOS BSICOS
4. DECLARAO DE VARIVEIS
Tipos de Variveis
Inteiras (INTEGER)
Reais (REAL)
Complexas (COMPLEX)
Alfanumricas (CHARACTER)
Lgicas (LOGICAL)
5. OPERADORES
Atribuio
Operadores Literais
Operadores Aritmticos
Operadores Relacionais
Operadores Lgicos
Prioridade
6. FUNES INTRNSECAS
Funes Trigonomtricas
20/09/2007 18:50
2 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Funes Diversas
7. FUNES E SUBROTINAS
Funes
Subrotinas
8. LEITURA E IMPRESSO
9. FORMATOS (LEITURA OU IMPRESSO)
Outros Recursos Para Formatos
10. ARQUIVOS
Outros Recursos
20/09/2007 18:50
3 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
20/09/2007 18:50
4 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
tpicos precedidos da identificao N77 s so validos para compiladores novos, mas que no
aceitam a programao em FORTRAN 90;
tpicos precedidos de F90 so vlidos apenas para os compiladores que aceitam comandos
FORTRAN 90.
Deve ficar claro que compiladores para FORTRAN 90 aceitam tambm os outros dois tipos, e os
baseados em FORTRAN N77 aceitam todos os comandos dos compiladores mais antigos (FORTRAN 77),
e que a recproca no verdadeira.
Os programas podem ser escritos em qualquer editor de texto, desde que sejam salvos com as extenses
.for ou .f90. Esta segunda forma somente para F90. Os compiladores em N77 e F90 possuem um editor
prprio; que deve ser usado, pois possui muitos recursos adicionais, como por exemplo o destaque das
palavras chaves e identificaes mais claras dos erros de compilao, o que facilita muita a deteco de
falhas na criao dos programas.
2. Formatao
A formatao dos cdigos em FORTRAN, principalmente em formato fixo deve seguir um estilo diferente
dos usados na maioria das linguagens de programao. Estes conceitos iniciais podem no ficar claro
para os iniciantes na linguagem, estes leitores podem observar o exemplo no final do item 8 (Leitura e
impresso) para ter maior clareza da disposio dos comandos em FORTRAN.
Os seguintes critrios devem ser seguidos para se escrever um programa em FORTRAN no modo de
formulrio fixo:
colunas 1 a 5: so usadas para escrever os rtulos label ou nmeros de comando. Estes nmeros
20/09/2007 18:50
5 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
devem ser inteiros e estar totalmente contido nestas colunas. No podem se repetir e no precisam estar
em ordem crescente. Sero usados para que outros comandos possam identificar aquela linha;
coluna 6: qualquer caractere diferente de 0 zero nesta coluna indica que o que vem a seguir
continuao da linha anterior ou da ultima linha que no seja um comentrio (prximo item, conceitos
bsicos). Um mesmo comando pode estar dividido em at 19 linhas de cdigo. Entre as linhas do
comando pode haver linhas em branco ou comentrios;
as linhas de continuao so indicadas pelo smbolo & no fim da sentena, e a prxima linha abaixo
que no seja um comentrio ser tomada como continuao. Deixe sempre um espao entre os
comandos e o smbolo de continuao. permitida a insero de comentrios aps o &;
os rtulos devem ser os primeiros caracteres da linha, e podem estar em qualquer coluna.
3. Conceitos Bsicos
Nesta seo sero apresentados outros conceitos importantes para a construo de programas em
FORTRAN.
Comentrios: no so interpretados pelo computador, um bom programa deve conter muitos para que
fique o mais claro possvel principalmente para quem vai analis-lo. Em FORTRAN a letra c ou o
caractere * na primeira coluna indica que toda a linha um comentrio. Alguns compiladores aceitam o
uso de qualquer caractere diferente de nmeros para iniciar a linha de comentrio. Na linha de comentrio
permitido o uso de qualquer caractere, especial ou no.
N77 o ponto de exclamao ! indica que o que vem aps ele comentrio, ele pode vir em qualquer
posio, inclusive aps os comandos.
Variveis e Nomes de Blocos: devem ter no mximo seis letras, no permitido o uso de caracteres
especiais e no podem comear com um nmero.
N77 podem ter 31 caracteres, inclusive o caractere underscore _
Constantes
20/09/2007 18:50
6 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Numricas: podem conter quaisquer valores reais, inteiros ou complexos. A parte decimal separada
da inteira por um ponto .. Os zeros antes e depois do ponto decimal podem ser omitidos, se no forem
significantes. O expoente decimal indicado pela letra e ou E, deve vir entre o nmero e seu expoente
sem o uso de espaos entre eles. Nmeros negativos assim como a parte exponencial quando for
negativa deve vir precedida do sinal menos -. O sinal + opcional em ambas as partes. Os nmeros
imaginrios devem vir entre parnteses e a parte real deve ser separada por uma vrgula da parte
imaginria.
Alfanumricas: (so as strings, seqncias de letras e/ou nmeros) podem conter qualquer
seqncia de caracteres no especiais. Devem vir entre aspas ou apstrofos . As aspas tm
preferncia sobre os apstrofos, portanto um valor literal pode conter apstrofos, desde que seu valor
venha entre aspas. No permitido o uso de caracteres especiais e letras acentuadas. Uma forma de se
indicar ao compilador que usar um valor alfanumrico o uso de wHvalorliteral, onde w o nmero de
caracteres do valor alfanumrico. Apresar de vlido este formato praticamente no usado nos
programas atuais.
Maisculas e Minsculas: FORTRAN no case sensitive, isto no faz qualquer distino entre
letras maisculas e minsculas. permitido inclusive o uso do nome da varivel escrita de formas
diferentes num mesmo programa. EX.: VAR = var = Var.
Nomes de programa: os programas podem conter no incio o seu nome (program nome_do
_programa), e devem terminar com a palavra end indicando que o que vem a seguir no precisa ser
executado.
4. Declarao de Variveis
As variveis podem ser inteiras, reais ou literais. A declarao de uma varivel deve vir antes que ela seja
usada, se isto no ocorrer o compilador assumir que as variveis que comeam com as letras I at N
como inteiras (INTEGER*4) e todas as outras como reais (REAL*4).
Esta forma de declarao implcita pode ser modificada usando o comando implicit
tipo
(a1-a2,b1-b2,...) sendo a1, a2, b1, b2 quaisquer letras do alfabeto. A vrgula separa os intervalos
de letras e o sinal determina o intervalo. As letras que no estiverem em nenhum dos intervalos ter o
seu tipo dado pela declarao implcita. O comando seguinte indica que as variveis que comeam com
as letras a, b, c e de r at z so do tipo TIPO1.
implicit TIPO1 (a, b, c, r-z)
os espaos so usados para dar clareza e so ignorados pelo compilador. Quando no se deseja que
nenhuma varivel seja declarada implicitamente usa-se o comando implicit none. Se este
comando for usado e uma varivel citada no programa no estiver em nenhuma outra declarao o
complilador acusar um erro.
20/09/2007 18:50
7 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Para se declarar variveis que sejam matrizes e vetores deve-se indicar suas dimenses logo aps o
nome da varivel; entre parnteses, e separadas umas das outras por vrgula. Ex.: a(4,3) indica uma
matriz a de 4 linhas por 3 colunas.
As variveis podem receber valores iniciais usando /valor/, logo aps sua declarao. No caso de
vetores e matrizes devem ser dados os valores para todos os elementos de cada linha em seqncia.
Tipos de Variveis
Inteiras (INTEGER)
Podem assumir os seguintes valores:
INTEGER*1
128 a 127
INTEGER*2
32,768 a 32,767
INTEGER*4
2,147,483,648 a 2,147,483,647
integer*1 a, b, c
! a, b e c so inteiras do tipo *1
! a = 6
! b =
Os nmeros aps o * indicam quantos bytes a varivel ocupa na memria do computador. Esta
observao vlida para todos os tipos de variveis.
20/09/2007 18:50
8 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Reais (REAL)
Preciso simples, 6 casas decimais (padro):
REAL*4 ou REAL `3.402823E+38
Incremento mnimo de `1.175494E-38
Preciso dupla, 15 casas decimais (padro):
REAL*8 ou DOBLE PRECISION `1.797693134862316D+308
Incremento mnimo de `2.225073858507201D-308
A parte exponencial deve ser separada por um d ou D no lugar do e ou E para real do tipo *8.
N77 podem ser usados o e ou E para separar a parte exponencial. No s isso mas tambm todas as
outras funes (item 6 Funes intrnsecas) podem ser iguais a de um real, no sendo necessrio o uso
de funes especiais para este tipo de valor.
implict real(a-z)
integer d
! declarao acima
Complexas (COMPLEX)
Preciso simples, 6 casas decimais:
COMPLEX*8 ou COMPLEX
Preciso dupla, 15 casas decimais:
COMPLEX*16
Os valores que um complexo pode assumir so os mesmos que os reais.
complex c/(4.,.3)/
Alfanumricas (CHARACTER)
CHARACTER NOME*w
Onde w representa o nmero mximo de caracteres que a varivel pode conter dentro do programa.
20/09/2007 18:50
9 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Ou CHARACTER *wvar1,var2
(var1 e var2 possuem o mesmo tamanho w)
Ou CHARACTER (LEN = w) var1, (LEN=w2) var2
(var1 tem tamanho w e var2 tamanho w2)
cHaRaCtEr loucura/alta/
Lgicas (LOGICAL)
LOGICAL NOME
Podem assumir os valores .TRUE. (VERDADEIRO) ou .FALSE. (FALSO)
Ou somente T e F ou ainda 1 e 0 ou diferente de zero e 0.
5. Operadores
Atribuio
A varivel ou identificador que estiver a esquerda do sinal de atribuio = recebem o valor da expresso,
constante ou varivel que estiver direita.
Identificador = Expresso
nome = Engenharia Quimica
ano = 1999
! no preciso de ; no final
data1 = 12\10\98
data2 = 20\11\98
data3 = 15\3\99
temp(1)= 25.6
temp(2)= 22.4
temp(3)= 22.8
20/09/2007 18:50
10 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
F90 estas declaraes poderiam estar na mesma linha desde que fossem separadas por ponto e vrgula
;.
data3 = 15\3\99;temp(1)= 25.6;num_dias= 3
Operadores Literais
Uma funo til para variveis literais a concatenao, ou a juno de duas ou mais palavras. Em
FORTRAN a concatenao feita pelo operador //.
a = tele
b = visao
c = a//b
! c = televisao
Operadores Aritmticos
Executam operaes aritmticas comuns.
FORTRAN Matemtica Tradicional Significado
+
+
soma
Subtrao
*
Multiplicao
/
Diviso
p
**
Potenciao
a
Quando uma varivel inteira recebe o resultado de uma diviso com resto, este resto desprezado ou
seja o valor truncado.
C = A**2 + B**2
! c = a2 + b2
D = E**(1/2)
! d = e1/2
Operadores Relacionais
Comparam variveis, constantes ou expresses e retornam .TRUE., T ou 1 se a comparao for
verdadeira, .FALSE., F ou 0 se a comparao for falsa.
FORTRAN F90 Matemtica Tradicional
Significado
.LT.
<
<
MENOR QUE
.LE.
<=
MENOR OU IGUAL QUE
.EQ.
==
=
IGUAL A
.NE.
/=
DIFERENTE DE
.GT.
>
>
MAIOR QUE
.GE.
>=
MAIOR OU IGUAL QUE
20 .ne. 30
! verdadeiro
! falso
20/09/2007 18:50
11 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Operadores Lgicos
So usados quando so necessrias mais de uma condio relacional ou quando preciso inverter seu
resultado.
FORTRAN
Significado
Juno verdadeiro se os dois operadores
forem verdadeiros
Disjuno verdadeiro se um dos dois
operadores forem verdadeiro
Negao verdadeiro se o operador for falso
Desigualdade Lgica verdadeiro se somente
um dos operadores for verdadeiro
Igualdade Lgica verdadeiro se os dois
operadores forem falsos ou verdadeiros
.AND.
.OR.
.NOT.
.NEQV. ou .XOR.
.EQV.
! .FALSE. ou 0
! .TRUE.
ou 1
.NOT. 20.GT.25
! .TRUE.
ou 1
! .TRUE.
ou 1
! .FALSE. ou 0
! .TRUE.
ou 1
! .FALSE. ou 0
Prioridade
FORTRAN usa a seguinte relao de prioridades:
Operador Prioridade
**
1
*
2
/
2
3
+
3
.EQ.
4
.NE.
4
.GT.
4
.GE.
4
.LT.
4
.LE.
4
.NOT.
5
.AND.
6
.OR.
7
20/09/2007 18:50
12 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
6. Funes Intrnsecas
Existem vrias funes predefinidas em FORTRAN, que podem ser usadas em qualquer parte do
programa.
Funes Trigonomtricas
Nome
SIN (x)
ASIN (x)
COS (x)
ACOS (x)
TAN (x)
ATAN (x)
SINH (x)
COSH (x)
TANH (x)
Definio
Tipo de Argumento Tipo da Funo
seno (radianos). Se x for complexo, a parte real Real ou complexo.
REAL*4
assumida como valor em radianos.
Arcoseno (radianos). Retorna valores na faixa
Real, |x| .le. 1
REAL*4
[-_/2, _/2 ]
Coseno (radianos) Se x for complexo, a parte
Real ou complexo
REAL*4
real assumida como valor em radianos.
Arcocoseno (radianos) ) Retorna valores na faixa
Real, |x| .le. 1
REAL*4
[ 0, _ ]
Tangente (radianos)
Real
REAL*4
Arcotangente (radianos). Retorna valores na
Real
REAL*4
faixa [-_/2, _/2 ]
Seno Hiperblico (radianos)
Real
REAL*4
Coseno Hiperblico (radianos)
Real
REAL*4
Tangente Hiperblica (radianos)
Real
REAL*4
Funes Diversas
Nome
ALOG10 (x)
ALOG (x)
EXP (x)
ABS (x)
IABS (x)
IFIX (x)
FLOAT (x)
DBLE (x)
CMPLX (x)
SIGN (x,y)
MOD (x,y)
AMOD (x,y)
SQRT (x)
Definio
Tipo de Argumento Tipo da Funo
logaritmo de x na base 10
real
real
logaritmo neperiano de x (x > 0)
real
real
o nmero e (base dos logaritmos neperianos)
real
real
elevado a x
valor absoluto de x
real
real
valor absoluto de x
inteiro
inteiro
converso de real para inteiro, truncando
real
inteiro
converso de inteiro para real
inteiro
real
converte para dupla preciso
real
real (dupla preciso)
converte para o tipo complexo
real
complexo
fornece valor positivo de x se y 0 e negativo
real
real
de x se y < 0
resto da diviso de x por y
inteiro
inteiro
resto da diviso de x por y
real
real
raiz quadrada de x (x 0)
real
real
7. Funes e Subrotinas
20/09/2007 18:50
13 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Funes e subrotinas podem ser usadas para economizar espao e tempo de programao j que podem
ser usadas vrias vezes num mesmo programa. Outro ponto importante que elas podem dar ao
programa maior clareza, pois vrias seqncias de clculos ou execues podem vir separadas do
restante dos comandos.
O que d grande versatilidade s funes e subrotinas, so os argumentos passados a elas, que quando
variam produzem resultados diferentes. As funes e subrotinas podem vir em qualquer parte do
programa, mas o mais comum que apaream no fim (aps o end de termino do programa), por motivo
de clareza. As variveis e rtulos usados em funes e subrotinas so locais e por isso devem ser
declarados novamente, podendo ser usados os mesmos nomes de variveis e rtulos de outras funes e
subrotinas ou mesmo do programa principal. Os parmetros necessrios devem ser passados junto com a
chamada da funo ou subrotina, devem vir entre parnteses e separados por virgula. Os nomes das
variveis no precisam ser os mesmos na chamada e definio de uma funo ou subrotina, devendo
apenas estar na mesma ordem.
Funes
Retornam sempre um valor, e a ela podem ser passados qualquer nmero de parmetros. As funes
funcionam de forma semelhante s funes intrnsecas, com a diferena de que agora o programador
que define o que a funo deve gerar como resultado. O tipo da funo deve ser declarado no programa
principal, como se fosse uma varivel comum. Uma funo pode utilizar outras funes.
Chamada:
nome_da_funo(lista_de_parmetros)
Definio:
function nome_da_funo(lista_de_parmetros)
definio e declarao das variveis e constantes locais
seqncia de comandos
return
end
A palavra chave return opcional, pode aparecer em qualquer ponto e mais de uma vez. Ela indica
que o comando deve retornar ao programa principal ou funo ou subrotina que a chamou.
A funo retornar o valor do ultimo comando do tipo:
nome_da_funo = expresso
Exemplo:
volume = gas_ideal(T,P,3) ! volume recebe o valor gerado pela
! funo gas_ideal
20/09/2007 18:50
14 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
function gas_ideal(temp,press,n_mols)
implicit none
real temp,press,n_mols,gas_ideal
gas_ideal = n_mols*8.314*temp/press
return
end
Subrotinas
No retornam nenhum valor, e tambm a elas podem ser passados qualquer nmero de parmetros
inclusive nenhum. As subrotinas podem conter quaisquer tipos de comandos como imprimir resultados,
abrir arquivos (estes sero vistos frente, prximo item Leitura e Impresso) ou executar clculos. Como
ocorrem com as funes, as subrotinas podem chamar outras subrotinas ou funes.
Chamada:
call nome_da_subrotina (lista_de_parmetros)
Definio:
subroutine nome_da_subrotina (lista_de_parmetros)
definio e declarao das variveis e constantes locais
seqncia de comandos
return
end
A palavra chave return opcional.
Exemplo:
call converte_unidades
! unidades
subroutine converte_unidades
implicit none
real temp,press,n_mols,gas_ideal
T = temp + 273.15
P = press*101325
volume = gas_ideal(T,P,3)
! corrigidos de T e P
20/09/2007 18:50
15 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
end
8. Leitura e Impresso
Na maior parte dos programas preciso haver uma interao entre o programa e o usurio. Essa
interao pode ser feita em FORTRAN pelos comandos de leitura e escrita de dados. Esses comandos na
sua forma mais simplificada possuem a seguinte estrutura:
leitura :
read (unidade, formato) lista_de_parmetros
impresso:
write (unidade, formato) lista_de_parmetros
ou
print formato, lista_de_parmetros
Onde lista_de_parmetros representa os dados que sero impressos, e devem vir separados por
vrgula. Podendo conter variveis ou expresses alfanumricas, estas ltimas devem vir entre apstrofos
. unidade representa a unidade onde os dados sero impressos ou de onde sero lidos; tela, teclado,
impressora ou arquivo. formato pode conter uma lista de formatos de impresso (prximo item,
Formatos), um rtulo que indique um comando format (que contenha a lista de formatos) ou o smbolo
* que indica impresso ou leitura de forma livre.
As unidades 6 e * se no forem definidas dentro do programa, sero consideradas como a tela do
computador (write ou print). Da mesma forma as unidades 5 ou * so definidas como o teclado
(read). O comando print imprime sempre os resultados na unidade definida por * ou na tela caso no
haja nenhuma definio para de uma unidade especificada pelo *.
Na leitura os dados devem vir separados por espaos ou vir na linha seguinte. Caso se tenham mais
dados em uma linha do que os que sero lidos por um comando read eles sero desprezados, inclusive
pelo prximo comando read. Na escrita os dados viro um aps os outros separados por espaos (no
caso de strings viro sem espaos de separao), ou na linha seguinte quando no houver mais
espao. O prximo comando write ou print comear a escrever na linha seguinte.
F90 para que se leia ou escreva dados na mesma linha mesmo aps mudar o comando pode-se usar a
opo advance=opcao no comando anterior. Onde opcao pode ser yes ou no e indica se o
comando deve ou no avanar automaticamente para a prxima linha. So usados somente nos
comandos read e write onde a opo formato no seja livre.
write (*,2,advance=no) Engenharia
write (*,2) Quimica
20/09/2007 18:50
16 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
2 format(a)
imprime: Engenharia Quimica
a significa que ser impressa uma string de qualquer tamanho (item 9, Formatos).
Outras opes de impresso e leitura podem ser encontradas no Anexo B.
Os formatos servem para que os dados sejam impressos ou lidos de uma forma especfica, determinada
pelo programador. Os formatos so compostos por uma seqncia de especificaes que determinaro
como os dados sero processados. Cada uma dessas especificaes deve vir separada por vrgulas.
Pode-se ainda imprimir constantes numricas e alfanumricas, sendo que esta ltima deve vir entre
apstrofos . O uso do * no lugar do formato indica que todos os dados sero impresso ou lidos de
forma livre, com o nmero de casas especificado pelo prprio compilador. um recurso til para se evitar
erros.
O FORTRAN no considera a primeira coluna da unidade de leitura e impresso quando a sada ou
entrada formatada, por isso deve-se incluir uma casa de impresso em branco a mais para dados. Para
formato livre no necessrio pois o FORTRAN os posiciona automaticamente.
Quando mais de um dado usar a mesma especificao, ela pode ser feita da seguinte forma:
nespecificao1, n2especificao2 ou n(especificao1, especificao2, ...), onde
n e n2 representam o nmero de vezes que a especificao ou seqncia de especificaes deve se
repetir.
Caso o nmero de especificaes seja menor que o de variveis a serem lidas ou impressas, a ultima
especificao ou a ultima seqncia, caso seja usado o recurso n(especificao1,
especificao2, ...), ser repetida at que se complete o nmero necessrio. Isto no valido
para constantes inclusas nos comandos de leitura e impresso.
Quando o nmero de especificaes maior que os de dados a serem impressos as ultimas sero
desprezadas.
A forma de se declarar os formatos a seguinte:
r format (especificao1, especificao2, ...)
onde r um numero inteiro, e representa o rtulo do format. Um mesmo format pode ser usado por
vrios comandos de escrita e leitura.
10
format (2x,a,I)
20/09/2007 18:50
17 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
N77 o formato pode vir entre apstrofos e parnteses (esp.1, esp2,..), dentro do prprio
comando de impresso ou leitura.
print (esp.), var1
write (*, (esp.1,esp.2)) var1,var2
read (*, (esp.1,esp.2)) var1,var2
As strings devem vir entre apstrofos duplos (string) nesse formato.
20/09/2007 18:50
18 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Formato
Iw[.m]
Uso
Valores Inteiros
Fw.d
Valores Reais
Ew.d[Ee]
Gw.d[Ee]
Dw.d
Lw
Valores Lgicos
A[w]
Seqncia de Caracteres
w representa o tamanho do campo a ser impresso ou lido, m representa o nmero de zeros que vir
antes do nmero, d o nmero de casas decimais e e o nmero de casas para o expoente.
O ponto decimal, o e do expoente e o sinal - devem ser contados ao se dar o tamanho do campo (w).
Ao ler um dado que no possui ponto decimal e no seu formato esperado um, o compilador ler este
dado como se l houvesse um ponto.
12345
read (*,(f5.3)) a
=> a = 12.345
Quando o ponto existe mas no est na posio especificada, a sua posio original mantida.
12.345
read (*,(f5.4)) a
=> a = 12.345
A notao com zeros m s vlida quando m maior que o nmero de casas que o nmero ocuparia no
formato livre.
a = 555
print (i5.4),a
=>
0555
Nas notaes com expoente (ENw.d[Ee], ESw.d[Ee], ...) no se pode omitir o E ou e. Sempre que
houver este termo, a parte exponencial vai existir independente do seu valor.
a = 12.345
b = 12345.789e6
write (*,1) a,b
1 format ( a=,e10.4e3, e b=,e10.4e3)
=> a=.1235E+002 e b=.1235E+011
20/09/2007 18:50
19 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Caso as strings sejam maiores que o espao reservado a elas, sero tomados apenas os w primeiros
caracteres. Se forem menores, elas sero alinhadas a direita e os outros espaos deixados em branco.
belo horizonte
read
belo horiz
F90 os valores dos campos podem ser variveis desde que venham entre <var1>. No valido para
print.
a = 5
b = FORTRAN
write (*,(a<a>)) b
=>
FORTR
Para valores numricos que precisam de mais casas de impresso que as indicadas no format, sero
impressos somente * naquele campo.
pi = 3.1416
print (1x,E7.3e2), pi
=> *******
print (1x,E8.3e2), pi
=> .314E+01
Tc
TLc
TRc
nX
SP
SS
Retorna ou padro ss
Muda de linha
N77 \
N77 $
:
kP
BN
BZ
20/09/2007 18:50
20 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
+55.800E-003
hoje e Segunda-
10. Arquivos
Quando se deseja trabalhar com grandes quantidades de dados, o melhor armazen-los numa unidade
de memria secundria, ou seja em arquivos. Um programa pode gerar tantos dados que todos eles no
caberiam na tela de uma s vez, e ainda seriam perdidos ao finalizar o programa. Os dados salvos em
arquivos podem ser usados pelo prprio programa ou exportados para serem processados de outra forma.
Arquivos de leitura economizam um tempo precioso para o usurio do programa pois ele no vai precisar
enviar dados via teclado, e com arquivos milhares de dados podem ser lidos em fraes de segundos.
O primeiro passo para se usar arquivos em FORTRAN indicar ao programa qual o nome do arquivo e
o nmero da unidade referente a ele.
open (unidade,file=nome.ext)
onde unidade deve ser um inteiro maior ou igual a zero, e uma referncia a este arquivo. O nmero da
unidade deve vir no comando read ou write indicando que os dados sero retirados ou armazenados
nesta unidade. A disposio dos dados em arquivos a mesma utilizada nas unidades de entrada e sada
padro (Item 8, Leitura e Impresso), com uma nica diferena, as strings devem vir entre apstrofos . A
abertura do arquivo pode ser feita em qualquer parte do programa (inclusive dentro de funes e
subrotinas), desde que venha antes de um comando que o utilize.
F90 o rtulo unidade pode ser uma string.
Outras opes para abertura e fechamento de arquivos podem ser encontradas no Anexo B.
Apesar de se poder usar qualquer extenso de arquivo ou at omiti-la, as extenses .dat para leitura e
.out para sada so mais comumente encontradas.
20/09/2007 18:50
21 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Quando no for utilizado o comando open, alguns compiladores emitiro uma mensagem na tela
pedindo um nome, podendo o usurio escolher um nome diferente a cada vez que o programa for
executado. Em outros compiladores sero dados nomes padro como fort.1, fort.2, etc para cada arquivo
utilizado que no foi aberto. Todos os arquivos devem estar ou sero criados no mesmo diretrio em que
estiver o programa a menos que se d como nome o caminho para um outro diretrio. Os caminhos
seguem o mesmo padro do DOS.
Um arquivo pode tambm ser fechado, isto far com que o FORTRAN coloque uma marca de fim de
arquivo naquele ponto, esta marca pode ser identificada por outro comando ou funo (Anexos A e B).
close (unidade,status=estado)
ou
endfile unidade
onde status=estado opcional. Estado pode ser keep que mantm o arquivo na memria (este
padro esta opo omitida), ou delete que apaga o arquivo da memria.
Arquivos fechados podem ser reabertos em qualquer parte do programa.
Outros Recursos
rewind unidade
backspace unidade
Programa
character *15a,b,c
open(20,file='arqui.out')
open(30,file='arqui.dat')
Arquivo arqui.dat
' Qumica' ' Fsica'
' Engenharia'
read (30,*) a
Arquivo arqui.out
este um
arquivo de
read (30,*) b
sada
rewind 30
Qumica
read (30,*) c
Engenharia
Qumica
write(20,*) a
write(20,*) b,c
end
20/09/2007 18:50
22 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Os programas em FORTRAN devem conter os comandos escritos na ordem em que sero executados,
com exceo das funes, subrotinas e laos de repetio. Portanto um programa em FORTRAN deve
seguir o seguinte padro:
declarao 1
declarao 2
...
declarao n
comando 1
comando 2
...
comando n
end
onde as declaraes so opcionais (item 4 Captulo 1).
O comando end indica o fim do programa. Se o programador preferir pode finalizar o programa
prematuramente usando os comandos stop ou call exit.
Programa
integer*1 a,b
Resultado
10
a=10
20
b=20
30.000000
c=30
write (*,*) a
write (*,*) b
write (*,*) c
end
integer*1 a,b
a=10
10
20
20/09/2007 18:50
23 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
b=20
c=30
write (*,*) a
write (*,*) b
stop
write (*,*) c
end
integer*1 a,b
10
a=10
b=20
c=30
write (*,*) a
call exit
write (*,*) b
write (*,*) c
end
2. Comando GO TO ou GOTO
O quando se deseja que o comando do programa avance ou recue em sua estrutura de forma no
seqencial, usa-se o comando goto ou go to.
goto r
onde r um rtulo de uma linha que possui ou no um comando. Como uma linha rotulada no pode estar
em branco pode-se usar a palavra chave continue, que no ir interferir em nada no programa.
Programa
goto 20
10 write (*,*) ' linha 10'
Resultado
linha 20
linha 30
linha 20
linha 30
1 continue
20/09/2007 18:50
24 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
3. Estrutura Condicional
implicit
a=10
Programa
integer (a-z)
Resultado
a<b
c=
30 30 20
b=20
20/09/2007 18:50
25 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
c=30
if (a.lt.b) then
write (*,*) ' a<b'
a=b+10
else
write (*,*) ' a>b'
b=a-5
end if
if (c.ge.20) write(*,*)' c=',c, a, b
end
F90
nome_case: SELECT CASE (exp. case)
CASE (lista de seleo 1)
comandos 1
CASE (lista de seleo 2)
comandos 2
...
CASE (lista de seleo n)
comandos n
comandos n
CASE DEFAULT
CASE DEFAULT
comandos d
comandos d
END SELECT
character*1). Caso o valor de exp. case estiver na lista de seleo 1, os comandos 1 sero
executados. Se o valor no estiver na lista de seleo 1 o computador ir avaliar a lista de
seleo 2, se for verdadeira sero executados os comandos 2 e assim at terminar os comandos
case (lista de seleo n). O comando case default opcional, e faz com que os
comandos d sejam executados caso nenhuma das outras avaliaes sejam verdadeiras. nome_case
opcional e deve seguir as mesmas regras usadas para dar nomes as variveis. A sua utilidade apenas
20/09/2007 18:50
26 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Resultado
a=20
i esta entre d e m
i='h'
valor_i: select case (i)
case ('a','b','c')
write (*,*) 'i=a ou b ou c'
case ('d':'m')
write (*,*) 'i esta entre d e m'
case ('D':'M')
write (*,*) 'i esta entre D e M'
end select valor_i
end
20/09/2007 18:50
27 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
importante observar que as letras maisculas e minsculas possuem valores ASCII diferentes.
4. Estruturas de Repetio
Quando o mesmo comando precisa ser executado vrias vezes at que se atinja uma certa condio ou
um nmero certo de repeties, o melhor usar as estruturas de repetio. Estas estruturas so bem
simples e podem economizar vrias linhas de comando.
do var=n1,n2,n3
seqncia de comandos
end do
'var uma varivel inteira ou real que recebe inicialmente o valor n1, a seqncia de comandos se
repete, e o valor de var aumenta de n3 a cada vez que o comando volta para a linha do do. A
repetio s para quando o valor de var ultrapassa n2.
Caso o programa exija uma contagem regressiva o valor de n3 deve ser negativo e n1 maior que n2.
A palavra chave end do pode ser escrita como enddo. n1, n2 e n3 podem ser constantes ou
variveis inteiras ou reais, positivas ou negativas. Quando n3 for igual a um ele pode ser omitido.
DO WHILE (F90)
Uma forma de se usar uma expresso de teste no comando do, o uso do do while.
do while(exp. teste)
20/09/2007 18:50
28 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
seqncia de comandos
end do
Enquanto exp. teste for verdadeira a seqncia de comandos ser executada.
Resultado
1.000000000000000
Programa
real*8 a,b
a=0
9.921976672293290E-001
b=0
9.689124217106447E-001
1 if(a.lt.0) goto 2
9.305076219123143E-001
a=cos(b)
8.775825618903728E-001
b= b+.125
8.109631195052179E-001
write (*,*) a
7.316888688738209E-001
goto 1
6.409968581633251E-001
2 continue
5.403023058681398E-001
end
4.311765167986662E-001
3.153223623952687E-001
1.945477079889872E-001
7.073720166770291E-002
-5.417713502693632E-002
2
1
j=j+1
if(j.eq.5) i=0
print *,j,i
end do
end
real*8 a(4)
+2.97646E+000
i = 1; a(1) = 2.97645984
---------------
a(2) = 576.74e5
+57.67400E+006
---------------
do while(i.le.4)
+449.99999E-003
print'(2x,sp,en16.5e3)',
write (*,*)'
a(i)
---------------
---------------'
+479.42554E-003
20/09/2007 18:50
29 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
i = i + 1
---------------
end do
end
do i=9,12
09
print '(2x,I2.2)',i
10
enddo
11
end
12
DO Implcito (WIN)
Nos comandos read e write possvel usar uma estrutura de repetio semelhante ao DO, mas de
forma implcita e mais simplificada.
read(unidade,formato)(lista_de_parmetros, var=n1,n2,n3)
Onde var=n1,n2,n3 tem o mesmo significado que na estrutura DO. Podem ser usadas vrias
estruturas deste tipo em um mesmo read ou write desde que venham separadas por parnteses. Quando
impressos desta forma, os dados ficam na mesma linha. Para leitura eles podem vir na seqncia correta
na mesma linha ou em linhas diferentes. Os parmetros em formato sero usados at que se atinja o seu
final, quando isto acontecer o comando muda de linha e os formatos so usados novamente desde o
comeo.
Programa
integer a(5,3), b(3)
Resultado
21 31
11 -
do i=1,5
41 -
51 -
101
do j=1,3
12 -
22 -
32
a(i,j)=10*i+j
42 -
52 -
108
b(j)=100+j**3
13 -
23 -
33
enddo
43 -
53 -
127
enddo
write (*,1) ((a(i,j), i=1,5) &
,b(j), j=1,3)
1 format ( 2x,i4,' - ',i5,' - ',i4)
end
20/09/2007 18:50
30 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
GOTO Implcito
Outra forma de usar o goto a seguinte:
goto (r1, r2, ..., rn) varivel
Onde varivel uma varivel ou expresso inteira que deve ter valor mximo igual ao nmero de
rtulos que esto dentro dos parnteses. Quando esta varivel tiver valor 1 o comando do programa vai
para a linha rotulada com r1, quando tiver valor 2 vai para a linha com o rtulo r2, e assim por diante. Se
o valor de varivel for maior que o nmero de rtulos o comando do programa vai para a linha
imediatamente abaixo do goto.
Programa
i=2
Resultado
o valor de i=2
goto (10,20,15) i
10 write (*,*) ' o valor de i=1'
goto 1
20 write (*,*) ' o valor de i=2'
go to 1
15 write (*,*) ' o valor de i=3'
1
continue
end
IF Com Deslocamento
Uma outra maneira de se deslocar num programa, usando agora um comando if a seguinte:
if (exp. numrica) r1,r2,r3
exp. numrica no pode ser complexa. r1, r2, r3 so rtulos. Se o valor de exp. numrica for
menor que zero o comando vai para a linha com o rtulo r1, quando for igual a zero o comando vai para
linha com o rtulo r2 e quando for maior que zero vai para r3.
A exp. numrica pode ser uma expresso que gere como valores 0 (zero) que ser considerado como
20/09/2007 18:50
31 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
.false. ou qualquer nmero diferente de 0 (zero) que ser considerado como .true..
Resultado
Programa
i=1
i<2
10 if(i-2) 1,2,3
i=2
i>2
DIMENSION
Uma outra forma de se declarar vetores e matrizes, com a vantagem de se poderem especificar os ndices
mnimos e mximos em cada direo usando o comando dimension.
tipo var1,var2,...,varn
dimension var1(Li1:Ls1), var2(Li2:Ls2),..., varn(Lin:Lsn)
ou
tipo var1(Li1:Ls1), var2(Li2:Ls2), ...,varn(Lin:Lsn)
tipo pode ser qualquer tipo de varivel inteira, real, lgica, complexa ou literal. Li1, Li2,..., Lin so os
ndices inferiores, e Ls1, Ls2,..., Ln so os ndices superiores da matriz ou vetor. Os valores de Li e Ls
podem ser positivos, nulos ou negativos desde que sejam inteiros. Quando o valor de Li omitido, o valor
um usado como padro. As variveis podem ter duas ou mais dimenses, sendo declaradas da mesma
forma, com cada dimenso separada das outras por vrgulas.
var(Li1:Ls1, Li2:Ls2, ...,Lin:Lsn)
integer a
Programa
Resultado
a(-03,+01)=-03
dimension a(-3:1,3)
a(-03,+02)=+09
20/09/2007 18:50
32 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
do i=-3,1
a(-03,+03)=-27
do j=1,3
a(-02,+01)=-02
a(i,j)=i**j
a(-02,+02)=+04
print 1,'a(',i,',',j,')=',a(i,j)
a(-02,+03)=-08
1 format(1x,sp,a,i3.2,a,i3.2
a(-01,+01)=-01
&
,a,i3.2)
a(-01,+02)=+01
enddo
a(-01,+03)=-01
enddo
a(+00,+01)=+00
end
a(+00,+02)=+00
a(+00,+03)=+00
a(+01,+01)=+01
a(+01,+02)=+01
a(+01,+03)=+01
PARAMETER
Uma constante pode ser representada por um smbolo no lugar do seu valor, ou seja o valor de _, por
exemplo, pode ser sempre que preciso referenciado como pi, no lugar de se escrever sempre 3.14159.
Bastando para isso o uso do comando parameter. A diferena entre um valor com parameter e uma
varivel comum que com parameter o valor no pode ser modificado em nenhuma parte do programa
ou ser lido atravs de um comando read. O tipo da constante deve ser especificado antes ou sero
usadas s atribuies implcitas (item 4 Captulo 1).
tipo constante1, constante2,...
parameter ( constante1 = valor, constante2 = valor,...)
Os parnteses so opcionais. tipo pode ser integer, real ou qualquer outro tipo de varivel. Em
parameter no se podem declarar vetores e matrizes.
F90 Uma forma simplificada de se atribuir o valor e o tipo da constante feito da seguinte forma.
tipo , parameter :: constante1=valor, constante2=valor,...
real pi,r(3),a
Programa
real pi,r(3)
resultado
6.291800
parameter (pi=3.1459)
parameter (pi=3.1459)
25.167200
do i=1,3
do i=1,3
56.626200
r=i**2
r=i**2
20/09/2007 18:50
33 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
a=area(r(i),pi)
call area(r(i),pi)
print *,a
enddo
enddo
end
end
subroutine area(r,pi)
function area(r,pi)
real r,a
real r,area
a=2*pi*r
area=2*pi*r
print *,a
return
return
end
end
TYPE (F90)
Quando vrias variveis esto relacionadas entre si, o melhor agrup-las em grupos type, de forma
que possam ser acessadas pelo nome do grupo. Este um recurso semelhante programao orientada
a objetos.
Declarao:
type nome_type
declaraes
end type nome_type
nome_type o nome do bloco, e deve seguir as mesmas regras para nomes de variveis. declaraes
so declaraes de variveis (tipo varivel). Este bloco pode ser usado vrias vezes, associando
cada novo grupo um nome. O bloco com esse novo nome ter as mesmas variveis feitas na declarao.
Associao:
type (nome_type) :: nome
Atribuio:
nome = nome_type (valor das variveis)
ou
nome%nome_varivel = valor
Programa
type anivers
Resultado
Fevereiro
character nome*10
Helder
17
character mes*10
Carlo
12
20/09/2007 18:50
34 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
integer*1 dia
Keila
Agosto
22
DATA
O modo mais estruturado de se atribuir valores iniciais a variveis pelo comando data. As diferenas
entre o data e parameter que as variveis declaradas em data podem alterar seu valor durante o
programa, e essas variveis podem ser vetores ou matrizes.
data var1/valor1/,var2/valor2/,...,varn/valorn/
ou
data var1,var2,...,varn/valor1,valor2,...,valorn/
Os valores de vetores e matrizes devem ser declarados todos de uma vez, com a separao entre eles
feita por vrgula.
Programa
integer h(3,4),a,b,c
Resultado
010203040506
logical l1,l2
070809101112
character cor*5
05
03
data h/1,2,3,4,5,6,7,8,9,10,11,12/
data a/5/,b/3/,c/10/
10
F
preto
data l1,l2,cor/.true.,.false.,'preto'/
20/09/2007 18:50
35 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
print '(2x,6i2.2,/,2x,6i2.2)',h
print '(2x,3(i2.2,2x))',a,b,c
print '(2x,l7,2x,l7)',l1,l2
print *,cor
end
3. Designao de Memria
COMMON
Quando muitos dados devem ser passados a funes ou subrotinas, um recurso til o common, que
pode resumir este servio. Um mesmo common pode ser usado vrias vezes e carregar muitas variveis
ao mesmo tempo. Este comando deve aparecer de forma igual no incio do programa principal (logo aps
a definio dos tipos de variveis) e tambm no incio de cada funo ou subrotina que o utilize.
common /nome/lista de variveis/nome2/lista de variveis2,...
O nome do bloco opcional, e se for repetido, as variveis sero agrupadas em um mesmo bloco. A
ausncia do nome e o nome / / tm o mesmo significado. As variveis de um common sem nome no
podem ser declaradas pelo comando data. Uma mesma varivel no pode ocupar mais de um comando
common.
A ordem em que as variveis aparecem no common devem ser iguais em qualquer parte do programa,
apesar de seus nomes poderem variar de uma subrotina ou funo para outras.
Na declarao de um common recomendvel que se siga uma ordem crescente do tamanho das
variveis. O tamanho de uma varivel dado pelo nmero de bites que ela ocupa. A seqncia para essa
declarao : logical, character, integer, real, vetores e matrizes. As matrizes e vetores devem seguir esta
mesma seqncia de tamanhos (vetores logical, vetores character, ...). As strings so consideradas
vetores de caracteres.
Alguns compiladores apenas mostraro mensagens de advertncia quando est seqncia estiver
incorreta, outros no avaliam esta ordem e consideram como corretas quaisquer ordem em que as
variveis aparecerem.
Programa
common /func/a,b
common /
/c,d
common e,f
data
Resultado
12.000
2.000
4.000
a,b/1,2/
20/09/2007 18:50
36 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
c=3;d=4;e=5
f=funcao(4)
call subrotina(5)
end
! funes e subrotinas
function funcao(t)
common /func/a,b
a=a*2
funcao=t+a+b
return
end
subroutine subrotina(r)
common /func/a,b
common c,d,e,f
r=r+c+d+e
print '(3(2x,f6.3,/))',r,a,f
return
end
BLOCK DATA
As variveis declaradas em um common com nome podem receber valores iniciais de uma forma mais
estruturada. No block data podem ser usados os seguintes recursos: common(com nome), parameter,
data, dimension e variveis derivadas de um type.
block data nome_bloco
declaraes e atribuies
end
O nome_bloco opcional e deve seguir as mesmas regras para nomes de variveis.
4. Modularizao
INCLUDE
20/09/2007 18:50
37 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
Declaraes, atribuies, common e outros comados que estejam em um arquivo de texto com o mesmo
formato usado no programa podem ser adicionados ao programa principal atravs do comando
include. Esses arquivos podem ser adicionados a outros arquivos include ao programa principal e a
funes e subrotinas. O mesmo arquivo pode ser usado vrias vezes. Os arquivos sero interpretados
como parte do programa, e por isso devem seguir as mesmas regras do programa normal escrito em
FORTRAN.
include nome.ext
ou
include nome.ext
Nome e extenso podem ser qualquer um, mas a extenso .inc a mais comum para este tipo de
arquivo. permitido o uso de caminhos completos no lugar do nome.
SIND (X)
CSIN (X)
CDSIN (X)
DSIN (X)
DSIND (X)
ASIN (X)
ASIND (X)
DASIN (X)
DASIND (X)
COS (X)
COSD (X)
CCOS (X)
Definio
Parmetro
seno (radianos). se x for
real ou complexo.
complexo, a parte real
assumida como valor em
radianos.
seno (graus se x for
real ou complexo
complexo, a parte real
assumida como valor em
graus.
seno (radianos)
complex*4
seno (radianos)
complex*8
seno (radianos)
real*8
seno (graus)
real*8
Arcoseno (radianos). retorna real, |x| .le. 1
valores na faixa [-_/2, _/2 ]
Arcoseno (graus) retorna
real |x| .le. 1
valores na faixa [-90, 90 ]
Arcoseno (radianos). retorna real*8
valores na faixa [-_/2, _/2 ]
Arcoseno (graus) retorna
real*8
valores na faixa [-90, 90 ]
coseno (radianos) se x for real ou complexo
complexo, a parte real
assumida como valor em
radianos.
coseno (graus) se x for
real ou complexo
complexo, a parte real
assumida como valor em
graus.
coseno (radianos)
complex*4
Resultado
real*4
real*4
complex*4
complex*8
real*8
real*8
real*4
real*4
real*8
real*8
real*4
real*4
complex*4
20/09/2007 18:50
38 de 48
CDCOS (X)
DCOS (X)
DCOSD (X)
AOS (X)
coseno (radianos)
coseno (radianos)
coseno (graus)
Arcocoseno (radianos) )
retorna valores na faixa [ 0,
_]
ACOSD (X)
Arcocoseno (graus) retorna
valores na faixa [ 0, 180 ]
DACOS (X)
Arcocoseno (radianos) )
retorna valores na faixa [ 0,
_]
DACOSD (X)
Arcocoseno (graus) )
retorna valores na faixa [ 0,
180 ]
TAN (X)
tangente (radianos)
TAND (X)
tangente (graus)
DTAN (X)
tangente (radianos)
DTAND (X)
tangente (graus)
COTAN (X)
cotangente (radianos)
DCOTAN (X)
cotangente (radianos)
Nome
Definio
ATAN (X)
Arcotangente (radianos). )
retorna valores na faixa
[-_/2, _/2 ]
ATAND (X)
Arcotangente (graus). )
retorna valores na faixa
[-90, 90 ]
DATAN (X)
Arcotangente (radianos).
retorna valores na faixa
[-_/2, _/2 ]
DATAND (X)
Arcotangente (graus).
retorna valores na faixa
[-90, 90 ]
ATAN2 (Y,X)
Arcotangente (y / x) em
radianos. retorna valores na
faixa [-_,_ ]
ATAN2D (Y,X)
Arcotangente (y / x) em
graus. retorna valores na
faixa [-180, 180 ]
DATAN2 (Y,X)
Arcotangente (y / x) em
radianos retorna valores na
faixa [-_,_ ])
DATAN2D (Y,X) Arcotangente (y / x) em
graus. retorna valores na
faixa [-180, 180 ]
SINH (X)
seno hiperblico (radianos)
DSINH (X)
seno hiperblico (radianos)
COSH (X)
coseno hiperblico
(radianos)
DCOSH (X)
coseno hiperblico
(radianos)
TANH (X)
tangente hiperblica
(radianos)
DTANH (X)
tangente hiperblica
(radianos)
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
complex*8
real*8
real*8
real, |x| .le. 1
complex*8
real*8
real*8
real*4
real*4
real*8
real*8
real
real
real*8
real*8
real. x no pode ser 0.
real*8. x no pode ser 0.
Parmetro
real
real*4
real*4
real*8
real*8
real*4
real*8
Resultado
real*4
real
real*4
real*8
real*8
real*8
real*8
real. x e y no podem
ambos ser 0.
real*4
real. x e no podem
ambos ser 0.
real*4
real*8 x e y no podem
ambos ser 0.
real*8
real*8 x e y no podem
ambos ser 0.
real*8
real
real*8
real
real*4
real*8
real*4
real*8
real*8
real
real*4
real*8
real*8
20/09/2007 18:50
39 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
2. Funes Genricas
Nome
DPROD(A,B)
EOF(UNIT)
SIGN(X,Y)
ISIGN(X,Y)
DSIGN(X,Y)
Definio
a*b
verifica o final da unidade
unit
retorna x com o sinal de y
retorna x com o sinal de y
retorna x com o sinal de y
Parmetro
real*4, real*4
integer*2
Resultado
real*8
logical
real ou inteiro
inteiro
real*8
real ou inteiro
inteiro
real*8
20/09/2007 18:50
40 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
3. Exponenciais
O nmero e elevado a X (eX )
Nome
CDEXP (X)
CEXP (X)
DEXP (X)
EXP (X)
Parmetro
complex*16
complex*8
real*8
real, inteiro ou complexo
Resultado
complex*16
complex*8
real*8
mesmo que o parmetro
4. Logaritmos
Nome
LOG (X)
Definio
logaritmo natural
Parmetro
real ou complexo
ALOG (X)
DLOG (X)
CLOG (X)
CDLOG (X)
LOG10 (X)
logaritmo natural
logaritmo natural
logaritmo natural
logaritmo natural
logaritmo na base 10
real*4
real*8
complex*8
complex*16
real
ALOG10 (X)
DLOG10 (X)
logaritmo na base 10
logaritmo na base 10
real*4
real*8
Resultado
mesmo que o
parmetro
real*4
real*8
complex*8
complex*16
mesmo que o
parmetro
real*4
real*8
5. Mximos
Nome
MAX(X1,X2,..)
Definio
maior valor
Parmetro
qualquer tipo
MAX0(X1,X2,..)
AMAX1(X1,X2,..)
AMAX0(X1,X2,..)
MAX1(X1,X2,..)
DMAX1(X1,X2,..)
maior valor
maior valor
maior valor
maior valor
maior valor
inteiro
real
inteiro
real
real*8
Resultado
maio tipo entre os
valores
inteiro
real
real
inteiro
real*8
6. Mnimos
Semelhante as funes de mximo (MIN, MIN0, AMIN1, AMIN0, MIN1, DMIN1)
7. Restos
Resto da diviso de X por Y
Nome
Parmetro
Resultado
20/09/2007 18:50
41 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
MOD(X,Y)
AMOD(X,Y)
DMOD(X,Y)
real ou inteiro
real*4
real*8
real ou inteiro
real*4
real*8
8. Raiz Quadrada de X
Nome
Parmetro
real ou complexo
real*8
complex*8
complex*16
SQRT(X)
DSQRT(X)
CSQRT(X)
CDSQRT(X)
Resultado
real ou complexo
real*8
complex*8
complex*16
9. Truncamento de X
Nome
Parmetro
AINT(X)
DINT(X)
Resultado
real
real*8
real
real*8
10. Arredondamento de X
Nome
NINT(X)
DNINT(X)
ANINT(X)
IDNINT
Parmetro
Resultado
real
real*8
real
real*8
inteiro
real*8
real
inteiro
Parmetro
real ou inteiro
real*8
inteiro
Resultado
real ou inteiro
real*8
inteiro
Definio
.true. se a for vetor ou
matriz
menor valor que pode
ser incrementado
maior valor possvel
maior expoente
possvel
menor expoente
possvel
Parmetro
Resultado
todos
lgico
real
real
real ou inteiro
real
real ou inteiro
real
real
real
20/09/2007 18:50
42 de 48
NEAREST(X,Y)
PRECISION(X)
TINY(X)
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
real
real
real
Parmetro
real, inteiro ou complexo
real, inteiro ou complexo
real*4
real, inteiro ou complexo
real, inteiro ou complexo
real*8
real, inteiro ou complexo
complex*16
inteiro
real*8
real*8 ou complexo
real*8 ou complexo
inteiro, real, complexo
inteiro, real, complexo
ASCII
integer*4
Resultado
inteiro
integer*1, integer*2, integer*4, c
integer
inteiro
integer*2
integer*4
inteiro
real*4
real*8
real*4
real*4
real*8
real*8
complexo
complex*16
inteiro
ASCII
14. Complexos
Nome
IMAG(X)
DIMAG(X)
AIMAG(X)
CONJG(X)
DCONJG(X)
Definio
retorna a parte
imaginria
retorna a parte
imaginria
retorna a parte
imaginria
retorna o complexo
conjugado
retorna o complexo
conjugado
Parmetro
complexo
Resultado
real
complex*16
real*8
complex*8
real*4
complex*8
complex*8
complex*16
complex*16
15. Caracteres
Nome
LEN(X)
LGE(X,Y)
LGT(X,Y)
LLE(X,Y)
LLT(X,Y)
Definio
tamanho de x
compara x e y se x
compara x e y se x
compara x e y se x
compara x e y se x
>= y .true.
> y .true.
<= y .true.
< y .true.
Parmetro
character
character
character
character
character
Resultado
inteiro
logical
logical
logical
logical
20/09/2007 18:50
43 de 48
INDEX(X,Y)
LEN_TRIM(X)
SCAN(X,Y)
VERIFY(X,Y)
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
inteiro
inteiro
inteiro
inteiro
Parmetro
complexo ou real
inteiro
real*8
complex*16
complex*16
Resultado
complexo ou real
inteiro
real*8
complex*16
real*8
20/09/2007 18:50
44 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
20/09/2007 18:50
45 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
recl Expresso inteira. Representa o tamanho de cada dado em bytes. obrigatrio para
access=DIRECT.
share Expresso alfanumrica. DENYRW ignora mode=READWRITE, DENYWR ignora
mode=WRITE, DENYRD ignora mode=READ, DENYNONE ignora qualquer mode,
status Expresso alfanumrica. OLD indica que o arquiva j existe, NEW indica que o arquivo deve
ser criado, UNKOWN (padro) verifica a existencia do arquivo, se ele no existir ser criado um,
SCRATHC
3. Escrita (WRITE)
WRITE ([UNIT=] unit [ , [{[ FMT=] format] | [ NML=] nml }]
[ , ERR=errlabel] [ , IOSTAT=iocheck] [ , REC=rec] ) iolist
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit). Se FMT= ou NML= forem
omitidos, format ou nml devem ser o segundo parmetro.
unit Expresso inteira. Indica o nmero da unidade.
format Expresso inteira. Indica o rtulo de um comando format. Expresso alfanumrica. Expresso
que contenha os formatos de impresso.
nml Lista de variveis serem impressas, se estiver presente iolist deve ser omitida.
errlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se
20/09/2007 18:50
46 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
4. Leitura (READ)
READ { { format, | nml } | ([UNIT=]unit [ , [ {[FMT=] format] |
[NML=]nmlspec}] [ , END=endlabel] [ , ERR=errlabel] [ , IOSTAT=iocheck]
[, REC=rec])} iolist
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit). Se FMT= ou NML= forem
omitidos, format ou nml devem ser o segundo parmetro.
unit Expresso inteira. Indica o nmero da unidade.
format Expresso inteira. Indica o rtulo de um comando format. Expresso alfanumrica. Expresso
que contenha os formatos de leitura.
nml Lista de variveis serem lidas, se estiver presente iolist deve ser omitida.
endlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se
a marca de fim de arquivo (EOF) for encontrada.
errlabel Expresso inteira. Indica o rtulo de uma linha no mesmo arquivo para onde o comando vai se
houver erro. Quando omitido o efeito determinado pela presena ou no de iocheck.
iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna 1 se encontrar EOF, retorna o
nmero do erro quando um ocorre.
rec Expresso inteira. Indica a posio do arquivo de onde o dado ser lido.
iolist Lista de variveis serem lidas.
20/09/2007 18:50
47 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
20/09/2007 18:50
48 de 48
http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254
20/09/2007 18:50