Você está na página 1de 48

Programao em Linguagem FORTRAN

1 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Guia bsico de programao em linguagem Fortran 77 e 90

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

Programao em Linguagem FORTRAN

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

CAPTULO 2: ESTRUTURAS DE PROGRAMAO


1. ESTRUTURA SEQENCIAL
2. COMANDO GO TO OU GOTO
3. ESTRUTURA CONDICIONAL
Estrutura Condicional Simples
Estrutura Condicional Composta
Estrutura Condicional Composta Simplificada
4. ESTRUTURAS DE REPETIO
Estruturas de Repetio Simples
DO WHILE (F90)
DO Implcito (WIN)

CAPTULO 3: RECURSOS DE PROGRAMAO


1. DESLOCAMENTO
GOTO Implcito
IF Com Deslocamento
2. DECLARAES E ATRIBUIES AVANADAS
DIMENSION
PARAMETER
TYPE (F90)
DATA
3. DESIGNAO DE MEMRIA
COMMON
BLOCK DATA
4. MODULARIZAO
INCLUDE

20/09/2007 18:50

Programao em Linguagem FORTRAN

3 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

ANEXO A: FUNES INTRNSECAS


1. FUNES TRIGONOMTRICAS
2. FUNES GENRICAS
3. EXPONENCIAIS
4. LOGARITMOS
5. MXIMOS
6. MNIMOS
7. RESTOS
8. RAIZ QUADRADA DE X
9. TRUNCAMENTO DE X
10. ARREDONDAMENTO DE X
11. DIFERENA POSITIVA ENTRE X E Y
12. TIPO DE DADO
13. TRANSFORMAO DO TIPO DE X
14. COMPLEXOS
15. CARACTERES
16. VALORES ABSOLUTOS DE X

ANEXO B: OPES DE ARQUIVOS, LEITURA E ESCRITA


1. ABERTURA DE ARQUIVOS (OPEN)
2. FECHAMENTO DE ARQUIVOS (CLOSE)
3. ESCRITA (WRITE)
4. LEITURA (READ)
5. RECUO TOTAL (REWIND)
6. RECUO DE UM CAMPO (BACKSPACE)

ANEXO C: TABELA DE VALORES ASCII

20/09/2007 18:50

Programao em Linguagem FORTRAN

4 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Captulo 1: Conceitos da Linguagem


1. Introduo
Em FORTRAN existem basicamente duas formas de se escrever um programa: com formulrio fixo (fixed
form) ou com formulrio livre (free form). Sendo este segundo disponvel apenas para os compiladores
mais novos que suportam a programao em FORTRAN 90. Outro ponto importante que existem
comandos vlidos somente para estes novos compiladores (por exemplo Microsoft Developer Studio) que
aceitam programas em FORTRAN 90. Algumas verses dos compliladores baseados em FORTRAN 77
aceitam funes ou comandos criados posteriormente a essa verso, mas no aceitam todas as
inovaes dos compiladores de FORTRAN 90. Para as explicaes ficarem mais claras a seguinte
nomenclatura ser utilizada:

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

Programao em Linguagem FORTRAN

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;

colunas 7 a 72: comandos ou comentrios;


colunas 73 a 80: campos de identificao, so usados pelo compilador, portanto no se deve

escrever nestas colunas.


F90 O programa pode ser escrito em qualquer posio, desde que o modo formulrio livre esteja
ativado. Alguns pontos devem ser observados para este formato:

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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*4 pode ser representado somente por: INTEGER


integer d

! a varivel d inteira do tipo *4

integer*1 a, b, c

! a, b e c so inteiras do tipo *1

integer a/6/, b(2,2)/0,1,2,3/

! 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

Programao em Linguagem FORTRAN

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)

! todas as variveis so reais

integer d

! a varivel d inteira mesmo com a

! 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)/

! c vale 4,0 reais e 0,3 imaginrios

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

Programao em Linguagem FORTRAN

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/

! Fortran no faz diferena

! entre maisculas e minsculas


character data*8,*9 data2,data3 ! data pode conter 8 caracteres
! e data2 e data3 9 caracteres

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

! no se pode usar acentuao

ano = 1999

! no preciso de ; no final

data1 = 12\10\98
data2 = 20\11\98

! as strings no precisam usar

data3 = 15\3\99

! todo o campo a que tem direito

temp(1)= 25.6
temp(2)= 22.4

! atribuindo valores a vetores

temp(3)= 22.8

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

1000 .lt. 500

! falso

20/09/2007 18:50

Programao em Linguagem FORTRAN

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.

10.GT.5 .AND. 20.GT.25

! .FALSE. ou 0

10.GT.5 .OR. 20.GT.25

! .TRUE.

ou 1

.NOT. 20.GT.25

! .TRUE.

ou 1

10 > 5 .XOR. 20 >= 25

! .TRUE.

ou 1

10.GT.5 .NEQV. 25.GT.20

! .FALSE. ou 0

10 < 5 .EQV. 20 <= 25

! .TRUE.

ou 1

10.LT.5 .EQV. 25.GT.20

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

O uso de parnteses pode ser feito para trocar a ordem de prioridade.


(20.GT.10 .AND. 20.GT.25).OR.(10.LT.20 .AND. 10.LT.(3*10))
! .TRUE.

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Outras funes trigonomtricas podem ser encontradas no Anexo A.

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

Outras funes intrnsecas podem ser encontradas no Anexo A.

7. Funes e Subrotinas

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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

! chama a subrotina para converter as

! 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)

! chama a funo com os valores

! corrigidos de T e P

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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.

9. Formatos (leitura ou impresso)

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)

! imprime 2 espaos em branco, uma

! string e um valor inteiro

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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]

Valores Reais com expoente

Gw.d[Ee]

Mesmo que Iw[.m], Ew.d[Ee], Lw e A[w]

Dw.d

Valores Reais de Dupla Preciso

Lw

Valores Lgicos

A[w]

Seqncia de Caracteres

N77 Zw_hexedit Valores Hexadecimais


Valores Binrios
F90 Bw[.m]
Valores Octadecimais
F90 Ow[.m]
F90 ENw.d[Ee] Valores Reais em Notao de Engenharia
F90 ESw.d[Ee] Valores Reais em Notao Cientifica

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

Programao em Linguagem FORTRAN

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

(*, (a10)) nome

write (*, (a15)) nome

=> belo horiz


=>

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

Outros Recursos Para Formatos


Alguns recursos adicionais so permitidos para read ou write.
Formato Uso
string
F90 Q
nH

Transmite uma string para a sada


A varivel recebe o nmero de espaos que o valor ocupa
Transmite os prximos n caracteres para a sada

Tc

Move o ponto de leitura ou escrita para a posio c

TLc

Move o ponto de leitura ou escrita c posies esquerda

TRc

Move o ponto de leitura ou escrita c posies direita

nX

Deixa n posies em branco

SP

Escreve o sinal + onde ele opcional

SS

Omite o sinal + onde ele opcional

Retorna ou padro ss

Muda de linha

N77 \
N77 $
:

Comea a escrever no ponto onde a ultima escrita parou


Comea a escrever no ponto onde a ultima escrita parou
Termina a impresso se no houver mais itens na lista

kP

O nmero multiplicado por 10 elevado -k (se o nmero j possuir expoente no h efeito)

BN

Ignora os espaos em branco

BZ

Transforma os espaos em branco em zeros

20/09/2007 18:50

Programao em Linguagem FORTRAN

20 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Antes ou depois de , , /, \, nH, $ ou : a vrgula opcional.


real a, b
character dia*20
a = 23.99
b = 55.8e-3
dia = 'Segunda-feira'
write (*,'(5x,sp,e10.3e2,2x,en12.3e3)') a, b
write (*,'(/2x,''hoje e '',a8)') dia
produz o seguinte resultado:
+.240E+02

+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

Programao em Linguagem FORTRAN

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

(volta o controle ao primeiro espao do arquivo)

backspace unidade

(volta o controle um campo no arquivo)

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

write(20,*) ' este um '


write(20,*) ' arquivo de '

este um

write(20,*) ' sada '

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

Programao em Linguagem FORTRAN

22 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Captulo 2: Estruturas de Programao


1. Estrutura Seqencial

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

Programao em Linguagem FORTRAN

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

20 write (*,*) ' linha 20'


30 write (*,*) ' linha 30'
end
goto 1
10 write (*,*) ' linha 10'

linha 20
linha 30

1 continue

20/09/2007 18:50

Programao em Linguagem FORTRAN

24 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

20 write (*,*) ' linha 20'


2 continue
30 write (*,*) ' linha 30'
end

3. Estrutura Condicional

Estrutura Condicional Simples


if (expresso de teste) comando
ou
if (expresso de teste) then
seqncia de comandos
end if
Quando a expresso de teste for verdadeira os comandos sero executados, quando for falsa o
programa segue para o prximo comando logo abaixo da estrutura condicional. A primeira opo s
valida quando for executado um nico comando. Este comando pode ser de qualquer tipo, atribuio,
escrita, leitura, goto ou interrupo do programa.

Estrutura Condicional Composta


if (expresso de teste) then
seqncia de comandos 1
else
seqncia de comandos 2
end if
Quando a expresso de teste for falsa a seqncia de comandos 2 ser executada. Mesmo quando s h
um comando na seqncia de comandos 1, no se pode omitir a palavra chave then.
permitido o uso de estruturas condicionais umas dento das outras.

implicit
a=10

Programa
integer (a-z)

Resultado
a<b
c=

30 30 20

b=20

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Estrutura Condicional Composta Simplificada


Uma outra forma de se usar uma estrutura condicional composta (somente N77 e F90) usando o
comando case.
N77
SELECT CASE (exp. case)
CASE (lista de seleo 1)
comandos 1
CASE (lista de seleo 2)
comandos 2
...
CASE (lista de seleo n)

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

END SELECT nome_case

onde exp. case' uma expresso ou constante inteira, lgica

ou literal (somente um caractere

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

Programao em Linguagem FORTRAN

26 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

de dar maior clareza ao programa.


As listas de seleo podem ser da seguinte forma:
Estrutura
case (valor)
case (:valor)
case (valor:)
case (valor1:valor2)
case (valor1,valor2,...,valorn)

Condio para ser verdadeira


Exp. teste igual valor
Exp. teste menor que valor
Exp. teste maior que valor
Exp. teste entre valor1 e valor2
Exp. teste igual valor1 ou igual valor2 ou ... valorn.

No permitida a superposio de valores.


Os valores literais devem vir entre apstrofos e seus valores sero avaliados de acordo com o padro
ASCII. Uma tabela com os valores ASCII pode ser encontrada no Anexo C.
Programa
i=20

Resultado
a=20

select case (i)


case (10)
write (*,*) 'a=10'
case (20)
write (*,*) 'a=20'
case (11,19)
write (*,*) 'a>11 a<19'
end select
end
character i*1

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

Programao em Linguagem FORTRAN

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.

Estruturas de Repetio Simples


r1 if (condio_de_teste) goto r2
comandos
goto r1
r2 continue
Esta uma estrutura de repetio muito simples, mas no recomendada para programao. Estruturas
mais aceitas, pois possuem equivalentes em outras linguagens, so da seguinte forma:
do r1 var=n1,n2,n3
seqncia de comandos
r1 continue
ou
N77 -

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

Programao em Linguagem FORTRAN

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

integer i/1/, j/1/


do while (i)

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

a(3) =.45; a(4) = sin(.5)

---------------

do while(i.le.4)

+449.99999E-003

print'(2x,sp,en16.5e3)',
write (*,*)'

a(i)

---------------

---------------'

+479.42554E-003

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

30 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Captulo 3: Recursos de Programao


1. Deslocamento

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

Programao em Linguagem FORTRAN

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

write (*,*) ' i<2'


i=2
goto 10

write (*,*) ' i=2'


i=3
goto 10

write (*,*) ' i>2'


end

2. Declaraes e Atribuies Avanadas

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

34 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

integer*1 dia

Keila

Agosto

22

end type anivers


type (anivers) :: helder
type (anivers) :: keila
type (anivers) :: carlo
helder=anivers('Helder','Fevereiro',17)
carlo=anivers('Carlo','Fevereiro',12)
keila %nome='Keila'
keila %mes='marco'
keila%dia=24
write(*,*) helder%mes
write(*,*) helder%nome,helder%dia
write(*,*) carlo%nome,carlo%dia
write(*,'(1x,a,a,i2)') keila
end

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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.

Anexo A: Funes Intrnsecas


1. Funes Trigonomtricas
Nome
SIN (X)

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

Programao em Linguagem FORTRAN

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, |x| .le. 1

real*4

real*8, |x| .le. 1

real*8

real*8, |x| .le. 1

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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

Programao em Linguagem FORTRAN

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

11. Diferena Positiva Entre X e Y

( se Y > X o valor zero)


Nome
DIM(X,Y)
DDIM(X,Y)
DIM(X,Y)

Parmetro
real ou inteiro
real*8
inteiro

Resultado
real ou inteiro
real*8
inteiro

12. Tipo de Dado


Nome
ALLOCATED(X)
EPSILON(X)
HUGE(X)
MAXEXPONENT(X)
MINEXPONENT(X)

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

Programao em Linguagem FORTRAN

42 de 48

NEAREST(X,Y)

PRECISION(X)
TINY(X)

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

se y positivo retorna o real


maior real se negativo
o menor real
nmero de casas
real
decimais
menor valor positivo
real
que pode ser
armazenado

real

real
real

13. Transformao do Tipo de X


Nome
INT(X)
INT1(X), INT2(X), INT4(X),
INTC(X)
IFIX(X)
HFIX(X)
JFIX(X)
IDINT(X)
REAL(X)
DREAL(X)
FLOAT(X)
SNGL(X)
DBLE(X)
DFLOAT(X)
CMPLX(X)
DCMPLX(X)
ICHAR(X)
CHAR(X)

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

Programao em Linguagem FORTRAN

43 de 48

INDEX(X,Y)
LEN_TRIM(X)
SCAN(X,Y)
VERIFY(X,Y)

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

procura y em x e retorna a posio


character
tamanho de x menos o nmero de
character
espaos
procura um dos caracteres de y em x e character
retorna o nmero de ocorrncias
procura um dos caracteres de y em x e character
retorna a posio da primeira no
ocorrncia

inteiro
inteiro
inteiro
inteiro

16. Valores Absolutos de X


Nome
ABS(X)
IABS(X)
DABS(X)
CABS(X)
CDABS(X)

Parmetro
complexo ou real
inteiro
real*8
complex*16
complex*16

Resultado
complexo ou real
inteiro
real*8
complex*16
real*8

Os valores absolutos dos dados complexos so calculados pela seguinte formula:

20/09/2007 18:50

Programao em Linguagem FORTRAN

44 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

Anexo B: Opes de Arquivos, Leitura e Escrita


As opes contidas aqui foram baseadas no compilador FORTRAN Visual Workbrench v 1.00. Outros
compiladores possuem outros nomes para estas opes, e podem possuir outras alem destas.
As opes entre colchetes so opcionais. Elas podem vir em qualquer ordem, exceto quando explicitado.

1. Abertura de Arquivos (OPEN)


OPEN ([UNIT=]unit [ , ACCESS=access] [ , BLANK=blanks]
[ , BLOCKSIZE=blocksize] [ , ERR=errlabel] [ , FILE=file]
[ , FORM=form] [ , IOSTAT=iocheck] [ , MODE=mode]
[ , RECL=recl] [ , SHARE=share] [ , STATUS=status])
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit).
unit Expresso inteira. Indica o nmero da unidade.
access Expresso alfanumrica. APPEND , DIRECT ou SEQUENTIAL (padro, quando access
omitido)
blanck Expresso alfanumrica. NULL ignora zeros e espaos, ZERO espaos so substitudos por
zeros. Os formatos BN e BZ podem anular este efeito.
blocksize Expresso inteira. Especifica o tamanho da unidade (em bytes).
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.
file Expresso alfanumrica. Indica o nome do arquivo. Quando omitido o programa pede ao usurio um
nome.
form Expresso alfanumrica. FORMATED (padro quando access=SEQUENTIAL), UNFORMATED
(padro quando access=DIRECT), BINARY.
iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna um nmero negativo se
encontrar a marca de fim de arquivo (EOF), retorna o nmero do erro quando um ocorre.
mode Expresso alfanumrica. READ o arquivo s para leitura, WRITE o arquivo s para escrita,
READWRITE o arquivo pode ser usado para leitura ou escrita.

20/09/2007 18:50

Programao em Linguagem FORTRAN

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

2. Fechamento de Arquivos (CLOSE)


CLOSE ( [UNIT=] unit [,ERR=errlabel] [,IOSTAT=iocheck]
[,STATUS=status] )
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit).
unit Expresso inteira. Indica o nmero da unidade.
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 um nmero negativo se
encontrar a marca de fim de arquivo (EOF), retorna o nmero do erro quando um ocorre.
status Expresso alfanumrica. KEEP indica que o arquiva deve ser mantido, DELETE indica que o
arquivo deve ser apagado.

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

Programao em Linguagem FORTRAN

46 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

houver erro. Quando omitido o efeito determinado pela presena ou no de iocheck.


iocheck Varivel inteira. Retorna zero quando no ocorre erros, retorna o nmero do erro quando um
ocorre.
rec Expresso inteira. Indica a posio do arquivo onde o dado ser impresso. Somente para arquivos
com access=DIRECT.
iolist Lista de variveis serem impressas.

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.

5. Recuo Total (REWIND)


REWIND { unit | ([UNIT=]unit [ , ERR=errlabel] [ , IOSTAT=iocheck])}
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit).

20/09/2007 18:50

Programao em Linguagem FORTRAN

47 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

unit Expresso inteira. Indica o nmero da unidade.


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 o nmero do erro quando um
ocorre.

6. Recuo de um Campo (BACKSPACE)


BACKSPACE {unit|( [UNIT=] unit [,ERR=errlabel] [,IOSTAT=iocheck ]] ) }
UNIT= - Quando omitido, o primeiro valor ser o nmero da unidade (unit).
unit Expresso inteira. Indica o nmero da unidade.
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 o nmero do erro quando um
ocorre.

Anexo C: Tabela de Valores ASCII


Valor ASCII Caracter Correspondente

20/09/2007 18:50

Programao em Linguagem FORTRAN

48 de 48

http://www.geocities.com/helder_pc/fortran/?200720#_Toc13745254

20/09/2007 18:50

Você também pode gostar