. . . . . .
1
1 1
Rotina de Clculo:
DO 10 I = 1,m
DO 10 J = 1, p
C( I , J ) = 0
DO 10 K = 1, n
C(I, J) = C(I, J ) + A(I, K) * B(K , J)
ENDDO
ENDDO
ENDDO
Segue-se um modelo de um programa, onde a leitura de dados feita via
arquivo e as variveis so alocadas dinamicamente. Com estes dados armazenados
em matrizes, feita uma multiplicao da duas matrizes e o resultado desta operao
gravado em arquivo de dados.
15 APLICAES
55
PROGRAM MULTI ! declarao opcional
C definindo as variaveis
IMPLICIT CHARACTER*30 (A,B)
INTEGER n,m,p
REAL MATA[ALLOCATABLE](:,:),MATB[ALLOCATABLE](:,:),
MATC[ALLOCATABLE](:,:)
WRITE(*,1)
1 FORMAT(//,' NOME DO ARQUIVO DE DADOS :',\)
READ(*,3) ARQ
3 FORMAT (A30)
WRITE(*,6)
6 FORMAT(//,' NOME DO ARQUIVO DE SAIDA(sem estensao):',\)
READ(*,3) ARQ2
OPEN (1, FILE=ARQ , STATUS='OLD') ! arquivo de leitura
C arquivo onde sera gravado
OPEN (2, FILE = ARQ2//'.SAI',STATUS='UNKNOWN')
5 READ(1,4) m,n,p
4 FORMAT (3I4)
C alocando as variaveis
ALLOCATE(MATA(m,n))
ALLOCATE(MATB(n,p))
ALLOCATE(MATC(m,p))
C lendo a matriz A
DO I=1,m
DO J=1,n
IF (J.EQ.n) THEN
READ (1,11) MATA(I,J)
ELSE
READ (1,10) MATA(I,J)
ENDIF
ENDDO
ENDDO
+
15 APLICAES
56
C lendo a matriz B
DO I=1,n
DO J=1,p
IF (J.EQ.p) THEN
READ (1,11) MATB(I,J)
ELSE
READ (1,10) MATB(I,J)
ENDIF
ENDDO
ENDDO
10 FORMAT (F10.2,\)
11 FORMAT (F10.2)
C multiplicando as matrizes A.B e armazenando em C
DO I=1,m
DO J=1,p
MATC(I,J)=0.
DO K=1,n
MATC(I,J)= MATC(I,J)+MATA(I,K)*MATB(K,J)
ENDDO
ENDDO
ENDDO
C gravando em arquivo
WRITE(2,*)MULTIPLICANDO MATRIZES
WRITE(2,*)DIMENSOES DAS MATRIZES:
WRITE(2,30) m,n,n,p
30 FORMAT(A (,I4,,I4,), B (,I4,,I4,))
WRITE(2,*)MATRIZ A
DO I=1,m
WRITE(2,*) (MATA(I,J),J=1,n)
ENDDO
WRITE(2,*) ! pula uma linha
WRITE(2,*)MATRIZ B
DO I=1,n
WRITE(2,*) (MATB(I,J),J=1,p)
ENDDO
WRITE(2,*) ! pula uma linha
WRITE(2,*)MATRIZ C = A * B
DO I=1,m
WRITE(2,*) (MATC(I,J),J=1,p)
ENDDO
15 APLICAES
57
C fechando os arquivos
CLOSE(1)
CLOSE(2)
WRITE(*,31)
31 FORMAT (//////)
WRITE (*,*) OPERACAO COM SUCESSO
WRITE (*,*) pressione qualquer tecla para continuar!
WRITE(*,31)
PAUSE
C fim do programa
STOP
END
Exemplo do arquivo de Entrada
2,3,2
1., 8., 3.
4.,5.,2 .
1.,4.
7.,3.
5.,1.
Exemplo do arquivo gerado pelo programa, cujo nome ser [NOME.SAI]:
MULTIPLICANDO MATRIZES
DIMENSOES DAS MATRIZES:
A ( 2, 3) B ( 3, 2)
MATRIZ A
1.000000 8.000000 3.000000
4.000000 5.000000 2.000000
MATRIZ B
1.000000 4.000000
7.000000 3.000000
5.000000 1.000000
MATRIZ C = A * B
72.000000 31.000000
49.000000 33.000000
Arquivo digitado em qualquer editor de texto
(Bloco de Notas, Edit, Ambiente Pascal, etc.)
15 APLICAES
58
15.2 ResoIuo de Sistema de Equaes Lineares
Para uma dada matriz A
~
e um vetor b
~
, de modo que:
A x b
~ ~ ~
.
o trabalho consiste em encontrar o vetor x
~
.
Existem vrias formas de resolver um sistema de equaes lineares. Uma
delas Eliminaao Gauss com retro - substituiao, cujo processo mais rpido
para o computador do que calcular a inversa.
Exemplo:
Seja o sistema:
2 4 9
5 6 4
3 6 12
1 2 3
1 2 3
1 2 3
x x x
x x x
x x x
+ +
+ +
+ +
1
]
1
1
1
'
'
2 4 1
5 1 6
1 3 6
9
4
12
1
2
3
A
x
x
x
x b
~
.
~ ~
Define-se:
R
A
A
( , )
( , )
2 1
1 1
5
2
b b R b ( ) ( ) . ( ) . 2 2 1 4
5
2
9
37
2
A A R A ( , ) ( , ) . ( , ) . 2 1 2 1 1 1 5
5
2
2 0
A A R A ( , ) ( , ) . ( , ) . 2 2 2 2 1 2 1
5
2
4 9
A A R A ( , ) ( , ) . ( , ) . 2 3 2 3 1 3 2
5
2
1
1
2
Resultando:
2 4 1
0 9 1 2
1 3 6
9
37 2
12
1
2
3
1
]
1
1
1
'
'
.
x
x
x
15 APLICAES
59
R
A
A
( , )
( , )
3 1
1 1
1
2
b b R b ( ) ( ) . ( ) . 3 3 1 12
1
2
9
15
2
A A R A ( , ) ( , ) . ( , ) . 3 1 3 1 1 1 1
1
2
2 0
A A R A ( , ) ( , ) . ( , ) . 3 2 3 2 1 2 3
1
2
4 1
A A R A ( , ) ( , ) . ( , ) . 3 3 3 3 1 3 6
1
2
1
11
2
2 4 1
0 9 1 2
0 1 11 2
9
37 2
15 2
1
2
3
1
]
1
1
1
'
'
.
x
x
x
R
A
A
( , )
( , )
3 2
2 2
1
9
1
9
b b R b ( ) ( ) . ( ) . 3 3 2
15
2
1
9
37
2
49
9
_
,
_
,
A A R A ( , ) ( , ) . ( , ) . 3 1 3 1 2 1 0
1
9
0 0
_
,
( ) A A R A ( , ) ( , ) . ( , ) . 3 2 3 2 2 2 1
1
9
9 0
_
,
A A R A ( , ) ( , ) . ( , ) . 3 3 3 3 2 3
11
2
1
9
1
2
49
9
_
,
_
,
2 4 1
0 9 1 2
0 0 49 9
9
37 2
49 9
1
2
3
1
]
1
1
1
'
'
.
x
x
x
15 APLICAES
60
Retro-substituio
Forma Geral:
x
a
b a x
i
ii
i ij j
j i
N
1
]
1
1 +
1
1
,
, ,
. .
logo
( )
x
b
A
3
3
3 3
49 9
49 9
1
( )
,
( ) ( ) A x b A x 2 2 2 2 3
37
2
1
2
1 18
2 3
, . ( ) , . .
_
,
( )
x
A
2
18
2 2
18
9
2
,
( ) ( ) ( ) A x A x A x b 1 2 1 2 1 3
1 2 3 3
, . , . , . + +
2 4 2 1 1 9 0
1 1
. . . x x + +
15 APLICAES
61
PROGRAM SOLUCAO
IMPLICIT CHARACTER*30 (A,B)
INTEGER N
REAL*8 MATA[ALLOCATABLE](:,:),B[ALLOCATABLE](:),
U[ALLOCATABLE](:)
WRITE(*,1)
1 FORMAT(//, NOME DO ARQUIVO DE DADOS :,\)
READ(*,3) ARQ
3 FORMAT (A30)
WRITE(*,6)
6 FORMAT(//, NOME DO ARQUIVO DE SAIDA(sem estensao):,\)
READ(*,3) ARQ2
OPEN (1, FILE=ARQ , STATUS=OLD) ! arquivo de leitura
C arquivo onde sera gravado
OPEN (2, FILE = ARQ2//.SOL,STATUS=UNKNOWN)
5 READ(1,4) N
4 FORMAT (3I4)
C alocando as matrizes
ALLOCATE (MATA(N,N+1))
ALLOCATE (B(N))
ALLOCATE (U(N))
C lendo a matriz MATA
DO I=1,N
DO J=1,N
IF (J.EQ.N) THEN
READ (1,11) MATA(I,J)
ELSE
READ (1,10) MATA(I,J)
ENDIF
ENDDO
ENDDO
C lendo a matriz B
READ (1,*) ( B(I), I=1,N)
10 FORMAT (F10.2,\)
11 FORMAT (F10.2)
+
15 APLICAES
62
C
C para resolucao do sistema o vetor b deve entrar
C como sendo a ultima coluna de MATA, isto e N+1
DO I=1,N
MATA(I,N+1)=B(I)
ENDDO
C
C gravando em arquivo
C
WRITE(2,*)PROGRAMA PARA RESOLUCAO DE SISTEMA
WRITE(2,*)DIMENSOES DAS MATRIZES:
30 FORMAT(A (,I4,,I4,))
WRITE(2,*)MATRIZ A
DO I=1,N
WRITE(2,*) (MATA(I,J),J=1,N)
ENDDO
WRITE(2,*) ! pula uma linha
WRITE(2,*)VETOR B
DO I=1,N
WRITE(2,11) B(I)
ENDDO
WRITE(2,*) ! pula linha
C
C chama subrotina para resolucao de sistema
C
CALL SOLVER (MATA,U,N)
C
C fim da resolucao do sistema
C
WRITE(2,*)RESOLUCAO DO SISTEMA
DO J=1,N
WRITE(2,40) J,U(J)
40 FORMAT(X,I1, : ,F15.6)
ENDDO
WRITE(2,*) ! pula uma linha
C fechando os arquivos
CLOSE(1)
CLOSE(2)
WRITE(*,31)
31 FORMAT (//////)
15 APLICAES
63
WRITE (*,*) OPERACAO COM SUCESSO
WRITE (*,*) pressione qualquer tecla para continuar!
WRITE(*,31)
C fim do programa
STOP
END
C
C SUBROTINA - RESOLUCAO DO SISTEMA DE EQUACOES
C
SUBROUTINE SOLVER (R,U,N)
INTEGER N
REAL*8 R(N,N+1), U(N), SOMAT
DO 360 I=1,N
IF (I.GT.1) THEN
DO 330 K=I,N
SOMAT=0
DO 325 J=1,(I-1)
SOMAT=SOMAT+R(K,(I-J))*R((I-J),I)
325 CONTINUE
R(K,I)=R(K,I)-SOMAT
330 CONTINUE
ENDIF
DO 350 K=(I+1),(N+1)
SOMAT=0
IF(I.GT.1) THEN
DO 340 J=1,(I-1)
SOMAT=SOMAT+R(I,(I-J))*R((I-J),K)
340 CONTINUE
ENDIF
R(I,K)=(R(I,K)-SOMAT)/R(I,I)
350 CONTINUE
360 CONTINUE
U(N)=-R(N,(N+1))
DO 380, I=(N-1),1,-1
U(I)=0
SOMAT=0
DO 370, J=(I+1),N
SOMAT = SOMAT+R(I,J)*U(J)
370 CONTINUE
U(I)=-R(I,(N+1))-SOMAT
15 APLICAES
64
380 CONTINUE
DO 390, I=N,1,-1
U(I)=-U(I)
390 CONTINUE
RETURN
END
Modelo do arquivo de entrada de dados:
3
2.,4.,1.
5.,1.,2.
1.,3.,6.
9.,4.,12.
Arquivo gerado pelo programa, aps obteno do resultado da resoluo do
sistema de equaes:
PROGRAMA PARA RESOLUCAO DE SISTEMA
MATRIZ A
2.000000000000000 4.000000000000000 1.000000000000000
5.000000000000000 1.000000000000000 2.000000000000000
1.000000000000000 3.000000000000000 6.000000000000000
VETOR B
9.00
4.00
12.00
RESOLUCAO DO SISTEMA
X1 : .000000
X2 : 2.000000
X3 : 1.000000
16 MANUSEANDO O FORTRAN PowerStation
65
16 MANUSEANDO O FORTRAN PowerStation
O FORTRAN PowerStation 4.0 oferece muitos recursos, se comparado com
as verses anteriores.
O Microsoft Developer Stuaio um ambiente de desenvolvimento integrado
para aplicaes do FORTRAN que permite acesso direto a um editor de cdigo e
oferece ferramentas para a construo de interfaces.
Neste captulo no ser possvel abordar todos os recursos oferecido pelo
FORTRAN verso 4.0 Portanto para aqueles que tiverem maior interesse em se
aprofundarem aconselha-se que consulte o User's Guide.
A melhor maneira de aprender o processo de desenvolvimento de um
programa com FORTRAN PowerStation a construo de um aplicativo, como
exemplo.
O manuseio ser dividido basicamente em quatro partes:
1. Iniciando o FORTRAN
2. Criando um novo projeto
3. Rodando o programa
4. Depurando o programa
16.1 Iniciando o FORTRAN
O acesso ao FORTRAN PowerStation 4.0 se d com um click duplo no cone
Microsoft Developer Stuaio.
16 MANUSEANDO O FORTRAN PowerStation
66
permitido aumentar ou diminuir a tela, assim como nos programas for
winaows e usar o FORTRAN para ver vrios documentos ao mesmo tempo, sendo
que cada documento aparece em cada MDI Multi-Document Interface.
FIGURA 16.1 - Barra de Ferramentas.
16.1.1 Barra de Ferramentas
A Barra de Ferramentas composta de Barra de ttulo, barra de Menus e de
caixa de ferramentas (FIGURA 16.1), onde:
A barra de ttulo apresenta o ttulo do projeto corrente;
A barra de Menus fornece acesso aos principais comandos e opes do ambiente
FORTRAN PowerStation 4.0, conforme ser mostrado mais adiante.
A caixa de ferramentas composta de botes, os quais fornecem atalhos para
diversas tarefas, como:
Barra de Ttulo
Barra de Menu
Caixa de Ferramentas
Abre um arquivo existente - tecla de atalho (Ctrl+O)
Abre um novo arquivo
Permite salvar o arquivo corrente - tecla de atalho (Ctrl+S)
Salva todos os arquivos
Apaga texto selecionado - Tecla de atalho (Ctrl+X)
Copia texto selecionado para rea de transferncia
tecla de atalho(Ctrl+C)
16 MANUSEANDO O FORTRAN PowerStation
67
Os trs botes abaixo so tambm padres do Windows95.
Cola o texto existente na rea de transferncia
tecla de atalho (Ctrl+V)
Desfaz ou Refaz aes
Localiza palavras no texto
Compila o programa ativo - tecla de atalho (Ctrl+F8)
Constri o executvel do programa ativo - tecla de atalho (Shift+F8)
Para a execuo do comando Build
Boto para Minimizar
Boto para Maximizar
Boto usado para
fechar a janela
Este boto localiza pi na
regio do texto acima do
cursor
Este boto localiza pi na
regio do texto abaixo do
cursor
16 MANUSEANDO O FORTRAN PowerStation
68
16.1.2 Barra de Menu
16.1.2.1 Menu FiIe
Voc utiliza o menu File principal para trabalhar com os arquivos que
formam seu projeto. Esse menu inclui comandos para salvar, carregar e imprimir
arquivos.
Novo arquivo
Abre um arquivo existente
Fecha apenas o arquivo corrente
Abre e fecha projetos
Salva apenas o arquivo corrente
Salvar o arquivo
Salva todos os arquivos
Configura pgina
Imprime arquivo
Sai do ambiente FORTRAN
16 MANUSEANDO O FORTRAN PowerStation
69
16.1.2.2 Menu Edit
16.1.2.3 Menu View
Desfaz uma ao
Refaz uma ao
Elimina texto selecionado (vai para rea de transferncia)
Copia para rea de transferencia
Cola texto na rea de transferncia
Elimina texto selecionado
Localiza texto no programa
16 MANUSEANDO O FORTRAN PowerStation
70
16.1.2.4 Menu Insert
16.1.2.5 Menu BuiId
16.1.2.6 Menu Window
Compila o programa
Constri o executvel
Compila e constri o executvel
Executa o programa
Arquivos existentes no ambiente
FORTRAN
Formato da janela principal
Divide a janela principal em duas
16 MANUSEANDO O FORTRAN PowerStation
71
16.2 Criando um novo projeto (Editando, SaIvando, Abrindo Arquivos)
Para comear a digitar um programa, deve-se ir ao Menu File e ao SubMenu
New. Automaticamente aparecer uma janela para que o usurio selecione o tipo de
texto. Aconselha-se que selecione o Text File e em seguida salve o documento. Para
isso, com o auxlio do mouse d-se um click no Menu File e com o mouse arrasta-se
at o SubMenu Save. Em seguida, aperta-se o boto esquerdo do mouse e aparecer a
janela:
Janela de ajuda para o
usurio
16 MANUSEANDO O FORTRAN PowerStation
72
Caso o usurio esteja salvando um arquivo que depois ser executado pelo
FORTRAN, deve-se salvar com [NOME].FOR, que em seguida o texto receber
todas as caractersticas de um programa FORTRAN. Por isso, as posies devem ser
respeitadas conforme visto no captulo 1.
Caso o arquivo tenha sido salvo uma vez, no mais aparecer esta janela. O
arquivo ser salvo automaticamente com o nome e diretrio corrente. S aparecer
esta janela novamente, se o usurio escolher o SubMenu Save As do Menu File.
16.3 Rodando o programa
Para execuo do programa, o FORTRAN compila o que foi digitado pelo
usurio, isto , transforma em linguagem de mquina o texto digitado. Com isso,
poder ocorrer erros, como: smbolos, formataes, posio dos comandos nas
colunas errados, etc.
Sub-diretrios de C:
Retorna ao diretrio anterior
Depois de colocado o nome
click aqui
Nome do arquivo
Cria nova pasta(diretrio)
Exibe detalhes
dos arquivos
16 MANUSEANDO O FORTRAN PowerStation
73
Aps a compilao do programa, deve-se construir o executvel para ento
process-lo e tornar possvel a sua execuo sem a utilizao do aplicativo
FORTRAN.
Para compilar um programa, pode-se utilizar da Caixa de Ferramentas ou do
Menu Build e SubMenu Compile. Se foi a primeira vez que tentou compilar o
programa e que ainda no tenha sido criado o nome do projeto, aparecer a seguinte
janela:
Informando que ainda no foi criado o nome do Projeto. Para programas simples
deve-se escolher a opo do Default, cujo nome ser o mesmo do programa principal,
isto , d-se um click em: .
Ao terminar o programa, aconselha-se que antes de sair do ambiente
FORTRAN, se feche o horkspace atravs do menu File, pois sempre que se inicia o
Microsoft Developer Stuaio. ele carrega automaticamente o projeto ativo antes de sair
pela ltima vez. Se voc fechou o projeto antes de sair no ser carregado nenhum
projeto ao iniciar novamente o FORTRAN. Isto evita que algumas pessoas menos
informadas carregue outro programa no projeto que foi automaticamente carregado
pelo programa ao iniciar. Ao compilar este projeto dar erro de compilao, pois
existem dois programas sem nenhuma ligao no mesmo horkspace.
16.4 Depurando o programa
Caso o programa j tenha passado pelo compilador do FORTRAN e no foi
acusa nenhum erro, pode haver a necessidade de executar o programa passo a passo,
16 MANUSEANDO O FORTRAN PowerStation
74
para identificar algum erro de lgica do programa, pois este tipo de erro o compilador
no identifica.
Tome como exemplo o programa de resoluo de equaes do captulo 15.
Suponha que o programa SOLUCAO j tenha tido digitado e compilado com sucesso
e que o resultado da resoluo do sistema no tenha sido fornecido os valores
corretos, e que seja preciso verificar os valores das matrizes e de algumas constantes
do programa antes de fornecer os valores finais. Para isso, coloca-se o cursor na
posio onde se deseja que o programa execute at determinado posio e segue os
seguintes passos: Menu Build , Submenu Debug e Run to Cursor,ou simplesmente
coloca-se o cursor na posio onde se deseja que o programa execute e pressione a
tecla F7.
Tem-se ento as seguinte caractersticas:
Pode-se solicitar valores
das variveis
Valores automaticamente fornecidos pelo
FORTRAN
16 MANUSEANDO O FORTRAN PowerStation
75
A seta amarela indica a posio do programa, isto , indica a prxima linha
que ser executada. A partir da, pode-se pedir valores das variveis atravs da janela
abaixo da janela principal do ambiente FORTRAN.
As variveis que aparecem com a cruz + so vetores ou matrizes. Ao dar um
click na cruz, os valores dos coeficientes do vetor correspondente aparecem
automaticamente.
Atravs da tecla F8, o programa executado passo a passo, alterando
automaticamente os valores das variveis. A tecla F7 executa um passo maior, isto ,
da posio da seta amarela at a posio do cursor. Este procedimento til quando
necessita-se passar rapidamente por um loop' grande.
16.5 Ajuda
O ambiente Microsoft Developer Stuaio possui um Help muito bom para
qualquer dvida que possa ter sobre a programao, tipos de erros de compilao e
quanto a erros de Link. O menu Help est mostrado na figura abaixo:
16 MANUSEANDO O FORTRAN PowerStation
76
No submenu Contents, contm todo Help fornecido pelo Microsoft Developer
Stuaio, que tem como temas principais:
Aconselha-se o leitor percorrer cada um desses itens, para saber o contedo e
verificar as possibilidades fornecidas pelo PowerStation.
Ao d-se um click no submenu Search, a seguinte janela surgir:
Digita palavra
D-se dois
clicks aqui
16 MANUSEANDO O FORTRAN PowerStation
77
Nesta janela pode-se procurar informaes diretamente, bastando para isso
fornecer a palavra que se deseja (em ingls), neste caso foi REPEAT surgindo assim,
apenas uma referncia sobre esta palavra.
Aps d-se dois clicks na faixa azul, como indicado na figura anterior, surgir
o texto contendo as informaes necessrias sobre o palavra REPEAT:
BIBLIOGRAFIA
78
BIBLIOGRAFIA
HEHL, M. E., (1986). Linguagem de Programao Estruturada: FOR1RAN 77,
McGraw Hill, So Paulo.
CEREADA, R.L.D.; MALDONADO,J.C., (1987). Introduo ao FOR1RAN 77
para microcomputadores, McGraw-Hill, So Paulo.
PORCINCULA,N.M.;GONALVES, J.A., (1988). Noes Bsicas. Apostila de
auto-treinamento fornecido pelo CPD da USP de So Carlos.
MANUAIS MICROSOFT- FORTRAN PowerStation (User's Guide, Language
Guide, Error Messages). Verso 4.0.
SMITH, I.M. (1995). Programming in FORTRAN 90 A first Course for Engineers
and Scientists. John Wiley & Sons, England.
DRIEMEIER,L. (1996). Curso de FORTRAN oferecido em 1996 no Dept. de Eng.
De Estruturas -EESC - USP.