O Fortran traz diversas funções nativas para o uso em aritmética, trigonometria, transformação de tipos e outras.

As funções intrínsecas (ou de biblioteca) listadas na Tabela 1 são as mais comumente usadas nos programas quotidianos. Uma lista mais completa pode ser encontrada na documentação do Fortran – FORTRAN 77 Language Reference – Chapter 6 Intrinsic Functions e Fortran 90.

FunçãoDescriçãoTipo de ArgumentoTipo do do Retorno
ABS(X)Valor absoluto de xINTEGER ou REAL
COS(X)Coseno de x radianosREALREAL
EXP(X)Função exponencialREALREAL
INT(X)Parte inteira de xREALINTEGER
FLOOR(X)Piso de xREALINTEGER
FRACTION(X)Mantissa de xREALREAL
LOG(X)Logaritmo natural de xREALREAL
MAX(X1, … , Xn)Máximo de um conjuntoINTEGER or REALO mesmo do argumento
MIN(X1, … , Xn)Mínimo de um conjuntoINTEGER or REALO mesmo do argumento
MOD(X, Y)Resto da divisão inteira de x por yINTEGER or REALO mesmo do argumento
NINT(X)Função de arredondamentoREALINTEGER
REAL(X)Converter valor de z em tipo REALINTEGERREAL
SIN(X)Seno de x radianosREALREAL
SQRT(X)Raiz quadrada de xREALREAL
TAN(X)Tangente de x radianosREALREAL

Em funções, as variáveis, constantes ou valores que estão entre os parenteses são chamados de argumentos.

Nota: O tipo do retorno da função não é explicito, ou seja o usuário deverá conhecer a documentação da função a fim de identifica-lo para poder fazer atribuições às variáveis de maneira correta.


Funções intrínsecas são algumas funções comuns e importantes que são fornecidos como parte da linguagem Fortran, podem ser classificados como:

Na coluna nome da função,

Funções numéricas

FunçãoDescrição da função
abs(A)Retorna o valor absoluto de um valor A
aimag(Z)Retorna a parte imaginária de um número complexo Z
aint(A [ , Kind ] )É trunca parte fracionária de um a zero, retornando um número real, todo.
anint(A [, Kind ])Retorna um valor real, o número inteiro mais próximo ou o número inteiro.
ceiling(A [, Kind ] )Retorna o menor inteiro maior ou igual a número A.
cmplx(X [, Y, Kind ])Converte as variáveis X e Y reais para um número complexo X + iy; se Y está ausente, é usado.
conjg(Z)Retorna o complexo conjugado de qualquer Z. número complexo
dble(A)Converte A para um número real de precisão dupla.
dim(X, Y)Retorna a diferença positiva de X e Y.
dprod(X, Y)Retorna o produto real precisão dupla de X e Y.
floor(A [, Kind ])Ele fornece o maior inteiro menor ou igual a número A.
int(A [, KindA ])Converte um número (real ou inteiro) para inteiro, truncando a parte real para zero.
max(A1, A2 [, A3, … ])Retorna o valor máximo dos argumentos, todos os seres da mesma espécie.
min(A1, A2 [, A3, … ])Retorna o valor mínimo dos argumentos, todos os seres da mesma espécie.
mod(A, P)Ele retorna o resto de uma sobre a divisão de A por P, ambos os argumentos que são do mesmo tipo (A-INT (A / P*P)
modulo(A, P)Retorna um modulo P: (A-FLOOR (A / P*P)
nint(A [, Kind ])Retorna o número inteiro mais próximo da série A
real(A [, Kind ])Converte para tipo real
sign(A, B)Basicamente ele transfere o sinal de de B para A.

Exemplo:

program numericFunctions
implicit none  

   ! define constants  
   ! define variables
   real :: a, b 
   complex :: z

   ! values for a, b 
   a = 15.2345
   b = -20.7689

   write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)   
   write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b) 
   write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)   
   write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)  

   z = cmplx(a, b)
   write(*,*) 'z: ',z   

end program numericFunctions

Quando você compilar e executar o programa acima , produz o seguinte resultado:

abs(a): 15.2344999   abs(b): 20.7688999    
aint(a): 15.0000000  aint(b): -20.0000000    
ceiling(a): 16  ceiling(b): -20
floor(a): 15  floor(b): -21
z: (15.2344999, -20.7688999)

Funções aritméticas

Descrição da função

Exemplo

O seguinte programa calcula a posição horizontal e vertical x e y, respectivamente, de um projétil depois de um tempo, t:

em que, x = ut cos(a) e y = ut sen(a) - gt^2 / 2

program projectileMotion  
implicit none  

   ! define constants  
   real, parameter :: g = 9.8  
   real, parameter :: pi = 3.1415927  

   !define variables
   real :: a, t, u, x, y   

   !values for a, t, and u 
   a = 45.0
   t = 20.0
   u = 10.0

   ! convert angle to radians  
   a = a * pi / 180.0  
   x = u * cos(a) * t   
   y = u * sin(a) * t - 0.5 * g * t * t  

   write(*,*) 'x: ',x,'  y: ',y   

end program projectileMotion

Quando você compilar e executar o programa acima , produzirá o seguinte resultado:

x: 141.421356  y: -1818.57861  

Funções de consulta numéricas

Estas funções funcionam com um determinado modelo de inteiro e aritmética de ponto flutuante. As funções de regresso propriedades dos números do mesmo tipo que a variável X, o qual pode ser real e, em alguns casos inteiro.

Descrição da função

Funções para manipulação de ponto flutuante

Descrição da função

Funções de manipulação de bits

Descrição da função

Funções de caracteres

Descrição da função

Funções de tipo Kind functions

Descrição da função

Função lógica

Descrição da função


Programa de exemplo do use das funções

PROGRAM exemplos_de_funcoes
REAL :: x, y
INTEGER :: z
!———————————————————————–
! Valor absoluto de x
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Valor absoluto de x’
x = -50.58
print *,x
y = ABS(x)
print *, y
!———————————————————————–
! Coseno de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Coseno de x radianos’
x = 70
print *,x
y = COS(X)
print *, y
!———————————————————————–
! Função exponencial
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Função exponencial’
x = 2
print *,x
y = EXP(X) ! x é o expoente da constante neperiano
print *, y
!———————————————————————–
! Parte inteira de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Parte inteira de x’
x = 2.718281828
print *,x
z = INT(x)
print *,z
!———————————————————————–
! Piso de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Piso de x’
x = 2.718281828
print *,x
z = FLOOR(x)
print *,z
!———————————————————————–
! Mantissa de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Mantissa de x’
x = 2.718281828
print *,x
y = FRACTION(x)
print *,y
!———————————————————————–
! Logaritmo natural de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Logaritmo natural de x’
x = 2.718281828
print *,x
y = LOG(x)
print *,y
!———————————————————————–
! Máximo de um conjunto
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Máximo de um conjunto’
print *, MAX(x, y)
! Obs.: tanto para MAX e MIN pode usar apenas um tipo de argumento
!———————————————————————–
! Mínimo de um conjunto
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Mínimo de um conjunto’
print *, MIN(x, y)
!———————————————————————–
! Resto da divisão inteira de x por y
! Tipos de argumento(s) : INTEGER or REAL
! Tipo de retorno : O mesmo do argumento
print *, ‘Resto da divisão inteira de x por y’
x = 21
print *, x
y = 8
print *, y
print *, MOD(X,Y) ! Não faz diferença se é maiúsculo ou minúsculo
!———————————————————————–
! Função de arredondamento
! Tipos de argumento(s) : REAL
! Tipo de retorno : INTEGER
print *, ‘Função de arredondamento’
x = 2.4 ! Tente x = 2.5
print *, x
z = NINT (x)
print *, z
!———————————————————————–
! Converter valor de z em tipo REAL
! Tipos de argumento(s) : INTEGER
! Tipo de retorno : REAL
print *, ‘Converter valor de z em tipo REAL’
z = 133
print *, z
x = REAL(z)
print *,x
!———————————————————————–
! Seno de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAL
print *, ‘Seno de x radianos’
x = 70
print *, x
y = SIN(x)
print *, y
!———————————————————————–
! Raiz quadrada de x
! Tipos de argumento(s) : REAL
! Tipo de retorno : REAl
print *, ‘Raiz quadrada de x’
x = 144
print *, x
y = SQRT (x)
print *, y
!———————————————————————–
! Tangente de x radianos
! Tipos de argumento(s) : REAL
! Tipo de retorno :
print *, ‘Tangente de x radianos’
x = 70
print *, x
y = TAN(x)
print *, y
!———————————————————————–
END

view rawexemplo_de_funcoes.f90 hosted with 

❤

 by GitHub


IDPFPG-1828

%d blogueiros gostam disto: