Fortran - Construire une boucle

La construction do loop permet d'exécuter une instruction, ou une série d'instructions, de manière itérative, alors qu'une condition donnée est vraie.

Syntaxe

La forme générale de la boucle do est -

do var = start, stop [,step]    
   ! statement(s)
   …
end do

Où,

  • la variable de boucle var doit être un entier

  • start est la valeur initiale

  • stop est la valeur finale

  • step est l'incrément, si cela est omis, alors la variable var est augmentée de l'unité

Par exemple

! compute factorials
do n = 1, 10
   nfact = nfact * n  
   ! printing the value of n and its factorial
   print*,  n, " ", nfact   
end do

Représentation schématique

Voici le flux de contrôle pour la construction de la boucle do -

  • L'étape initiale est exécutée en premier, et une seule fois. Cette étape vous permet de déclarer et d'initialiser toutes les variables de contrôle de boucle. Dans notre cas, la variable var est initialisée avec la valeur start.

  • Ensuite, la condition est évaluée. Si c'est vrai, le corps de la boucle est exécuté. S'il est faux, le corps de la boucle ne s'exécute pas et le flux de contrôle passe à l'instruction suivante juste après la boucle. Dans notre cas, la condition est que la variable var atteigne sa valeur finale stop.

  • Une fois le corps de la boucle exécuté, le flux de contrôle revient à l'instruction d'incrémentation. Cette instruction vous permet de mettre à jour la variable de contrôle de boucle var.

  • La condition est à nouveau évaluée. Si c'est vrai, la boucle s'exécute et le processus se répète (corps de la boucle, puis incrémentation, puis à nouveau condition). Une fois que la condition devient fausse, la boucle se termine.

Exemple 1

Cet exemple imprime les nombres 11 à 20 -

program printNum 
implicit none  

   ! define variables
   integer :: n
   
   do n = 11, 20     
      ! printing the value of n 
      print*,  n 
   end do 
   
end program printNum

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

11
12
13
14
15
16
17
18
19
20

Exemple 2

Ce programme calcule les factorielles des nombres 1 à 10 -

program factorial  
implicit none  

   ! define variables
   integer :: nfact = 1   
   integer :: n  
   
   ! compute factorials   
   do n = 1, 10      
      nfact = nfact * n 
      ! print values
      print*,  n, " ", nfact   
   end do 
   
end program factorial

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

1             1
2             2
3             6
4            24
5           120
6           720
7          5040
8         40320
9        362880
10       3628800