CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Programação em
FORTRAN – V
João Manuel R. S. Tavares
Output no écran
Exemplo de escrita em formato livre (*):
radius = 7.2345121
PRINT *,'Radius = ',radius,' cm'
Resultado:
Radius = 7.2345121
@2001 - João Tavares
João Manuel R. S. Tavares
cm
CFAC: Programação em FORTRAN - V
2
1
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Formato livre
@2001 - João Tavares
ƒ
O formato livre é simples e fácil de utilizar
(por exemplo com as instruções PRINT * e
READ *).
ƒ
Assume entradas numéricas, e portanto
limitadas.
ƒ
Utiliza sempre a máxima resolução possível.
ƒ
Em programas com vários dados de entrada
e/ou saída, pode originar interfaces
complexas e desagradáveis.
CFAC: Programação em FORTRAN - V
3
I/O formatada
Sintaxe geral para I/O formatada:
PRINT '(< Formato >)', < variável(eis) >
READ '(< Formato >)', < variável(eis) >
< Formato > é um especificador de formatação.
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
4
2
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Especificadores de
formatação I
Especificadores de formatação para
variáveis consistem numa letra e
dígito(s):
A : Variável caracter;
ƒI : Variável inteira;
ƒF : Variável real;
ƒE : Variável real, forma exponencial;
ƒ...
ƒ
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
5
Especificadores de
formatação II
Exemplos:
A10 : Uma variável com 10 caracteres de
comprimento (String).
Exemplo: 'Hello '.
I8 : Inteiro com 8 dígitos de comprimento.
F6.2 : Variável real, 2 casas decimais, 6 dígitos
de comprimento incluindo o ponto
decimal e o sinal negativo.
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
6
3
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Especificadores de
formatação III
Exemplos de números formatados com F6.2
Número
C1
C2
C3
C4
C5
C6
345.19
3
4
5
.
1
9
1
.
2
0
3
.
4
5
5
.
0
0
*
*
*
*
1.2
-23.45
-
2
5
Sem nº de dígitos
suficiente.
9999.99
@2001 - João Tavares
*
*
CFAC: Programação em FORTRAN - V
7
Especificadores de
formatação IV
Exemplos:
READ '(A30)', string1
READ '(A30, 2I4)', string2, num1, num2
(2 valores inteiros)
PRINT '("Answer = ", F6.2)', answer
(“ / ” e “ X ” são nova linha e espaço.)
PRINT '(/"A = ", I2, 2X, "B = ", F10.1, //)', a, b
(2 espaços)
PRINT '("Enter a number ")'
READ *, number
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
(2 novas linhas)
8
4
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Especificadores de
formatação V
Exemplos:
WRITE (*, '(A\)') ' ANGULO : '
* - escrita no canal por defeito (monitor), \ - para continuar na
mesma linha (no FORCE utilizar $ em vez de \) após a escrita.
Equivalente a: PRINT '(A\)', ' ANGULO : '
READ (*, *) TETA
1º * - leitura a partir do canal por defeito (teclado), 2º * - leitura
em formato livre.
Equivalente a: READ *, TETA
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
9
Especificadores de
formatação VI
Exemplos (estilo antigo: com etiquetas
numéricas):
100 FORMAT (/'A = ', I2, 2X, 'B = ', F10.1//)
PRINT 100, a, b
READ 200, int1, int2, int3
200 FORMAT (3I5)
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
10
5
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Ficheiros de dados I
ƒ
Em primeiro lugar, é necessário abrir o
ficheiro de dados.
Depois, realiza-se a leitura ou a escrita dos
dados.
Finalmente, fecha-se o ficheiro.
ƒ
Ficheiros de dados são análogos a livros.
ƒ
Instrução OPEN em FORTRAN:
ƒ
ƒ
OPEN (UNIT = x, FILE = y, STATUS = z)
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
11
Ficheiros de dados II
UNIT deve ser > 6 (UNIT 5 = teclado e UNIT 6 = écran).
Exemplos:
OPEN (UNIT = 20, FILE = 'data.dat', STATUS = 'NEW')
Exemplos para FILE:
FILE = 'data.dat'
FILE = '/disk/n/gps/data/data.dat'
FILE = file_name
Exemplos para STATUS:
STATUS = 'NEW'
STATUS = 'OLD'
STATUS = 'UNKNOWN'
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
12
6
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Ficheiros de dados III
Escrita e Leitura:
Desde que um ficheiro esteja aberto pode-se utilizar
as instruções READ e WRITE para leitura e escrita
de dados:
READ (< unit >, < formato >) < variável(eis) >
WRITE (< unit >, < formato >) < variável(eis) >
A instrução WRITE também pode ser utilizada para escrever no ecrã.
Por exemplo: WRITE (*, *) 'Ola'
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
13
Ficheiros de dados IV
Exemplos:
READ (20, *) num1, num2, num3
WRITE (20, '(5X, I5, 10X, 3F5.1)') a, b, c, d
READ (20, '(2F10.5)') data1(loop), data2(loop)
(ficheiro em questão está associado à unidade 20)
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
14
7
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Ficheiros de dados V
Fecho de um ficheiro de dados:
CLOSE (UNIT = < unit > | < unit >)
Exemplos:
CLOSE (UNIT = 20) ou CLOSE (20)
Deve-se fechar os ficheiros quando já
não são necessários!
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
15
Ficheiros de dados VI
Apontador do ficheiro:
O apontador do ficheiro é posicionado no início
quando o ficheiro é aberto.
A instrução:
REWIND (UNIT = < unit > | < unit >)
move o apontador para o início do mesmo.
Exemplo:
REWIND (20) ou REWIND (UNIT = 20)
@2001 - João Tavares
João Manuel R. S. Tavares
CFAC: Programação em FORTRAN - V
16
8
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Ficheiros de dados VII
Apontador do ficheiro:
O apontador do ficheiro é posicionado no início
quando o ficheiro é aberto.
A instrução:
BACKSPACE (UNIT = < unit > | < unit >)
recua o apontador um campo.
Exemplo:
BACKSPACE (20) ou BACKSPACE (UNIT = 20)
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
17
Ficheiros de dados VIII
Determinação de erros:
IOSTAT: É utilizado para testar se um ficheiro
(aberto com status 'OLD' ou 'UNKNOWN')
existe.
Exemplo:
OPEN (IOSTAT = I, UNIT = 20,
& FILE = 'test.dat', STATUS = 'OLD')
(indicação de
continuação de linha)
@2001 - João Tavares
João Manuel R. S. Tavares
IOSTAT retorna por I um valor inteiro.
CFAC: Programação em FORTRAN - V
18
9
CFAC: Programação em FORTRAN - V
FEUP/DEMEGI-SDI
Ficheiros de dados IX
Os valores inteiros de IOSTAT retornados são:
ƒ
ƒ
ƒ
= 0 : Ficheiro aberto sem erros.
> 0 : Erro, ficheiro não encontrado.
< 0 : Como a condição 0, mas no fim do
ficheiro (EOF), ficheiro vazio.
Como testar EOF (fim de ficheiro) durante a
leitura de dados?
@2001 - João Tavares
CFAC: Programação em FORTRAN - V
19
Ficheiros de dados X
Utilização da opção END numa instrução READ
permite testar o EOF.
Condição sempre
verdadeira.
Exemplo:
DO WHILE ( .NOT. 0 )
(No fim do
ficheiro salta para
a linha 100.)
@2001 - João Tavares
João Manuel R. S. Tavares
READ (25, '(I5)', END = 100) data(i)
i = i+1
END DO
100 CONTINUE
CFAC: Programação em FORTRAN - V
20
10
Download

Programação em FORTRAN – V