Tipos de Dados
O Fortran trabalha com 5 tipos de dados intrínsecos, contudo, é possível derivar seus próprios tipos de dados.
Os 5 tipos intrínsecos de dados são:
- Tipo Inteiro
integer
- Tipo Real
real
- Tipo Complexo
complex
- Tipo Lógico
logical
- Tipo Literal (Caractere)
character
Tipo Inteiro
O tipo inteiro pode armazenar apenas valores inteiros. O exemplo a seguir extrai o maior valor que pode ser armazenado em um tipo inteiro usual de 4 bytes.
program testingInt
implicit none
integer :: largeval
print *, huge(largeval)
end program testingInt
Após compilar o código fonte fortran e executar o programa, o resultado produzido será:
2147483647
Perceba que a função huge() retorna o maior número possível que pode ser armazenado pelo tipo de dado inteiro específico. É permitido especificar o número de bytes usando o especificador kind
.
Por exemplo:
program testingInt
implicit none
!two byte integer
integer(kind=2) :: shortval
!four byte integer
integer(kind=4) :: longval
!eight byte integer
integer(kind=8) :: verylongval
!sixteen byte integer
integer(kind=16) :: veryverylongval
!default integer
integer :: defval
print *, huge(shortval)
print *, huge(longval)
print *, huge(verylongval)
print *, huge(veryverylongval)
print *, huge(defval)
end program testingInt
Após compilar o código fonte fortran e executar o programa, o resultado produzido será:
32767
2147483647
9223372036854775807
170141183460469231731687303715884105727
2147483647
Tipo real
Dados do tipo real real type
são usadaos para armazenar numeros de ponto flutuante, ou seja valores numéricos com casas decimais, por exemplo: 2.0, 3.1415, -100.8e3.
Tradicionalmente há dois tipos de dados reais:
- Real de precisão simples (padrão)
- Real de precisão dupla
As versões a partir Fortran 90 provém mais controles sobre a precisão de dados do tipo real e inteiros mediante o especificadorkind
, que iremos estudar com mais detalhes no capítulo de Números.
O exemplo a seguir mostra o uso de dados do tipo real:
program division
implicit none
! Define real variables
real :: p, q, realRes
! Define integer variables
integer :: i, j, intRes
! Assigning values
p = 2.0
q = 3.0
i = 2
j = 3
! floating point division
realRes = p/q
intRes = i/j
print *, realRes
print *, intRes
end program division
Após compilar o código fonte fortran e executar o programa, o resultado produzido será:
0.666666687
0
Tipo complexo
This is used for storing complex numbers. A complex number has two parts, the real part and the imaginary part. Two consecutive numeric storage units store these two parts.
Por exemplo, os números complexos (3.0, -5.0) e 3.0 – 5.0i são equivalentes.
Discutiremos os tipos complexos com mais detalhes em um capítulo específico para Números.
Tipo lógico
Há somente dois valores possíveis para um tipo de dados lógico:
.true.
.false.
Tipo literal (caractere)
O tipo character
armazena caracteres e strings. O comprimento da string pode ser especidficado pelo especificador len
. Se nenhum especificador for definido o padrão será 1.
Por exemplo,
character(len=40) :: nome
nome = "Portal Fisica”
A expressão, nome(1:4)
resultará na substring "Port"
.
Tipo implicito
Versões antigas do Fortran (FORTRAN 77 e anteriores) permitiam uma característica chamada tipagem implícita, ou seja, não era necessário declarar o tipo das variáveis antes de usá-las. Se uma variável não fosse declarada, então o primeiro caractere do seu nome determinaria o seu tipo.
Seguindo as regras da tipagem implícita, o nome de varáveis iniciando pelas letras i, j, k, l, m, ou n, serão consideradas variáveis de tipo inteiro (integer
) todas as demais serão consideradas variáveis de tipo real (real
).
NOTA Recomendado como Boa prática de programação, você deve procurar sempre declarar todas as variáveis utilizadas em seu programa. Para tanto, você deve sempre colocar após a instrução do nome do programa a instrução implicit none
Por exemplo:
program teste
implicit none
!A instrução acima desliga a tipificação implícita
...
end program teste
—