Accueil > QBasic > QBasic – Structure conditionnelle

QBasic – Structure conditionnelle

This entry is part 11 of 30 in the series QBasic - Tutoriel

Nous avons vu que la sortie d’une boucle peut être définie par une condtion. Nous allons voir dans ce chapitre
les CONDITIONS, tout court.

La condition évalue si une expression peut être considéré comme vrai ou fausse, et execute la ou les instructions
selon le cas. On n’utilise pour cela la structure IF…THEN…ELSE. La syntaxe est différente suivant que
l’on ai une ou plusieurs instructions.


  • Avec une instruction : La condition s’écrit en une ligne. Imaginez que l’on ai à tester une
    variable ‘Age‘, comme dans l’exemple du chapitre précédent :

    INPUT « Quel est votre âge ? », Age
    IF Age > 18 THEN PRINT « Vous êtes majeur »
    ‘ SI Age > 18 ALORS « Vous êtes majeur »

    Décomposons. Tout d’abord, le mot clef IF (si en Anglais). Puis l’expression à évaluer. Ici,
    l’expression est considérée comme VRAI si la variable ‘Age‘ est supérieur à 18. SI la
    variable ‘Age‘ est supérieur à 18, ALORS (THEN) on execute l’instruction placé après THEN.
    Dans cette exemple, c’est PRINT « Vous êtes majeur ».

    On aurrait pu completer cet exemple avec ELSE. ELSE signifie Autre :

    INPUT « Quel est votre âge ? », Age
    IF Age > 18 THEN PRINT « Vous êtes majeur » ELSE PRINT « Vous êtes mineur »
    ‘ SI Age > 18 ALORS Vous êtes majeur SINON Vous êtes mineur

    Avec cette condition, SI (IF) Age est supérieur à 18, ALORS (THEN)
    on execute PRINT « Vous êtes majeur » SINON (ELSE) on execute l’autre instruction,
    PRINT « Vous êtes mineur »
    .

    L’instruction après ELSE peut être une condition. Mais il est préférable, pour des raisons de clarté,
    d’utiliser l’autre syntaxe de IF…THEN…ELSE.
  • Avec plusieurs instruction : Dans l’exemple ci-dessus, il n’y avait que l’instruction PRINT
    a executer. Mais il arrive que les instructions se multiplient. Comme il serait peu astucieux d’écrire
    autant de conditions qu’il y a d’instructions, nous allons adopter une autre syntaxe un peu différente
    de IF…THEN…ELSE :

    INPUT « Quel est votre âge ? », Age
    IF Age < 18 THEN ' SI Age < 18 ALORS :
    PRINT "Tu es mineur" ' Instruction 1
    PRINT "L'accès à ce service t'es interdit" ' Instruction 2
    PRINT "Reviens quand tu portera des caleçons" ' Instruction 3
    ELSE ' SINON :
    PRINT "C'est bon vous êtes majeur" ' Instruction 1
    PRINT "Vous pouvez avoir accès à ce service" ' Instruction 2
    ENDIF ' FIN de la
    ' structure conditionnelle

    Avec une tel structure, on peut également ajouter une condition supplémentaire avec ELSEIF.
    On aurrait pu compléter le programme précedent ainsi :

    INPUT « Quel est votre âge ? », Age
    IF Age < 18 THEN ' SI Age < 18 ALORS :
    PRINT "Tu es mineur" ' Instruction 1
    PRINT "L'accès à ce service t'es interdit" ' Instruction 2
    PRINT "Reviens quand tu portera des caleçons" ' Instruction 3
    ELSEIF Age > 65 THEN ‘ SI Age > 65 ALORS :
    PRINT « Vous êtes trop vieux pour ça! » ‘ Instruction 1
    PRINT « Rentrez sagement chez vous » ‘ Instruction 2
    ELSE ‘ SINON :
    PRINT « C’est bon vous êtes majeur » ‘ Instruction 1
    PRINT « Vous pouvez avoir accès à ce service » ‘ Instruction 2
    ENDIF ‘ FIN de la
    ‘ structure conditionnelle

    De la même façon qu’avec les boucles, on peut imbriquer plusieurs blocs IF…THEN…ELSE l’un
    dans l’autre :

    INPUT « Quel est votre sexe (H ou F) ? », Sexe$
    INPUT « Quel est votre age ? », Age
    IF Sexe$ = « H » THEN ‘ Début du premier Bloc
    IF Age > 18 THEN ‘ Bloc imbriqué
    PRINT « Vous êtes un Homme majeur »
    ELSE
    PRINT « Vous êtes un Homme mineur »
    ENDIF
    ELSEIF Sexe$ = « F » THEN ‘ Deuxième condition du premier Bloc
    IF Age > 18 THEN ‘ Bloc imbriqué
    PRINT « Vous êtes une Femme majeur »
    ELSE
    PRINT « Vous êtes une Femme mineur »
    ENDIF
    ELSE ‘ Autres cas (!)
    PRINT « Votre sexe reste indéterminé et vous êtes un mystère pour nous. »
    PRINT « Veuillez réessayer »
    RUN
    ENDIF

Remarque


Le THEN peut être optionnel dans certains cas. Si au lieu d’une instruction, on avait eu un
GOTO, on aurrait pu s’en passer :

INPUT « Quel est votre âge ? », Age
IF Age > 18 GOTO Majeur
END ‘ Fin du programme

Majeur:
PRINT « Vous êtes majeur »

Series Navigation«QBasic – Les boucles conditionnellesQBasic – Les cas»
Categories: QBasic Tags:
  1. Yves-Henri
    27/03/2002 à 14:38 | #1

    Avec l’avant-dernier programme (avant
    Remarque), les phrases
    « Votre sexe reste… » et
    « Veuillez réessayer »
    ne s’affichent pas, ou bien
    quasi-subliminalement.

  2. webmaster
    27/03/2002 à 18:31 | #2

    C’est chercher la petite bête ;-)
    Tu peux mettre un SLEEP juste avant RUN par exemple :

    PRINT « Votre sexe reste indéterminé et vous êtes un mystère pour nous. »
    PRINT « Veuillez réessayer »
    SLEEP
    RUN

    Raphaël

  1. Pas encore de trackbacks