Você está na página 1de 38

Universidade de So Paulo - USP

Instituto de Cincias Matemticas de So Carlos - ICMSC


Departamento de Cincias da Computao e Estatstica - SCE

Manual de Utilizao e
Principais Comandos da
Linguagem Fortran (verso 5.1)

Claudia Regina Milar


Profa. Dra. Roseli Francelin

So Carlos, junho de 1996

1. Introduo
Este trabalho destina-se aos alunos de graduao interessados em obter
conhecimentos bsicos em programao de computador utilizando a Linguagem
Fortran (verso 5.1). O trabalho pretende apenas descrever os camandos
principais da Linguagem Fortran (verso 5.1), dando nfase nas mudanas que
ocorreram nesta nova verso.
Nas primeiras sees, descrito alguns conceitos bsicos sobre a estrutura de um
computador e seu funcionamento. Em seguida, o que um sistema de
computao, um breve comentrio respeito do sistema operacional MS-DOS e a
descrio de algoritmos e de uma linguagem utilizada para elabor-los. Logo
aps, apresentado os principais comandos da Linguagem Fortran (verso 5.1) e
finalmente a concluso.

2. Estrutura Bsica de um Computador


Os computadores evoluiram muito desde a sua inveno, esto cada vez menores
e mais poderosos, mas independente de seu tamanho e complexidade, eles
possuem os seguintes componentes bsicos: a Unidade Central
de
Processamento (UCP ou CPU) que engloba a Unidade Lgica Aritmtica (ULA)
e a Unidade de Controle, a Memria e as Uunidades de Entrada e Sada.
A memria do computador dividida em dois tipos: memria principal e
memria secundria ou externa. A memria principal ou memria RAM como
mais conhecida, onde as informaes recebidas e processadas pelo computador
so armazenadas durante a sesso de trabalho. RAM a abreviao de "Random
Access Memory", ou Memria de Acesso Aleatrio. As informaes gravadas
nela ficam disponveis enquanto o computador est ligado. A memria secundria
composta de dispositivos eletromagnticos, mais conhecidos como discos.
Existem dois tipos de disco: discos rgidos com grande capacidade de
armazenamento de informaes e de acesso extremamente rpido e os discos
flexveis ou disquetes que so dispositivos com menor capacidade.
A memria do computador, tanto a principal quanto a secundria, dividida em
unidades pequenas e de mesmo tamanho, chamadas palavras, tendo cada uma seu

prprio endereo. Cada palavra capaz de armazenar uma informao, como por
exemplo, o resultado de uma operao aritmtica.
As unidades de sada de dados so normalmente os monitores, onde so
mostrados os comandos que so passados para o computador e os resultados das
informaes depois de processadas e interpretadas; e as impressoras onde
normalmente so impressos os dados em forma de relatrios, arquivos fontes de
programas, cartas, etc.
As unidades de entrada de dados fornecem um meio pelo qual as informaes
so transmitidas ao computador para serem interpretadas e processadas. Os mais
populares so o teclado e o disco.
Na Unidade Lgica Aritmtica (ULA) so processadas todas as operaes
lgicas e aritmticas do computador.
A Unidade de Controle controla a ao de todos os dispositivos do computador.
Operando sob o controle das instrues do programador que est na memria
principal, a Unidade de Controle faz com que o dispositivo de entrada leia os
dados, transfere valores adequados da memria para a ULA, armazena e recupera
dados e resultados intermedirios guardados na memria principal, e, transfere os
resultados para o dispositivo de sada.

3. Funcionamento de um Computador
Um programa uma seqncia de instrues que descrevem as aes que se
deseja que o computador realize, ou seja, um programa consiste na traduo de
um algoritmo em uma forma inteligvel para a mquina, o que feito com o uso
de uma linguagem de programao. Um programa especificado (escrito) em uma
linguagem de alto nvel denominado programa fonte.
Para que um programa possa ser executado, ele deve passar pelo processo de
Compilao, onde se traduzir o programa fonte para o programa objeto, que so
arquivos de cdigo objeto com a extenso .OBJ. Estes arquivos contm um
cdigo binrio que no pode ser entendido na exibio e nem na impresso. Em
seguida, o processo de Composio chamado, o editor de ligao (linker) toma
um ou mais arquivos .OBJ e processa-os juntos para produzir um nico arquivo

executvel com a extenso .EXE. O editor de ligao pode tambm processar o


cdigo proveniente de bibliotecas de rotinas pr-compiladas fornecidas pelo
Fortran. E, finalmente, o programa poder ser executado. A Figura 1 mostra as
etapas de um processamento.

Etapa 1:
COMPILAO

Etapa 2:
COMPOSIO

Etapa 3:
EXECUO

Programa
Fonte

Tradutor
(Compilador)

Subprogramas
Compilados
Independentemente

Dados

Programa
Objeto

Editor
de Ligao

Programa
Executvel

Resultados

Figura 1 - Etapas de um processamento.

Um programa fonte pode ser escrito em vrias linguagens, mas geralmente, as


que so utilizadas so chamadas de Linguagens de Alto Nvel. Estas linguagens
expressam as solues usando uma notao mais dirigida para os problemas, mais
prxima da linguagem natural.
A Linguagem FORTRAN nasceu em 1956 e foi a primeira linguagem de
programao de alto nvel a ser proposta. Foi sugerida visando a resoluo de
problemas da rea cientfica atravs do uso de computadores. Seu nome uma
composio de FORmula TRANslation.

4. Sistemas de Computao

Um Sistema de Computao consiste de hardware (dispositivos fsicos),


programas do sistema e programas aplicativos, como mostra a Figura 2. Um
computador seria apenas um amontoado de fios e dispositivos eletromecnicos
sem nenhuma utilidade prtica se no existisse o software, que o conjunto de
programas e dados que juntamente com o hardware proporcionam ao usurio o
controle e utilizao dos recursos oferecidos pelo computador. Com o software o
computador pode armazenar, processar, recuperar informaes, alm de editar
cartas e programas e proporcionar diversos outros recursos. O software pode ser
dividido em dois tipos: programas do sistema, que fazem o gerenciamento e o
controle das operaes bsicas do computador e programas aplicativos, que so
programas desenvolvidos para atender as necessidades dos mais diversos tipos de
usurios. O mais importante dos programas do sistema o sistema operacional,
que controla todos os recursos do computador e fornece a base para a utilizao
dos mais diversos tipos de aplicativos.
Sistema
Bancrio

Reservas
Areas

Jogos

Compiladores

Editores

Interpretador

Aplicativos

Programas do
Sistema
Sistema Operacional

Linguagem de Mquina
Hardware
Mquina

Figura 2 - Esquema de um Sistema de Computao.

5. Sistema Operacional DOS


O Sistema Operacional DOS ("Disk Operating System") da Microsoft um dos
mais utilizados no mundo. Ele chamado de sistema de gerenciamento de disco
porque trata do gerenciamento de discos, arquivos em disco e do fluxo de

informaes entre as vrias partes de um sistema de computao. O MS-DOS


trabalha com comandos que informam ao sistema as tarefas a serem realizadas.
Esses comandos permitem a realizao das seguintes tarefas:

gerenciar arquivos e diretrios;


manuteno de discos (rgidos e flexveis);
configurar o hardware;
otimizar o uso da memria;
melhorar o desempenho dos programas;
personalizar o MS-DOS.

O MS-DOS tem vrias verses desde o seu lanamento em 1981. A primeira


verso foi denominada e numerada como 1.00. A partir de ento foram feitas
vrias revises e adicionados novos recursos para adaptar o MS-DOS
sofisticao cada vez maior dos computadores e corrigir os erros apresentados.
Por isso vrios comandos e conceitos bsicos do MS-DOS podem ser aplicados
para qualquer verso. A verso do MS-DOS mostrada toda vez que o
computador ligado e o mesmo trazido ("carregado") para a memria do
computador.

6. Algoritmos
Um conceito bsico de programao o de algoritmo. Programar basicamente
construir algoritmos. Algoritmo uma seqncia ordenada e sem ambigidade de
instrues que levam soluo de um determinado problema. Um algoritmo deve
ser detalhado suficientemente at o ponto onde o executor (agente) possa
compreender. Alguns exemplos de algoritmos so:
receita de bolo
indicao de um endereo residencial
planta residencial
Exemplo de um algoritmo para a utilizao de um telefone:
INCIO
Retire o fone do gancho
Disque o nmero desejado
Converse
Recoloque o fone no gancho

FIM
Suponha que se quer instruir um rob domstico para dar recados. Na forma
acima, este algoritmo no est adequado, uma vez que no pressupe alguns
problemas. H detalhes essenciais que no foram especificados:
linha ocupada
linha errada
ligao no se completar
preciso detalhar mais o algoritmo acima para que o rob saiba agir quando algo
acontecer.
INCIO
Retire o fone do gancho
Se o telefone funciona ento
Incio
Disque o nmero desejado
Se a linha no est ocupada ento
Incio
Espere um tempo
Se atenderem ento
Incio
Converse
Fim
Fim
Fim
Recoloque o fone no gancho
FIM
O algoritmo est completo? E no caso de ligao errada?
INCIO
Retire o fone do gancho
Se o telefone funciona ento
Incio
Disque o nmero desejado
Se a linha no est ocupada ento
Incio
Espere um tempo
Se atenderem ento
Incio
Se o nmero digitado est correto ento
Incio
Converse

Fim
Fim
Fim
Fim
Recoloque o fone no gancho
FIM
Exemplo de um algoritmo que l vrios nmeros e seleciona o menor deles.
INCIO
Leia um nmero
Repita o processo
Leia outro nmero
Se este nmero for menor que o anterior ento
Guarde este nmero
Jogue fora o anterior
Seno
Guarde o anterior
Jogue este fora
Fim
At ler todos os nmeros
Exiba o nmero guardado
FIM
Exerccios:
1. Elabore um algoritmo para mudar um pneu furado. Admita que esto
disponveis um macaco e outro pneu em boas condies.
2. Elabore um algoritmo para fazer pipoca, usando manteiga, sal e milho de
pipoca.

7. Linguagem Pseudo-Cdigo
Existem vrias formas de se construir um algoritmo: atravs de pseudo-cdigo,
fluxogramas e cartas NS. A seguir descrita a linguagem pseudo-cdigo para a
elaborao de algoritmos.

7.1 Dados, Tipos de Dados e Operaes Primitivas


O objetivo principal de um computador manipular dados ou informaes. A
maioria dos computadores capaz de lidar com vrios tipos diferentes de dados.
Os tipos de dados so:

Numricos: inteiros e reais.


No numricos: caracteres e lgicos.
Exemplos:
Inteiros:

13

-6

1000 20

Reais:

23.8 -1378.2

-8.8

-233
-42.321

As fraes devem ser armazenadas na forma decimal:


5.32 x 10-2
1.29 x 103
0.528 x 10-10
1234567810 123456 x 104 ou 0.123456 x 1010
Caracteres: ' A '

'B'

'2'

'$'

'+'

'='

Cadeia de Caracteres um conjunto de caracteres ou strings:


' MARIA '

' ICC '

' 325 '

Na prtica, uma cadeia de caracteres pode ter at 255 caracteres. Internamente, o


computador registra os caracteres da cadeia (excluindo os apstrofos) e o nmero
de caracteres desta cadeia.
Os dados lgicos tm apenas dois valores possveis: VERDADEIRO e FALSO.
Os dados podem ser manipulados utilizando os seguintes operadores:
Adio: +
Subtrao: Multiplicao: *
Diviso: /
Exponenciao:
No clculo de uma expresso numrica, a prioridade das operaes a seguinte:
1.
2. - , +
3. * , /

exponenciao (da direita para esquerda)


sinal dos operandos
multiplicao e diviso (da esquerda para direita)

4. + , -

adio e subtrao (da esquerda para direita)

Os parnteses podem mudar a prioridade das operaes. Parnteses mais internos


devem ser resolvidos primeiro.
Exemplos:
1. 13 * 6 + 3 = 78 + 3 = 81
2. 8 + 7 * 3 + 4 * 5 = 8 + 21 + 20 = 49
3. 3 2 - 2 * 3 = 9 - 2 * 3 = 9 - 6 = 3
4. 2 3 2 = 2 9 = 512
5. (2 3) 2 = 8 2 = 64
6. -3 * 7 + 2 3 / 4 - 6 = -3 * 7 + 8 / 4 - 6 = -21 + 2 - 6 = -25
7. (3 * (6 + 2)) * 8 = (3 * 8) * 8 = 24 * 8 = 192

Observao: se os termos da operao so todos inteiros, o resultado ser inteiro;


caso contrrio, ser real.
Exemplos:
3+2=5
3 + 2.0 = 5.0
3 * 2.2 = 6.6
8/2=4
8 / 5 = 1 (resultado truncado)
8.0 / 5 = 1.6
2 3 = 8 (a base e o expoente podem ser inteiros ou reais)

7.2 Variveis e Expresses


Uma varivel em um programa pode ser definida como uma entidade que possui
um valor e conhecida no programa por um nome (identificador).
Por exemplo:

x1 = b +

b 2 4ac
2a

b 2 4 ac
x2 = b
2a

Esta relao, utilizando variveis, define uma frmula geral que pode ser aplicada
a clculos especficos. a, b, c, x1 e x2 so as variveis que fazem parte desta
frmula. Estas variveis podem tomar valores diferentes em tempos diferentes, j
a constante 2 nunca muda.
Se num dado instante: a = 1, b = 6 e c = 9, os valores de x1 e x2 seriam
respectivamente -3 e -3.
Observaes:
1. Uma varivel pode receber muitos valores, mas somente um nico valor em
um determinado instante.
2. Em programas de computadores, os nomes das variveis devem lembrar o seu
uso. Por exemplo: RAIZ1 para x1 e RAIZ2 para x2.
3. Existem algumas regras, que dependem da linguagem utilizada, para se dar
nomes s variveis. Na linguagem FORTRAN, o nome deve sempre comear
com uma letra seguida de outros caracteres quaisquer, exceto o branco ( ' ' ).
Exemplos vlidos:

TOTAL

Exemplos no vlidos:

3ARQ

MAIOR

A123

LADO2

RAIZ1

DOIS P

7.3 Comando de Atribuio


Uma forma de dar valores s variveis atravs do comando de atribuio.
Forma Geral:

VARIVEL EXPRESSO

onde EXPRESSO uma combinao de variveis, constantes e operadores.


Exemplos:
A 3

B -265
C A+B-2
TERMO 3 + 20 - 7 * C
D 'casa'
A 10
E 'A'

7.4 Tipos de Variveis


Toda varivel tem um tipo que determina o tipo de dado que ela poder assumir.
Geralmente estes tipos so: Inteiro, Real, Caracter e Lgico. Uma varivel do
tipo inteiro, por exemplo, s pode armazenar constantes do tipo inteiro. Se A
uma varivel do tipo real, s pode armazenar valores reais.
Um erro ocorrer ao se atribuir a uma varivel do tipo caracter um valor
numrico. Neste caso, no h compatibilidade entre os tipos. No entanto, no
ocorrer erro ao se atribuir um valor inteiro a uma varivel real, ou um valor real
a uma varivel inteira.
Suponha a varivel A do tipo inteira e a varivel B do tipo real:
A 20.834
B -27
Automaticamente, o valor -27 convertido para real, -27.0. O valor de 20.834
convertido para inteiro, 20. Observe que no caso de 20.834, o valor truncado,
no correspondendo ao valor real. Deve-se portanto evitar as converses.

7.5 Aplicaes de Algoritmos


Para escrever os primeiros algoritmos, ser utilizada a linguagem pseudo-cdigo
que facilita a traduo para uma linguagem adequada de programao; e ainda
permite ao desenvolvedor pensar no problema e no na mquina que vai executar
o algoritmo.
Exemplos:
1. Dados dois nmeros, imprimir o dobro da soma destes nmeros.
INCIO
INTEIRO: A, B, C, D
LEIA(A,B)

CA+B
D2*C
ESCREVA(D)
FIM
INCIO
INTEIRO: A, B, C
LEIA(A,B)
C 2 * (A + B)
ESCREVA(D)
FIM

2. Ler quatro notas, calcular a mdia aritmtica e imprimir as notas e a mdia com
mensagens significativas.
INCIO
REAL: N1, N2, N3, N4, MEDIA
LEIA(N1, N2, N3, N4)
MEDIA (N1 + N2 + N3 + N4) / 4.0
ESCREVA( ' Nota 1 = ', N1)
ESCREVA( ' Nota 2 = ', N2)
ESCREVA( ' Nota 3 = ', N3)
ESCREVA( ' Nota 4 = ', N4)
ESCREVA( ' Media = ', MEDIA)
FIM
Para verificar se o algoritmo acima est certo, ser feito um rastreamento deste
algoritmo. Suponha que as notas so: 4.0, 2.0, 5.0, 8.0.
N1 4.0
N2 2.0
N3 5.0
N4 8.0
MEDIA (4.0 + 2.0 + 5.0 + 8.0) / 4.0 = 4.75

A impresso ser:
Nota 1 = 4.0
Nota 2 = 2.0
Nota 3 = 5.0
Nota 4 = 8.0
Media = 4.75

3. Escrever um algoritmo para ler uma temperatura dada na escala Celsius e


imprimir a equivalente em Farenheit ( F = 9 C + 32 ).
5
INCIO
LEIA(C)
F 9/5 * C + 32
ESCREVA( 'Temperatura em graus Celcius: ' , C)
ESCREVA( 'Temperatura equivalente em graus Farenheit: ', F)
FIM

8. Principais Comandos da Linguagem Fortran


A seguir os principais comandos da Linguagem Fortran (Verso 5.1) sero
apresentados, destacando-se as diferenas existentes entre a nova verso e a
anterior.

8.1 Declarao de Variveis


Todas as variveis utilizadas devem estar declaradas no incio do programa.
Exemplos:
INTEGER A
REAL
B
LOGICAL C
CHARACTER*5 D (pode-se armazenar uma palavra de no mximo 5
caracteres na varivel D)

8.2. Comando READ


O comando READ especifica o dispositivo de leitura dos dados, associa um
formato leitura dos dados, especifica a lista de variveis que iro receber os
dados lidos e ainda aciona a ao leitura.
Forma Geral:
READ(i,n) <lista de variveis>

onde: i - um nmero inteiro e especifica o dispositivo de entrada dos dados


(i ser * para o teclado).
n - nmero do comando FORMAT, que especifica o formato dos dados
de entrada (n ser * quando no se tem nenhum comando FORMAT
associado ao comando READ).
<lista de variveis> - nomes de variveis, separadas por vrgula.
Exemplo: READ(*,*) A, B
Sero lidos valores de dados digitados no teclado e atribudos s variveis A e B.
Os dados digitados devem ser compatveis com os tipos das variveis que iro
receb-los.

8.2 Comando WRITE


O comando WRITE especifica o dispositivo de impresso/exibio dos dados,
associa um formato de exibio/impresso dos dados, especifica a lista de
variveis ou constantes a serem exibidas ou impressas e aciona a ao
exibio/impresso.
Forma Geral:
WRITE(i,n) <lista>
onde: i - um nmero inteiro e especifica o dispositivo que ser utilizado para
exibio (i ser * para o vdeo) ou impresso (i ser o nmero da
impressora definida pelo comando OPEN).
n - nmero do comando FORMAT, que especifica o formato dos dados
de impresso (n ser * quando no se tem nenhum comando
FORMAT associado ao comando WRITE).
<lista> - nomes de variveis ou expresses aritmticas, separadas por
vrgula.

Exemplo: WRITE(*,10) A, B
Os valores das variveis A e B sero exibidos na tela conforme o formato
especificado pelo comando FORMAT de nmero 10.

8.3 Comando FORMAT

O comando FORMAT permite especificar a forma em que os dados sero lidos


ou impressos pelos comandos de E/S associados.
Forma Geral:
n

FORMAT('x', esp1, ..., espn)

onde: n - o nmero do comando FORMAT.


x - um caracter de controle e s deve ser utilizado quando o FORMAT
estiver associado a um comando de sada (assumir x = 1X).
espi - so especificaes de formato.
A seguir sero apresentadas algumas especificaes de formato:
1. Especificao numrica para inteiro: especifica quantos caracteres sero
reservados para o dado numrico inteiro.
Forma Geral:
In
onde: I - representa o formato inteiro.
n - indica o comprimento do dado em caracteres.
Exemplo: Para imprimir os valores abaixo, o formato mnimo a ser utilizado :
23
I2
+245 I4
- 4567 I5
2. Especificao numrica para real: especifica quantos caracteres sero
reservados para o dado numrico real.
Forma Geral:
F n.d
onde: F - representa o formato ponto flutuante.
n - indica o comprimento do dado em caracteres.
d - indica o nmero de casas decimais.
Exemplo:
10

X = 32.125
WRITE(*, 10) X
FORMAT(1X, F7.3)
Ser impresso: b 3 2 . 1 2 5

3. Especificao numrica para real com exponente: define o comprimento do


campo e o nmero de casas decimais associados aos valores reais com expoente,
lidos ou escritos.
Forma Geral:
E n.d
onde: E - representa o formato ponto flutuante com expoente.
n - indica o comprimento do dado em caracteres.
d - indica o nmero de casas decimais.
Exemplo: Para imprimir totalmente os valores reais abaixo, o formato mnimo a
ser utilizado :
1.23E+03 E8.2
-5.1E-02 E8.1

4. Especificao para caracteres: especifica quantos caracteres sero aceitos


para o dado alfanumrico.
Forma Geral:
An
onde: A - representa o formato alfanumrico.
n - indica o nmero de caracteres.
Exemplo:
5

B = 'LINGUAGEM'
WRITE(*, 5) B
FORMAT(1X, A6)
Ser impresso: LINGUA

5. Formatos de edio.
nX
'...'
nH
/

- define n posies em branco na linha.


- exibe os caracteres que estiverem entre apstrofo.
- exibe os prximos n caracteres depois de H.
- salta para a linha seguinte.

- no avana o cursor para a prxima linha e o conserva na posio


corrente.
TLn - retrocede o cursor n posies para a esquerda.
TRn - retrocede o cursor n posies para a direita.
Tn - posiciona o cursor na n-sima posio da linha.
n( ) - repete n vezes os atributos entre parnteses.

Observaes Gerais:
1. Cada comando READ ou WRITE provoca, respectivamente, a leitura e a
escrita de um registro (uma linha de dados, no caso da tela do terminal).
2. Na leitura se existirem mais dados do que variveis, sero lidos somente um
nmero igual ao de variveis especificadas no comando READ.
3. 2I4 = I4, I4
2(F10.2, F5.2) = F10.2, F5.2, F10.2, F5.2
4. Na leitura, se o formato no for compatvel, isto , varivel de um tipo,
formato de outro, ocorrer erro de execuo.
Exemplos:
a)

10
20

INTERGER V1, V2, V3


V1 = 39
READ(*,10) V2, V3
FORMAT(I5, I4)
WRITE(*,20) V1, V2, V3
FORMAT(1X, I4, I12, I8)
...

Com os seguintes dados de entrada: 7 2 6 5 4 - 2 5 6


A impresso ser (onde b = ' '): bb39bbbbbbb72654bbbb-256
Se V1 = 76543, teremos: ****bbbbbbb72654bbbb-256

b)

10

A = 6.5
B = -256.496
C = 1.03239
D = 63425.67
WRITE(*,10) A, B, C, D
FORMAT(1X, F10.5, F7.3, F12.4, F5.2)

...
Ser impresso: bbb6.50000*******bbbbbb1.0324*****

c)

40

X = 725.6975
Y = -0.0005239
Z = 76.599
A = -16.5E7
WRITE(*,40) X, Y, Z, A
FORMAT(1X, E14.7, E13.5, E14.3, E7.5)
...

Ser impresso: b0.7256975Eb03b-0.52390E-03bbbbb0.766Eb02

d)
30

READ(*,30) A, B, C, D
FORMAT(2(F10.2, F5.2))
Ao ler estes dados: bbbbb28.38b1.002002002.32-4.81
Eles sero armazenados assim:
A = 28.38 B = 1.0 C = 2002002.32

e)
30

D = -4.81

READ(*,30) A, B, C
FORMAT(F10.2, 2( F5.2))

A ser impresso na 1 linha, B e C sero impressos na 2 linha.

8.4 Comando OPEN


Este comando juntamente com os comandos WRITE e FORMAT pode ser
utilizado para exibir textos na impressora ou em arquivos. A sintaxe do comando
OPEN para exibio de textos na impressora descrito abaixo.
Forma Geral:
OPEN(m, FILE = 'PRN') m, nmero que identifica a impressora.
WRITE(m, n)

FORMAT(formato)

m, nmero que foi associado impressora.


n, nmero do comando FORMAT associado.
n, nmero que identifica o comando FORMAT.

Em formato podem aparecer alm dos atributos utilizados para o vdeo, os


seguintes atributos que devem aparecer necessariamente na primeira posio de
impresso:
'b'
'0'
'1'
'+'

avana uma linha.


avana duas linhas.
causa o salto para uma nova pgina.
impresso superposta da linha.

Exemplo:

3
4
5
6

PROGRAM TESTE
OPEN(1, FILE = 'PRN')
WRITE(*,1)
FORMAT(24(/), 27X,'Teste de impresso de textos', //, 17X, 'Ligue a
*impressora e posicione no inicio da pagina!')
WRITE(1,2)
FORMAT(23X, 'Instituto de Ciencias Matematicas',/, 27X, 25H Univ
*ersidade de Sao Paulo)
WRITE(1,3)
FORMAT('0', T30, 'Linguagem Fortran',\)
WRITE(1,4)
FORMAT(1X, TR2, 11H Fundamentos, TL13, '-')
WRITE(1,5)
FORMAT('+', T30, 17('-'', 3X, 11('-'))
WRITE(1,6)
FORMAT(33X, 'Modulo Basico' / '1')
STOP
END

8.5 Estrutura de Iterao


8.5.1 Estrutura PARA
O comando FORTRAN que implementa diretamente a estrutura:
para I de M at N passo P faa
comandos;
fim para;
o DO, cujas formas principais sero apresentadas a seguir.

Forma Geral:
DO n, i = m1, m2, m3
Bloco A
n CONTINUE
onde: n - nmero do comando que delimita o tamanho do lao (a vrgula aps o n
opcional).
i - varivel do DO.
m1 - valor inicial de i.
m2 - valor mximo de i para teste.
m3 - incremento.
mi - i = 1, 2, 3, pode ser expresses inteiras ou reais.
Bloco A - composto por combinaes de comandos da linguagem.
Exemplo: o trecho do algoritmo abaixo, soma os nmeros pares de 100 a 200, e
traduzido logo em seguida para a linguagem FORTRAN utilizando o comando
DO.
...
SOMA 0
PARA PAR 100 AT 200 PASSO 2 FAA
SOMA SOMA + PAR
FIM PARA
ESCREVA(SOMA)
...

20
30

SOMA= 0
DO 20, PAR = 100, 200,2
SOMA = SOMA + PAR
CONTINUE
WRITE(*,30) SOMA
FORMAT(1X, 'SOMA = ', F5.2)

Forma Geral:
DO i = m1, m2, m3
Bloco A
END DO
onde: i - varivel do DO.
m1 - valor inicial de i.

m2 - valor mximo de i para teste.


m3 - incremento.
mi - i = 1, 2, 3, pode ser expresses inteiras ou reais.
Bloco A - composto por combinaes de comandos da linguagem.
Observaes:
1. O incremento m3 pode ser omitido e neste caso, assumido valor 1.
2. O ltimo comando do Bloco A, pode ser qualquer comando da linguagem,
exceto: GOTOs, END, RETURN ou DO.
3. A varivel i no pode ser alterada por nenhum comando dentro do lao.
4. Se os laos terminam no mesmo comando, pode ser o mesmo CONTINUE
para todos eles.
5. A varivel i pode ser um nmero inteiro ou real.

8.5.2 Estrutura ENQUANTO


O comando FORTRAN que implementa a estrutura:
enquanto <condio> faa
comandos;
fim enquanto;
o WHILE, que descrito a seguir.
Forma Geral:
DO WHILE (condio)
Bloco A
END DO
onde: condio - condio de parada.
Bloco A - composto por combinaes de comandos da linguagem.
Exemplo: O programa abaixo exibe os valores dos senos de ngulos em radianos
de 0.0, 0.1, 0.2, ... at 6.3. A funo SIN( ) do Fortran utilizada no programa
para fornecer o valor dos ngulos.
PROGRAN SENO
REAL A
A = 0.0
DO WHILE (A.LE.6.3)
WRITE(*,*) A, SIN(A)
A = A + 0.1

END DO
STOP
END

8.6 Conjuntos e Variveis Indexadas


Os tipos bsicos (inteiro, real, caracter e lgico) no so suficientes para
expressar estruturas de dados (forma sistemtica de representar as informaes)
em algoritmos. Torna-se necessrio a criao de novos tipos.
As variveis de um programa podem ser classificadas em simples ou compostas.
As variveis simples armazenam num dado instante, um nico valor. As variveis
compostas podem armazenar um conjunto de valores de mesmo tipo, num dado
instante, que podem ser acessados individualmente. Vetores e Matrizes so
variveis compostas que ajudam na representao de dados e sero apresentados
abaixo.

8.6.1 Vetores
Um vetor um conjunto unidimensional de variveis. Cada elemento de um vetor
tratado como se fosse uma varivel simples. Para referncia a um elemento do
vetor utiliza-se o nome do vetor e a identificao do elemento (ndice) entre
parnteses. Por exemplo, se desejarmos atribuir o valor 234 ao elemento
identificado pelo ndice 3 de um vetor de inteiros, teremos:

VETOR
234
4

Observaes:
1. As variveis indexadas em FORTRAN podem ter at 7 ndices.
2. O ndice de uma varivel I(V(I)), pode assumir qualquer valor inteiro.
3. Todos os elementos de um vetor tm o mesmo tipo. O tipo de um vetor
definido assim como variveis simples.
4. Um elemento de um vetor pode ser usado numa expresso como uma varivel
qualquer. Exemplo:
X(I + 1) = X(I) * X(I - 1)

5. O nmero de elementos de um vetor e limites superior e inferior para o ndice


devem ser declarados no incio do programa.
Declaraes de tipos para vetores:
Forma Geral:
<tipo> A(n, m)
onde: <tipo> - pode se INTEGER ou REAL ou CHARACTER, etc.
A - o nome do vetor.
n - limite inferior do ndice (se for omitido assumido 1).
m - limite superior do ndice.
Observao: Os limites (superior e inferior) podem ser nmeros inteiros positivos
e negativos. Na verso anterior, deveriam ser maiores ou iguais a 1.
Exemplos:
1.

REAL VETOR1(100), A(20)

2.

INTEGER A(0:10), B(-3,1)

3.

PROGRAM EXEMPLO
REAL X(100), MAIOR
INTEGER N, I, POS
WRITE(*,*) 'Entre com o nmero de elementos que sero lidos.'
READ(* ,*) N
IF (N.LE.100) THEN
WRITE(*,*) ' Digite os valores reais. '
READ(*,10) ( X(I), I=1, N)
10
FORMAT (10(F8.3))
MAIOR = X(1)
POS = 1
IF (N.NE.1) THEN
DO I=2, N
IF (X(I).GT.MAIOR) THEN
MAIOR = X(I)
POS = I
END IF
END DO
END IF
WRITE(*,20) POS, MAIOR
20
FORMAT(1X, I3, F8.3)

ELSE
WRITE(*,*) ' Nmero de elementos do vetor muito grande.'
ENDIF
STOP
END
O programa acima l nmeros reais e os armazena em um vetor real, encontra o
maior valor e sua posio no vetor e ento os exibe.

8.6.2 Matrizes
Podemos encontrar diversos problemas que envolvam em sua soluo arranjos
homgneos multidimensionais. Para resolver este tipo de problema pode-se
utilizar matrizes, que so representadas com o uso de variveis indexadas com
mais de um ndice. Cada ndice referencia uma dimenso.
Exemplo:

2
A = 23
7

31
25
39

A(1,2) = 31

A - nome da matriz
1 - 1 ndice (nmero que indica a linha)
2 - 2 ndice (nmero que indica a coluna)

Declarao de tipos para matrizes:


INTEGER MATRIZ(3,4)
REAL
A(2,2), B(10,10)

8.7 DO IMPLCITO para entrada e sada de dados


Forma Geral:
(<lista de variveis>, i = m1, , m2, m3)
onde: i, m1, m2, m3 tm os mesmos significados do comando DO.
O DO IMPLCITO deve vir sempre associado a um comando de entrada ou sada
e tem funcionamento anlogo ao do comando DO.
Exemplos:

a)
10

READ(*,10) (X(I), I = 1, 10)


FORMAT(10(F5.2, 1X))

Com os comandos acima, pode-se ler um vetor de dez posies com os valores
reais lidos todos na mesma linha.
b)
10

WRITE(*,10) (A(J), J = 1, 10)


FORMAT(1X, F5.2)

Os comandos acima imprimem os valores do vetor A, cada um em uma linha. O


controle feito pelo comando FORMAT. equivalente a:

10

c)
10

DO J=1, 5
WRITE(*,10) A(J)
FORMAT(1X, F5.2)
END DO

READ(*,10) (A(I), B(I), I = 1, 4)


FORMAT(8F5.2)

Neste caso, A(1), B(1), ..., A(4), B(4) sero lidos todos em uma mesma linha.

d)
10

READ(*,10) N, (A(I), I = 1, N)
FORMAT(I2, /, (F5.2))

Aqui, os valores sero lidos um em cada linha.

e)
10

READ(*,10) N, (A(I), I = 1, N)
FORMAT(I2, /, N(F5.2))

A linguagem FORTRAN no suporta as especificaes do FORMAT como


acima, pode-se usar o artifcio abaixo.

10

f)
10

READ(*,10) (A(I), I = 1, N)
FORMAT(10F8.2)

DO I=1, 4
WRITE(*,10) (A(I,J), J = 1, 3)
FORMAT(1X, 3F5.2)
END DO

Imprimi uma matriz A de ordem 4x3, com cada linha da matriz em uma linha.

g)
10

WRITE(*,10) ((A(I,J), J=1, 3), I=1, 4)


FORMAT(1X, 3F5.2)

Faz o mesmo do exemplo anterior.

h)
10

WRITE(*,10) ((A(I,J), J=1, 5), I=1, 5)


FORMAT(1X, 25F5.2)

Imprime uma matriz de ordem 5x5, sendo um elemento seguido de outro em uma
mesma linha.

i)
10

DO I=1, 5
WRITE(*,10) (A(I,J), J = 1, 5)
FORMAT(1X, F5.2)
END DO

ou

10

WRITE(*,10) ((A(I,J), J=1, 5), I=1, 5)


FORMAT(1X, F5.2)

Imprimi uma matriz de ordem 5x5, um elemento seguido do outro, um em cada


linha.

j) O programa abaixo efetua o produto entre duas matrizes.


PROGRAM PRODUTO
REAL A(20,20), B(20,20), C(20,20)
INTEGER I, J, K, T, N, M
C
Leitura de dados
READ(*,*) N, K, M
IF (N.LE.20.AND.K.LE.20.AND.M.LE.20) THEN
C
Leitura da matriz A.
READ(*,5) ((A(I,J), J=1, N), I=1, K)
5
FORMAT(16F5.2)
C
Leitura da matriz B.
READ(*,5) ((B(I,J), J=1, K), I=1, M)
C
Clculo da matriz C = A*B

DO I=1, N
DO J=1, M
C(I,J) = 0
DO T=1, K
C(I,J) = C(I, J) + A(I,T) * B(T,J)
END DO
END DO
END DO
C
Impresso da matriz C
DO I=1, N
WRITE(*,10) (C(I,J), J=1, M)
10
FORMAT(1X, 10(F5.2, 3X))
END DO
ELSE
WRITE(*,*) 'Estes valores so invlidos!')
END IF
STOP
END

8.8 Subprogramas: FUNCTION e SUBROUTINE


Subprograma uma unidade de programa independente, simples, que geralmente
realiza uma nica funo e que tem associado um identificador (nome); sua
execuo subordinada ao programa principal ou a uma outra unidade de
programa. Uma unidade de programa uma seqncia de comandos FORTRAN
terminada pelo comando END.

8.8.1 Funes
O subprograma FUNCTION definido pelo programador e pode compreender
mais de um comando da linguagem FORTRAN.
Forma Geral:
< tipo > FUNCTION < nome> (a1, a2, ..., an)
Declaraes
Comandos Executveis
RETURN
END
onde: < tipo > pode ser real e inteiro.
a1, a2, ..., an so parmetros e podem ser variveis simples ou compostas.

O subprograma deve ser finalizado com o comando RETURN que indica o fim
lgico do subprograma, isto , o controle agora deve retornar ao ponto onde a
funo foi referenciada no programa principal.
Dentro do corpo do subprograma FUNCTION, em pelo menos um ponto deve
aparecer o nome deste subprograma como uma varivel, isto , assumindo algum
valor compatvel com o seu tipo.
Exemplo:
C

Programa Principal
PROGRAM EXEMPLO2
REAL X(100), Y
INTEGER N
READ(*,*) N
READ(*,*) ( X(I), I = 1, N )
...
Y = SOMA(N,X)
WRITE(*,*) Y
STOP
END
REAL FUNCTION SOMA(N,X)
INTEGER I, N
REAL X(N)
SOMA = 0
DO I=1, N
SOMA = SOMA + X(I)
END DO
RETURN
END

Este subprograma recebe um vetor X real e sua dimenso N como entrada e


retorna um s valor para o programa principal.

8.8.2 Sub-Rotinas
As SUB-ROTINAS tambm so subprogramas com duas diferenas bsicas dos
subprogramas FUNES:
1. A sub-rotina retorna nenhum, um ou vrios valores atravs de seus
argumentos.

2. A sub-rotina chamada atravs de um comando especfico, o comando CALL.


Forma Geral:
SUBROUTINE < nome> (a1, a2, ..., an)
Declaraes
Comandos Executveis
RETURN
END
onde: a1, a2, ..., an so parmetros formais que podem ser variveis simples ou
compostas. A lista de parmetros pode ser inteiramente omitida.
Exemplo: Vamos considerar um programa que encontra o maior valor entre N
valores lidos e armazenados num vetor real, alm de encontrar tambm a posio
do vetor que este maior valor est. O programa funcionar para qualquer nmero
de dados at 100.
PROGRAM PRINCIPAL
REAL X(100), MAIOR
INTEGER N, I, POS
WRITE(*,*) 'Entre com o nmero de elementos que sero lidos.'
READ(* ,*) N
WRITE(*,*) ' Digite os valores reais. '
READ(*,10) ( X(I), I=1, N)
10 FORMAT (10(F8.3))
AIOR = X(1)
POS = 1
IF (N.NE.1) THEN
DO I=2, N
IF (X(I).GT.MAIOR) THEN
MAIOR = X(I)
POS = I
END IF
END DO
END IF
WRITE(*,20) J, MAIOR
20 FORMAT(1X, I3, F8.3)
STOP
END
Em sntese o programa l N e um vetor X como dados de entrada, encontra o
maior elemento do vetor e sua posio armazenando-os nas variveis MAIOR e
POS respectivamente e imprime estes valores.

Vamos ver como o programa acima pode ser escrito utilizando um subprograma
sub-rotina.
C

PROGRAMA PRINCIPAL

PROGRAM PRINCIPAL
REAL X(100), MAIOR
INTEGER N, I, POS
WRITE(*,*) 'Entre com o nmero de elementos que sero lidos.'
READ(* ,*) N
WRITE(*,*) ' Digite os valores reais. '
READ(*,10) ( X(I), I=1, N)
10 FORMAT (10(F8.3))
C
CHAMADA DA SUBROTINA MAX
CALL MAX(N, X, POS, MAIOR)
C
IMPRESSO DOS RESULTADOS
WRITE(*,20) J, MAIOR
20 FORMAT(1X, I3, F8.3)
STOP
END

SUBROUTINE MAX (N, X, POS, MAIOR)


INTEGER N, I, POS
REAL X(N), MAIOR
MAIOR = X(1)
POS = 1
IF (N.NE.1) THEN
DO I=2, N
IF (X(I).GT.MAIOR) THEN
MAIOR = X(I)
POS = I
END IF
END DO
END IF
RETURN
END

Observaes:
1. Os parmetros no comando sub-rotina so meramente formais, pois eles so
substitudos por seus nomes verdadeiros quando o comando CALL executado.
No entando, os parmetros da lista SUBROUTINE devem corresponder em
nmero e em tipo com os parmetros do comando CALL.

2. Nmeros de comandos e variveis so locais para subprogramas. Eles podem


ser idnticos com outros subprogramas ou com o programa principal.
3. Os subprogramas podem vir antes ou depois do programa principal.
4. Os argumentos podem ser expresses (ex: contantes, variveis, expresses
aritmticas, etc).
5. Recursividade no permitida na linguagem FORTRAN.
6. Deve-se fazer um algoritmo ou diagrama estruturado para cada unidade de
programa.
Exemplo: O programa abaixo calcula a seguinte matriz:
D = x*A + y*B
onde: A e B so matrizes quadradas de ordem N lidas.
x corresponde ao menor elemento da diagonal principal da matriz A.
y corresponde ao menor elemento da diagonal principal da matriz B.
Na implementao que segue foram utilizados subprogramas para determinar o
menor elemento de um vetor, para calcular o produto de um nmero por uma
matriz e para somar duas matrizes de ordem NxM.
C

Sub-rotina que efetua a soma de duas matrizes


SUBROUTINE SOMA(P,Q,N,M,S)
INTEGER N, M, I, J
REAL P(10,10),Q(10,10),S(10,10)
DO I=1, N
WRITE(*,*) (P(I,J), J=1, M)
END DO
WRITE(*,*) 'Matriz Q'
DO I=1, N
WRITE(*,*) (Q(I,J), J=1,M)
END DO
DO I=1,N
DO J=1,M
S(I,J) = P(I,J) + Q(I,J)
END DO
END DO
RETURN
END

Sub-rotina que calcula o produto de um nmero por uma matriz


SUBROUTINE PROD(T,N,M,K,TP)
INTEGER N, M, I, J
REAL T(10,10), TP(10,10), K
DO I=1,N
DO J=1,M
TP(I,J) = K * T(I,J)
END DO
END DO
RETURN
END

C Funo que encontra o menor elemento de um vetor


REAL FUNCTION VETOR_ME(V,N)
REAL V(N)
INTEGER N, I
VETOR_ME = V(1)
DO I=2, N
IF (V(I).LT.VETOR_ME) THEN
VETOR_ME = V(I)
END IF
END DO
RETURN
END
PROGRAM PRINCIPAL
REAL A(10,10), B(10,10), D(10,10), X, Y, VA(10), VB(10)
INTEGER I, J
C LEITURA DAS MATRIZES
WRITE(*,*) 'Entre com a dimensao da matriz!'
READ(*,*) N
WRITE(*,*) 'Entre com os valores da matriz A.'
DO I=1, N
READ(*,*) (A(I,J), J=1, N)
WRITE(*,*) (A(I,J), J=1, N)
END DO
WRITE(*,*) 'Entre com os valores da matriz B.'
DO I=1, N
READ(*,*) (B(I,J), J=1, N)
WRITE(*,*) (B(I,J), J=1, N)
END DO
C CRIAR UM VETOR APARTIR DA DIAGONAL PRINCIPAL DE A
DO I=1, N
VA(I) = A(I,I)
VB(I) = B(I,I)

C
C

END DO
CHAMADA AO SUBPROGRAMA FUNCTION VETOR_ME
X = VETOR_ME(VA,N)
WRITE(*,*) 'Menor elemento de A = ', X
Y = VETOR_ME(VB,N)
WRITE(*,*) 'Menor elemento de B = ', Y
CHAMADA AO SUBPROGRAMA PROD
CALL PROD(A,N,N,X,A)
DO I=1, N
WRITE(*,*) (A(I,J), J=1, N)
END DO
CALL PROD(B,N,N,Y,B)
DO I=1, N
WRITE(*,*) (B(I,J), J=1, N)
END DO
CHAMADA AO SUBPROGRAMA SOMA
CALL SOMA(A,B,N,N,D)
IMPRESSAO DA MATRIZ D NA FORMA MATRICIAL
DO I=1, N
WRITE(*,*) (D(I,J), J=1, N)
END DO
END

8.9 Arquivos
Registros so as menores entidades que podem ser lidas por um comando de E/S.
Um exemplo de registro uma linha do terminal. O sistema operacional insere
uma marca (caracter de controle) indicando o fim de um registro. Em sntese, um
registro uma seqncia de caracteres. Na tela do vdeo, um registro consiste de
80 caracteres. Para discos e fitas, pode-se criar registros de qualquer tamanho
(registro de 1 caracter, registro de 100 caracteres, ...).
Arquivo uma seqncia de registros. Para indicar o final de arquivo, existe um
registro especial denominado registro de fim-de-arquivo.
Cada arquivo caracterizado por um conjunto de atributos:
a) Nome: o nome de um arquivo especificado atravs de um programa o mesmo
pelo qual o arquivo reconhecido pelo sistema operacional.
b) Mtodo de Acesso: pode ser seqncial ou direto.
Seqncial: os registros so lidos seqencialmente, na mesma ordem em que
foram escritos.

Direto: permite a leitura e escrita em qualquer ordem, conforme definido pelo


programador. Neste caso, cada registro pode ser acessado diretamente, sem ter
que acessar o restante do arquivo. Todos os registros tm que ter o mesmo
tamanho. Neste tipo de acesso cada registro identificado por seu nmero, onde
este nmero um inteiro positivo nico.
Nos discos podemos implementar ambos os mtodos de acesso. De forma geral,
os demais dispositivos de armazenamento s permitem acesso seqncial.
c) Estrutura: formatado ou no formatado.

8.9.1 Comando OPEN


Especifica os atributos de um arquivo.
Forma Geral:
OPEN (<unidade> [, FILE = <nome>] [, STATUS = ' <status> ']
[, ACCESS = ' <acesso> '] [, FORM = ' <formato> ']
[, IOSTAT = <var1>] [, RECL = <comprimento do arquivo>])
onde: <unidade> - nmero inteiro que designa um arquivo ou dispositivo de E/S.
<status> - OLD, NEW (default: OLD)
<acesso> - SEQUENTIAL, DIRECT (default: SEQUENTIAL)
<formato> - FORMATTED, UNFORMATTED
(default: se SEQUENTIAL FORMATTED
se DIRECT UNFORMATTED)
<comprimento do arquivo> - somente se o acesso DIRETO (nmero de
bytes no PC).

8.9.2 Comando CLOSE


Fecha um arquivo.
Forma Geral:
CLOSE (<unidade> [, STATUS = ' <status> '] [, IOSTAT = <var1>] )
onde: <status> - KEEP, DELETE (default: KEEP).

8.9.3 Comando READ

L registros de um arquivo.
Forma Geral:
READ (<unidade> [, <especificador de formato>]
[, END = <num1>] [, ERR = <num2>] [, IOSTAT = <var1>]
[, REC = <nmero registro>]) lista de variveis
onde: [ ] - item opcional.
<unidade> - nmero da unidade associado ao arquivo.
<especificao do formato> - nmero do comando FORMAT ou *.
<num1> - nmero de um comando executvel FORTRAN para o qual o
controle transferido quando encontrado o fim-de-arquivo.
<num2> - nmero de um comando executvel quando ocorre erro.
<var1> - varivel do tipo inteiro que armazenar um valor do status de E/S.
se var1 = 0, no houve erro.
se var1 < 0, fim-de-arquivo.
se var1 > 0, erros.
<nmero registro> - somente usado para arquivo de acesso direto,
especifica o nmero do registro que ser acessado.

8.9.4 Comando WRITE


Escreve registros em um arquivo.
Forma Geral:
WRITE (<unidade> [, <especificador de formato>]
[, END = <num1>] [, ERR = <num2>] [, IOSTAT = <var1>]
[, REC = <nmero registro>]) lista de variveis e/ou expresses
onde: [ ] - item opcional.
<unidade> - nmero da unidade associado ao arquivo.
<especificao do formato> - nmero do comando FORMAT ou *.
<num1> - nmero de um comando executvel FORTRAN para o qual o
controle transferido quando encontrado o fim-de-arquivo.
<num2> - nmero de um comando executvel quando ocorre erro.
<var1> - varivel do tipo inteiro que armazenar um valor do status de E/S.
se var1 = 0, no houve erro.
se var1 < 0, fim-de-arquivo.
se var1 > 0, erros.
<nmero registro> - somente usado para arquivo de acesso direto,
especifica o nmero do registro que ser acessado.

8.9.5 Comandos BACKSPACE, REWIND, ENDFILE, EN


Backspace: posiciona o arquivo no incio do registro anterior ao registro
corrente.
Rewind: posiciona o arquivo no nicio, ou seja, no primeiro registro.
Endfile: escreve um registro de fim-de-arquivo em um arquivo.

Exemplos:
O programa ESCREVE, cria um arquivo chamado TESTE.DAT e grava neste
arquivo nomes e telefones fornecidos pelo teclado.
PROGRAM ESCREVE
CHARACTER NOME*10, FONE*10
OPEN(3,FILE='TESTE.DAT', STATUS = 'NEW')
C ----Leitura de dados
WRITE(*,*) 'Entre com nome e telefone!'
READ(*,5) NOME, FONE
5 FORMAT(2A7)
DO WHILE (NOME.NE.'zzzzzzz'.AND.NOME.NE.'ZZZZZZZ')
WRITE(3,5) NOME, FONE
WRITE(*,*) 'Entre com nome e telefone!'
READ(*,5) NOME, FONE
END DO
ENDFILE(3)
CLOSE(3,STATUS = 'KEEP')
STOP
END
O programa LE1, l nomes e telefones do arquivo TESTE.DAT e mostra estes
dados no vdeo. A varivel ESTADO ir identificar o final do arquivo, ela ser
igual a 0 enquanto houver registros para ler.
PROGRAM LE1
CHARACTER NOME*10, FONE*10
INTEGER ESTADO
OPEN(3,FILE='TESTE.DAT', STATUS = 'OLD')
REWIND(3)
C ----Leitura de dados do arquivo
READ(3,5,IOSTAT=ESTADO) NOME, FONE

DO WHILE(ESTADO.EQ.0)
WRITE(*,*) 'Nome = ', nome, 'Fone = ', fone
READ(3,5,IOSTAT=ESTADO) NOME, FONE
5
FORMAT(2A7)
END DO
ENDFILE(3)
CLOSE(3,STATUS = 'KEEP')
STOP
END
O programa LE2, tambm l nomes e telefones do arquivo TESTE.DAT e mostra
estes dados no vdeo, mas usa para isto a varivel EOF ir identificar o final do
arquivo.

PROGRAM LE2
CHARACTER NOME*10, FONE*10
OPEN(3,FILE='TESTE.DAT', STATUS = 'OLD')
REWIND(3)
C---- ----Leitura de dados
DO WHILE(.NOT. EOF(3))
READ(3,5) NOME, FONE
WRITE(*,*) 'Nome = ', nome, 'Fone = ', fone
5
FORMAT(2a3)
END DO
ENDFILE(3)
CLOSE(3,STATUS='KEEP')
STOP
END

9. Concluso
Este trabalho descreveu os principais comandos da Linguagem Fortran (verso
5.1), alm de apresentar alguns conceitos bsicos sobre computao e programas
de computadores.

10. Bibliografia
[Cereda 87] Cereda, R. L. D.; Maldonado, J. C. Introduo ao FORTRAN 77
para Microcomputadores. McGraw-Hill, 1987.
[Pressman 83] Pressman, R. S. Software Engineering: a Practitioner's Approach.
Tokyo, McGraw-Hill, 1983.