Fortran - Types de données

Fortran fournit cinq types de données intrinsèques, mais vous pouvez également dériver vos propres types de données. Les cinq types intrinsèques sont -

  • Type entier
  • Type réel
  • Type complexe
  • Type logique
  • Type de caractère

Type entier

Les types entiers ne peuvent contenir que des valeurs entières. L'exemple suivant extrait la plus grande valeur qui peut être contenue dans un entier habituel de quatre octets -

program testingInt
implicit none

   integer :: largeval
   print *, huge(largeval)
   
end program testingInt

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -

2147483647

Notez que le huge()La fonction donne le plus grand nombre que peut contenir le type de données entier spécifique. Vous pouvez également spécifier le nombre d'octets à l'aide dukindprescripteur. L'exemple suivant illustre ceci -

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

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -

32767
2147483647
9223372036854775807
170141183460469231731687303715884105727
2147483647

Type réel

Il stocke les nombres à virgule flottante, tels que 2.0, 3.1415, -100.876, etc.

Traditionnellement, il existe deux types réels différents, la valeur par défaut real type et double precision type.

Cependant, Fortran 90/95 offre plus de contrôle sur la précision des types de données réels et entiers via le kind spécificateur, que nous étudierons dans le chapitre sur les nombres.

L'exemple suivant montre l'utilisation d'un type de données réel -

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

Lorsque vous compilez et exécutez le programme ci-dessus, il produit le résultat suivant -

0.666666687    
0

Type complexe

Ceci est utilisé pour stocker des nombres complexes. Un nombre complexe comprend deux parties, la partie réelle et la partie imaginaire. Deux unités de stockage numériques consécutives stockent ces deux pièces.

Par exemple, le nombre complexe (3,0, -5,0) est égal à 3,0 - 5,0i

Nous discuterons plus en détail des types complexes dans le chapitre Nombres.

Type logique

Il n'y a que deux valeurs logiques: .true. et .false.

Type de caractère

Le type de caractère stocke des caractères et des chaînes. La longueur de la chaîne peut être spécifiée par le spécificateur len. Si aucune longueur n'est spécifiée, elle vaut 1.

For example,

character (len = 40) :: name  
name = “Zara Ali”

L'expression, name(1:4) donnerait la sous-chaîne «Zara».

Typage implicite

Les anciennes versions de Fortran permettaient une fonctionnalité appelée typage implicite, c'est-à-dire que vous n'avez pas à déclarer les variables avant utilisation. Si une variable n'est pas déclarée, la première lettre de son nom déterminera son type.

Les noms de variables commençant par i, j, k, l, m ou n sont considérés comme des variables entières et les autres sont des variables réelles. Cependant, vous devez déclarer toutes les variables car c'est une bonne pratique de programmation. Pour cela, vous démarrez votre programme avec la déclaration -

implicit none

Cette instruction désactive le typage implicite.