Definição de Função de Comando – FORTRAN

Recentemente recebi um e-mail de um colega de profissão com uma questão a respeito de Fortran 77:

1) Porque o programa compila e executa?

2) Descomentando o valor de X na 1a linha da subrotina (Linha 7) o programa não funciona, por que?

PROGRAM RIARRAY
CALL DRIVER
END
SUBROUTINE DRIVER
C X = 290.0
E(X) = EXP(21.181235418. / X ) / .622
PRINT *, X, E(X)
C TM = 288.0
C PRINT *, TM, E(TM)
C X = 290.0
C PRINT *, X, E(X)
END

view raw
riarray.f90
hosted with ❤ by GitHub


Enquanto preparava o material de aula para meus alunos de Fortran, estava pesquisando as Notas de Aula de Física Computacional I do Professor Francisco C. Lavarda da UNESP e me deparei com a Definição de Função de Comando que viria por explicar os questionamentos acima citados.


Ref: HEHL, M. E., LINGUAGEM DE PROGRAMAÇÃO ESTRUTURADA FORTRAN, McGraw-Hill, 1986

11.5.1. Definição de Função de Comando

Uma função de comando é definida por um comando da forma:

nome ([a[,a]?]) = e

sendo que:

  • nome é o nome de uma função e segue as mesmas regras para nomes (identificadores) de variáveis.
  •  a é um argumento.
  •  e é uma expressão.

Usa-se uma função de comando como se usa uma função intrínseca (embutida, de biblioteca).
A função de comando é um comando não-executável e portanto deve ser declarada no início do programa, antes de qualquer comando executável.

Exemplo:

program exemplo
implicit none
real area,raio
integer i
area(raio) = 3.1415927*raio**2
do i = 1, 10
read(*,*) raio
write(*,*) area(raio)
end do
stop
end program exemplo

view raw
funcao_comando.f90
hosted with ❤ by GitHub

Com isto conseguimos responder as duas perguntas:

1) Porque o programa compila e executa?
R1. Porque ele esta sintaticamente correto.

2) Descomentando o valor de X na 1a linha da subrotina o programa não funciona, por que?
R2. “A função de comando é um comando não-executável e portanto deve ser declarada no início do programa, antes de qualquer comando executável“. Portanto, se descomentarmos X na primeira linha da subrotina, ele passa a ser o primeiro comando executável, contradizendo a condição de função executável na frase acima.


QR Code

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.