IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Fortran

FAQ FortranConsultez toutes les FAQ

Nombre d'auteurs : 1, nombre de questions : 70, dernière mise à jour : 23 juillet 2021 

 
OuvrirSommaire Les boucles

La structure If...Then...(ElseIf)...Else...EndIf permet d'introduire des conditions et d'exécuter certaines lignes de code si ces conditions sont vraies.

Syntaxe générale d'une boucle IF
Sélectionnez
 If ( condition1 ) Then
    ! instructions à réaliser si condition1 est vrai
 ElseIf (condition2 ) Then
    ! instructions à réaliser si condition2 est vrai
 ElseIf (condition3 ) Then
    ! instructions à réaliser si condition3 est vrai
 Else
    ! instructions à réaliser si aucun des trois conditions n'est vrai
 Endif

Si on a une seule condition et une seule instruction, on peut également utiliser le If logique dont la syntaxe est :

Syntaxe du If logique
Sélectionnez
 If ( condition ) instruction à réaliser si condition est vrai
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

En programmation le signe = est réservé à l'assignation d'une valeur à une variable. Pour tester l'égalité de deux variables on utilise le signe == (.eq. en FORTRAN77).

 
Sélectionnez
 ! écrire i et j s'ils sont égaux
 If (i == j ) write(*,*)"i et j sont égaux"

Il est dangereux d'écrire une condition d'égalité entre des réels. En effet, les nombres réels sont soumis à un arrondi dû à leur enregistrement sur un nombre limité de bits. Il s'ensuit que la manipulation des réels peut conduire à l'introduction d'erreurs numériques. Celles-ci sont généralement suffisamment faibles pour ne pas perturber les résultats mais aboutissent au fait que 2 réels ne sont, en pratique, jamais égaux car ils n'ont pas été arrondis de la même manière.

Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

En Fortran comme dans la plupart des langages de programmation le signe = se lit "reçoit" et sert à assigner une valeur à une variable. Le signe == sert lui à tester l'égalité entre deux variables.

 
Sélectionnez
 ! on affecte 1 à la variable i
 i = 1

 ! on teste si i et j sont égaux
 If (i == j ) write(*,*)"i et j sont égaux"
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Le tableau suivant récapitule les différents comparateurs :

Comparateur Symbole en Fortran90 Symbole en FORTRAN77
supérieur i > j i .gt. j
supérieur ou égal i >= j i .ge. j
Inférieur i < j i .lt. j
Inférieur i <= j i .le. j
Différent i /= j i .ne. j
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Le tableau suivant regroupe les différents opérateurs logiques.

Opérateur Effet
condition1 .AND. condition2 condition1 ET condition2
condition1 .OR. condition2 condition1 OU condition2
.NOT. condition1 L'inverse de condition1
Exemple d'utilisation d'opérateur logique
Sélectionnez
 If ( i > 10 .AND. i < 20 ) Then
    ! i est entre 10 et 20
 ElseIf ( i == 10 .OR. i == 20 ) Then
    ! i égale 10 ou 20
 ElseIf ( .NOT. i == 1 ) Then
    ! i n'est pas égal à 1
 Endif
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Il est quelquefois intéressant de répéter un grand nombre de fois une même instruction sur une série de variables. La boucle DO...ENDDO est faite pour ça. Dans l'exemple suivant on va répéter les instructions pour des valeurs d'un entier i allant de l'entier debut à l'entier fin par incrément de pas.

Syntaxe générale d'une boucle DO
Sélectionnez
 ! i est un entier qui sert de compteur
 integer::i,debut,fin,pas
 
 Do i=debut,fin,pas
    ! instructions
 Enddo

Voici par exemple comment calculer la somme des 20 premiers entiers :

Somme des 20 premiers entiers
Sélectionnez
 PROGRAM somme
 implicit none
 integer::i,som
      
 Do i=1,20,1
    som = som + i
 Enddo
  
 write(*,*)"somme :",som

 END PROGRAM somme

Les éléments définissant le début, la fin et le pas de la boucle peuvent être des expressions arithmétiques entières.

Il est possible de ne pas définir de compteur et de faire une boucle infinie. Il faut alors ajouter une instruction de sortie à l'intérieur de la boucle en utilisant la commande exit

Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Il est parfois intéressant de pouvoir sortir d'une boucle do avant la fin du compteur. Ou encore de ne pas mettre de compteur et de sortir de la boucle lorsqu'une condition est réalisée. Pour cela on se sert de la commande exit

 
Sélectionnez
 Do i=1,10,1
    ! instructions
    If( condition ) exit ! si condition est vrai on sort de la boucle
 Enddo
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Supposons que le compteur d'une boucle DO...ENDDO aille de 1 à 10 mais que l'on ne veux pas passer par la valeur 6. Dans ce cas on utilise la commande cycle pour passer la valeur 6 du compteur et recommencer à l'itération 7.

Exemple
Sélectionnez
 Do i=1,10,1
    If( condition ) cycle ! si condition est vrai on passe à l'itération suivante
    ! instructions
 Enddo
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Soit choix un entier. La boucle Select Case permet en fonction de la valeur de choix d'exécuter une série d'instructions. Il s'agit en fait d'une boucle du même genre qu'une série d'instruction If ElseIf EndIf.

Boucle select case
Sélectionnez
 Select case(choix)
    case(1)
       ! si choix égal 1 exécuter les instructions suivantes
    case(2,3)
       ! si choix égal 2 ou 3 exécuter les instructions suivantes
    case(4:10)
       ! si choix est compris entre 4 et 10 inclus exécuter les instructions suivantes
    case(11:)
       ! si choix est suppérieur ou égal à 11 exécuter les instructions suivantes
    case default
       ! sinon exécuter les instructions suivantes
 End Select
Créé le 22 octobre 2008  par Germain Salvato-Vallverdu

Copyright © 2008 developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.