|
auteur : Germain Salvato-Vallverdu |
La structure If...Then...(ElseIf)...Else...EndIf permet d'introduire des conditions et d'exécuter certaines lignes
de code si ces conditions sont vrais.
Syntaxe générale d'une boucle IF | If ( condition1 ) Then
ElseIf (condition2 ) Then
ElseIf (condition3 ) Then
Else
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 | If ( condition ) instruction à réaliser si condition est vrai
|
|
|
auteur : 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).
|
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
du à leur enregistrement sur un nombre limité de bits. Il s'en suit que la manipulation des réels peut conduire à l'introduction
d'erreur numérique. Celle-ci sont généralement suffisament faible 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.
|
|
auteur : Germain Salvato-Vallverdu |
En fortran comme dans la plupart des langage 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.
|
i = 1
If (i == j ) write (*,*)" i et j sont égaux "
|
|
|
auteur : 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 |
|
|
auteur : 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 | If ( i > 10 .AND. i < 20 ) Then
ElseIf ( i == 10 .OR. i == 20 ) Then
ElseIf ( .NOT. i == 1 ) Then
Endif
|
|
|
auteur : Germain Salvato-Vallverdu |
Il est quelque fois intéressant de répéter un grand nombre de fois une même instructions 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 |
integer ::i,debut,fin,pas
Do i=debut,fin,pas
Enddo
|
Voici par exemple comment calculer la somme des 20 premiers entiers :
Somme des 20 premiers entiers | PROGRAM somme
implicit none
integer ::i,som
Do i=1,20,1
som = som + 1
Enddo
write (*,*)" somme : " ,som
END PROGRAM somme
|
Les éléments définissant le debut, 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
|
|
auteur : Germain Salvato-Vallverdu |
Il est parfois intéressant de pouvoir sortir d'une boucle d'où 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
| Do i=1,10,1
If ( condition ) exit
Enddo
|
|
|
auteur : 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 utlise la commande cycle pour passer la valeur 6 du compteur et recommencer à l'itération 7.
Exemple | Do i=1,10,1
If ( condition ) cycle
Enddo
|
|
|
auteur : 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 | Select case (choix)
case (1)
case (2,3)
case (4:10)
case (11:)
case default
End Select
|
|
Consultez les autres F.A.Q's
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.