Buscar

Exemplos de programas em fortran_p

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 1
Exemplos de Programas
em FORTRAN 
João Manuel R. S. Tavares
Joaquim O. Fonseca
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 2
Exemplo I
Programa simples de utilização do ciclo DO, com escrita não formatada:
PROGRAM exercicio1
DIMENSION A(10)
C
C Vai gerar valores que são o quíntuplo da indexação
C
DO 15 I = 1, 10
A(I) = I*5
15 CONTINUE
C
C ESCREVE NO SENTIDO DECRESCENTE DA INDEXAÇÃO
C
DO 20 J = 10, 1, -1
WRITE (*,*) A(J)
20 CONTINUE
STOP
END 
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 2
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 3
Exemplo I
Output:
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 4
Exemplo II
Programa principal e subrotina para produto 2 matrizes de 2x2, com 
saída não formatada:
PROGRAM exercicio2
DIMENSION A(2, 2), B(2, 2), C(2, 2)
C
C VAI DEFINIR PONTOS A(...)
C
A(1, 1) = 0.0
A(1, 2) = 0.0 ! Considere, por exemplo, os
A(2, 1) = 10.0 ! pontos extremos dum segmento de recta
A(2, 2) = 0.0
C
C VAI LER O ÂNGULO DE ROTAÇÃO
C
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 3
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 5
Exemplo II
WRITE (*, '(A\)') ' ANGULO : '
READ (*, *) TETA
PI = 4*ATAN(1.0) ! Define a constante π (pi)
TETA = TETA*PI/180 ! Converte graus em radianos
C
C DEFINE MATRIZ DE ROTAÇÃO em torno da origem
C
B(1, 1) = COS(TETA)
B(1, 2) = SIN(TETA)
B(2, 1) = -SIN(TETA)
B(2, 2) = COS(TETA)
C
CALL MULTMAT(A, B, C) ! Chamada da subrotina MULTMAT
C
C ESCREVE A MATRIZ RESULTANTE DO PRODUTO C(...)
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 6
Exemplo II
C
DO 20 I = 1, 2
WRITE (*,*) (C(I, J), J = 1, 2) ! Ciclo DO interno em J
20 CONTINUE
STOP
END
C
C Subrotina para o produto de duas matrizes de 2x2
C
SUBROUTINE MULTMAT(A, B, C)
DIMENSION A(2, 2), B(2, 2), C(2, 2)
C
C faz ciclo sobre o número de linhas I
C
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 4
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 7
Exemplo II
DO 1 I = 1, 2
C
C faz produto com a matriz quadrada B
C
DO 2 J = 1, 2
AB = 0.0 ! Inicia valor da posição da matriz
DO 3 K = 1, 2
AB = AB+A(I, K)*B(K, J) !Adiciona contribuições
3 CONTINUE
C(I, J) = AB ! Guarda valor na posição da matriz
2 CONTINUE
1 CONTINUE
C
RETURN
END
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 8
Exemplo II
Output:
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 5
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 9
Exemplo III
Programa para processamento duma Figura 3D, com 
leitura dos dados dum ficheiro com a seguinte estrutura:
- na primeira linha o número de vértices (nós) e número de 
faces;
- nas linhas seguintes para todos os vértices, teremos o número 
do vértice e as coordenadas 
- seguindo-se depois as linhas para a definição de cada face, 
com o número da face, número de vértices na face e os 
números dos vértices dessa face.
Para o caso particular dum cubo de aresta 2 e centrado 
na origem, será definido do modo seguinte (ficheiro 
exemplo.dat)
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 10
Exemplo III
 8 6 ! número de vértices e número de faces 
1 -1 1 1 
2 1 1 1 
3 1 1 -1 
4 -1 1 -1 ! Coordenadas pontos 
5 -1 -1 1 
6 1 -1 1 
7 1 -1 -1 
8 -1 -1 -1 
1 4 1 2 3 4 
2 4 1 4 8 5 
3 4 5 8 7 6 ! Faces 
4 4 2 6 7 3 
5 4 1 5 6 2 
6 4 3 7 8 4 
 
Y
Z
X
12
5
4
6
3
1
4
3
2
7
5
6
8
 
 
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 6
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 11
Exemplo III
PROGRAM exercicio3
C Versão Inicial do programa de processamento duma figura 3D
C**********************************************************
C Programa 3D
C XCORD Coordenadas dos vértices
C LNODE Número de vértices por face
C NNODE Número de cada vértice da face
C
COMMON / FACES / XCORD(100, 4), LNODE(20), NNODE(20, 8)
C
C Limitado a 100 pontos, 20 faces e 8 lados no máximo por face
C
CHARACTER*12 FNAME
C
NDIM = 3
ICANAL = 20
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 12
Exemplo III
WRITE (*, '(A\)')' Nome do Ficheiro : '
READ (*, '(A)') FNAME
OPEN (ICANAL, FILE = FNAME, STATUS = 'OLD')
CALL LERDATA(NP, NF, NDIM, ICANAL)
C
C escreve no ecrã a definição lida pela subrotina LERDATA
C
DO 20 I = 1, NP
WRITE (*, *) I, (XCORD( I, J ), J = 1, NDIM)
20 CONTINUE
DO 30 I = 1, NF
WRITE (*, *) I, LNODE(I), (NNODE(I, J), J = 1, LNODE(I))
30 CONTINUE
STOP
END
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 7
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 13
Exemplo III
C Versão Inicial subrotina LERDATA para leitura duma figura 3D
C**********************************************************
SUBROUTINE LERDATA(NP, NF, NDIM, ICANAL)
C
COMMON / FACES / XCORD(100, 4), LNODE(20), NNODE(20, 8)
C
READ (ICANAL, *) NP, NF
DO 10 I = 1, NP
READ (ICANAL, *) II, (XCORD( II, J ), J = 1, NDIM)
XCORD(II, NDIM+1) = 1 ! valor não utilizado neste exemplo
10 CONTINUE
C
DO 20 I = 1, NF
READ (ICANAL, *) II, LNODE(II), (NNODE(II, J), J = 1, LNODE(II))
20 CONTINUE
RETURN
END
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 14
Exemplo III
Output:
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 8
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 15
Exemplo IV
Programa para leitura dum ficheiro, duma estrutura de faces e 
cálculo da área total utilizando a formula A= √p(p-a)(p-b)(p-c), 
com p=(a+b+c)/2, para determinar a área dum qualquer 
triângulo de lados a, b e c.
LNODE(I)-1
Só aplicável a Polígonos Convexos
2
1
LNODE(I)
4
3
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 16
Exemplo IV
EXEMPLO de ESTRUTURA 3D dum PRISMA TRIANGULAR 
 
6 5 
1 -1 1 1 
2 1 1 1 
3 1 1 -1 
4 -1 1 -1 ! Coordenadas 
5 -1 -1 1 
6 1 -1 1 
1 4 1 2 3 4 
2 3 1 4 5 
3 4 5 6 3 4 ! Faces 
4 3 2 6 3 
5 4 1 5 6 2 
 
Y
Z X
12
5
4
3
1
4
3
2
5
6
 
 
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 9
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 17
Exemplo IV
PROGRAM exercicio4
C PROGRAMA 3D ! Continuação do exemplo anterior
C
C COMMON /FACES/ XCOORD(100, 4), LNODE(20), NNODE(20, 8)
C
PARAMETER (MPOIN = 100, MDIME = 4, MF = 20, MN = 8)
DIMENSION XCOORD(MPOIN, MDIME), LNODE(MF), 
+ NNODE(MF, MN) ! Vars locais
C
CHARACTER*12 FNAME
NDIM = 3
ICANAL = 20
WRITE (*, '(A\)') ' Nome do ficheiro : '
READ (*, '(A)') FNAME
OPEN (ICANAL, FILE = FNAME, STATUS = 'OLD')
C
C CALL LERDATA(NP, NF, NDIM, ICANAL)
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 18
Exemplo IV
C
CALL LERDATA(MPOIN, MDIME, MF, MN, NP, NF, NDIM, 
+ ICANAL, XCOORD, LNODE, NNODE)
C
C ESCRITA PARA CONTROLO DE LEITURA DO FICHEIRO DE DADOS
C
DO 20 I = 1, NP
WRITE (*, 100) I, (XCOORD(I, J), J = 1, NDIM)
20 CONTINUE
DO 30 I = 1, NF
WRITE (*, 110) I, LNODE(I), (NNODE(I, J), J = 1, LNODE(I))
30 CONTINUE
C
C CÁLCULO DA ÁREA TOTAL
C
AREAT = 0.0
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 10
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 19
Exemplo IV
DO 40 I=1, NF
NO1 = NNODE(I, 1)
X1 = XCOORD(NO1, 1)
Y1 = XCOORD(NO1,2)
Z1 = XCOORD(NO1, 3)
AREAF = 0.0
DO 35 K = 3, LNODE(I)
NO2 = NNODE(I, K-1)
NO3 = NNODE(I, K)
X2 = XCOORD(NO2, 1)
Y2 = XCOORD(NO2, 2)
Z2 = XCOORD(NO2, 3)
X3 = XCOORD(NO3, 1) 
Y3 = XCOORD(NO3, 2) 
Z3 = XCOORD(NO3, 3)
A = SQRT((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-
+ Y1)+(Z2-Z1)*(Z2-Z1))
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 20
Exemplo IV
B = SQRT((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-
+ Y2)+(Z3-Z2)*(Z3-Z2))
C = SQRT((X1-X3)*(X1-X3)+(Y1-Y3)*(Y1-
+ Y3)+(Z1-Z3)*(Z1-Z3))
P = (A+B+C)/2
AREA = SQRT(P*(P-A)*(P-B)*(P-C))
AREAF = AREAF+AREA ! Area total da face
35 CONTINUE
WRITE (*, 1000) I, AREAF
AREAT = AREAT+AREAF ! Area total da figura 3D
40 CONTINUE
WRITE (*, 1010) AREAT
STOP
100 FORMAT (4H No , I4, 3(2X, F11.4))
110 FORMAT (10I5)
1000 FORMAT (1X, 5HFACE , I4, 5X, 7HAREA = , E12.5)
1010 FORMAT (1X, 13HAREA TOTAL = , E12.5)
END
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 11
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 21
Exemplo IV
SUBROUTINE LERDATA(MP,MD,MF,MN,NP,NF,NDIM,ICAN 
+ AL,XCOORD,LNODE,NNODE)
***********************************************************
* Subrotina LERDATA, faz a leitura dos dados de um ficheiro *
* MP - Número máximo de pontos em XCOORD *
* MD - Máximo da dimensão (3) *
* MF - Número máximo de faces *
* MN - Número máximo de pontos por face *
* NP - Número de pontos em processamento *
* NF - Número de faces em processamento *
* NDIM - Dimensão das coordenadas (2 ou 3) *
* ICANAL - Número de endereço do ficheiro de leitura *
* XCOORD - Vector de armazenamento das coordenadas dos pontos *
* LNODE - Vector onde se guarda o número de pontos por cada face*
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 22
Exemplo IV
* NNODE - Vector onde se guarda os núm. globais de cada nó da face *
***********************************************************
DIMENSION XCOORD(MP, MD), LNODE(MF), NNODE(MF, MN)
C
READ (ICANAL, *) NP, NF
DO 10 I = 1, NP
READ (ICANAL, *) II, (XCOORD(II, J), J = 1, NDIM)
XCOORD(II, NDIM+1) = 1 ! Não usado neste exemplo
10 CONTINUE
C
DO 20 I = 1, NF
READ (ICANAL,*) II, LNODE(II), (NNODE(II, K), K = 1, 
+ LNODE(II))
20 CONTINUE
RETURN
END
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 12
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 23
Exemplo IV
Output:
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 24
Exemplo V
Programa para processamento de uma cadeia de caracteres
PROGRAM exemplo5
C Programa para leitura duma cadeia de caracteres e conversão
C desta em todos Maiúsculos ou Minúsculos
* Variável de caso:
* ISIM = 1 Passagem de minusculas a maiusculas
* ISIM = 0 Passagem de maiusculas a minusculas
c
CHARACTER*72 LINHA
CHARACTER*1 SIM
NL = 72
C
C Questiona da conversão
C
5 WRITE(*, '(A\)') ' Texto Maiusculas (S)- Minusculas (N)[S]: '
READ (*, '(A)') SIM
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 13
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 25
Exemplo V
C
C Controla resposta
C
IF (SIM .NE. 'S' .AND. SIM .NE. 's' .AND. SIM .NE. 'N' .AND.
+ SIM .NE. 'n' .AND. SIM .NE. ' ') THEN
WRITE (*,'(A)') ' Resposta Incorrecta !'
GOTO 5
END IF
ISIM = 1 ! Para maiusculas
IF (SIM .EQ. 'N' .OR. SIM .EQ. 'n') THEN
ISIM = 0 ! Para minusculas
END IF
C Vai ler Cadeia de Caracteres
C
WRITE (*, '(A\)') ' Texto : '
READ (*, '(A)') LINHA
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 26
Exemplo V
C Vai determinar o número de caracteres significativos
C
10 IF (LINHA(NL:NL) .EQ. ' ') THEN
NL = NL-1
GOTO 10
END IF
C Conversão caracteres Minusculos --> Maiusculos ou Vice-Versa
C
IC = 1
20 IASC = ICHAR(LINHA(IC:IC)) ! Código ASCII do caracter
IF (IASC .GE. 97 .AND. IASC .LE. 122 .AND. ISIM .EQ. 1) THEN
LINHA(IC:IC) = CHAR(IASC-32) ! passa a maiusculo
ELSE IF (IASC .GE. 65 .AND. IASC .LE. 90 .AND. ISIM .EQ. 0) THEN
LINHA(IC:IC) = CHAR(IASC+32) ! passa a minusculo
END IF
IC = IC+1
IF (IC .LE. NL) GOTO 20
(caracter a partir do 
código ASCII)
CFAC: Exemplos de Programas em FORTRAN FEUP/DEMEGI-SDI
@2001 - João Tavares/JOF 14
@2001 - João Tavares/JOF CFAC: Exemplos de Programas em FORTRAN 27
Exemplo V
C
C Escreve para o ecrã a cadeia de caracteres já convertida
C
WRITE (*, '(A\)') ' Texto : '
WRITE (*, '(A)') LINHA(1:IC)
STOP
END
Output

Continue navegando