IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Les boucles
        Comment dire Si ... et Sinon ... (Boucle IF THEN ELSE) ?
        Comment écrire une condition d'égalité ?
        Quelle est la différence entre = et == ?
        Comment écrire supérieur, inférieur, supérieur ou égal et inférieur ou égal ?
        Quels sont les opérateures logiques ?
        Comment faire répéter une série d'instructions (boucle DO) ?
        Comment sortir prématurément d'une boucle DO ?
        Comment passer une itération d'une boucle DO ?
        Comment construire une liste de choix (SELECT CASE) ?



Comment dire Si ... et Sinon ... (Boucle IF THEN ELSE) ?
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
    ! 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
 If ( condition ) instruction à réaliser si condition est vrai

Comment écrire une condition d'égalité ?
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).
 ! é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 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.


Quelle est la différence entre = et == ?
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.
 ! 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"

Comment écrire supérieur, inférieur, supérieur ou égal et inférieur ou égal ?
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

Quels sont les opérateures logiques ?
auteur : Germain Salvato-Vallverdu
Le tableau suivant regroupe les différents opérateurs logiques.

OpérateurEffet
condition1 .AND. condition2condition1 ET condition2
condition1 .OR. condition2condition1 OU condition2
.NOT. condition1 L'inverse de condition1
Exemple d'utilisation d'opérateur logique
 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

Comment faire répéter une série d'instructions (boucle DO) ?
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
 ! 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
 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


Comment sortir prématurément d'une boucle DO ?
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
    ! instructions
    If( condition ) exit ! si condition est vrai on sort de la boucle
 Enddo

Comment passer une itération d'une boucle DO ?
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 ! si condition est vrai on passe à l'itération suivante
    ! instructions
 Enddo

Comment construire une liste de choix (SELECT CASE) ?
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)
       ! 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


Consultez les autres F.A.Q's


Valid XHTML 1.1!Valid CSS!

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.