Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

~ Bases de la programmation ~
. Retour au sommaire

. Structures conditionnelles
    . SI
    . SELON QUE
    . Exercices
    . Corrigés

~ Structures conditionnelles ~

On entend par structure conditionnelle, la possibilité d'orienter un algorithme en fonction de choix particuliers. Les structures conditionnelles nous ouvrent de nouveaux horizons pour l'élaboration d'algorithmes. Cela représente une notion très importante qu'il faut pouvoir assimiler si l'on cherche à aller plus loin. Il en existe deux.

~ SI ~

Elle permet d'exprimer une condition simple (binaire). L'évaluation de la condition va déterminer la suite du déroulement de l'algorithme.

SI (condition)
    ALORS
        action_1
    SINON
        action_2
FIN SI
action_3
Une seule des deux actions peut être exécutée (action_1 ou action_2), l'algorithme continue ensuite son déroulement normal (action_3). Si la condition évaluée est vraie, c'est l'action 1 qui est effectuée, sinon (si l'évaluation est fausse), l'action 2 est exécutée. On indique en général la fin de l'instruction conditionnelle pour bien délimiter son champ d'action.

Les conditions peuvent prendre des formes plus ou moins complexes :

SI (total = 0) ...
SI ((mois > 2) ET (mois < 5)) ...
SI (((reponse = "OUI") ET (total > 5)) OU (total > 10)) ...
Si elle n'est pas nécessaire, la partie SINON peut être omise. On peut parfaitement enchaîner plusieurs instructions conditionnelles, d'ou l'intérêt de bien en délimiter la fin et d'indenter correctement l'algorithme.

Voici un petit exemple simple qui permet de comprendre concrètement le fonctionnement de cette instruction:

"Ecrire un algorithme qui calcule le maximum entre 2 nombres"
LIRE nombre_1
LIRE nombre_2
SI (nombre_1 > nombre_2)
    ALORS
        ECRIRE nombre_1
    SINON
        SI (nombre_1 < nombre_2)
            ALORS
                ECRIRE nombre_2
            SINON
                ECRIRE "Les nombres sont identiques"
        FIN SI
FIN SI
On assume que si le premier nombre n'est pas supérieur au second et inversement, c'est qu'ils doivent être identiques.

~ SELON QUE ~

Cette forme conditionnelle permet de mettre en place des choix multiples.

SELON QUE
    (condition_1):
        action_1
    (condition_2):
        action_2
    ...
    (condition_n):
        action_n
    SINON:
        action
FIN SELON
Les conditions sont évaluées dans l'ordre, les unes après les autres, et dès qu'une de celle-ci est vérifiée l'action associée est exécutée. Après quoi on passe au FIN SELON pour continuer avec la suite de l'algorithme. On peut utiliser une instruction SINON (facultative), dont l'action sera exécutée si aucune des conditions évaluées n'a été remplie.
Remarque : L'instruction SELON QUE peut être ramené à un enchaînement de SI imbriqués.

Si on reprend l'exemple précédent, il s'écrira alors de la manière suivante:
LIRE nombre_1
LIRE nombre_2
SELON QUE
    (nombre_1 > nombre_2):
        ECRIRE nombre_1
    (nombre_1 < nombre_2):
        ECRIRE nombre_2
    (nombre_1 = nombre_2):
        ECRIRE "Les nombres sont identiques"
FIN SELON
~ Exercices ~

Dans les exercices ci-dessous, pensez à choisir la structure conditionnelle la plus appropriée pour l'écriture de l'algorithme.

1) "Faire un algorithme qui permet de résoudre une équation du premier degré de la forme 'Ax + B = 0', en retournant la valeur de x en fonction de A et B"

2) "Calculer la durée d'un trajet connaissant l'heure de départ et d'arrivée"
On se contente des heures et des minutes, la durée totale ne dépassera jamais 24 heures.

3) "Calculer le lendemain d'une journée donnée (jour, mois, année)"
On ne tiendra pas compte ici des années bisextiles, le mois de février aura toujours 28 jours.

~ Corrigés ~

Il n'y a pas de correction unique, celles qui sont proposées ici représentent juste une manière de faire.

1) "Faire un algorithme qui permet de résoudre une équation du premier degré de la forme 'Ax + B = 0'"

LIRE a
LIRE b
SI (a = 0)
    ALORS
        ECRIRE "Impossible, division par zéro!"
    SINON
        ECRIRE (-b/a)
FIN SI

2) "Calculer la durée d'un trajet connaissant l'heure de départ et d'arrivée"
On se contente des heures et des minutes, la durée totale ne dépassera jamais 24 heures.

LIRE heure_depart
LIRE minute_depart
LIRE heure_arrivee
LIRE minute_arrivee
SI (minute_depart > minute_arrivee)
    ALORS
        heure_arrivee = heure_arrivee - 1
        minute_duree = (60 - minute_depart) + minute_arrivee
    SINON
        minute_duree = minute_arrivee - minute_depart
FIN SI
SI (heure_depart > heure_arrivee)
    ALORS
        heure_duree = (24 - heure_depart) + heure_arrivee
    SINON
        heure_duree = heure_arrivee - heure_depart
FIN SI
ECRIRE heure_duree, minute_duree

3) "Calculer le lendemain d'une journée donnée (jour, mois, année)"
Il faut tenir compte ici du nombre de jour que l'on a dans chaque mois. La solution proposée ci-dessous n'est pas unique, j'ai décidé de mélanger les deux instructions conditionnelles, mais aura aussi bien pu le faire uniquement avec des SI ou un SELON QUE.

LIRE jour
LIRE mois
LIRE annee
SELON QUE
    (mois = 4) OU (mois = 6) OU (mois = 9) OU
    (mois = 11):
        SI (jour = 30)
            nouveau_jour = 1
            nouveau_mois = nouveau_mois + 1
        SINON
            nouveau_jour = jour + 1
        FIN SI
    (mois = 1) OU (mois = 3) OU (mois = 5) OU
    (mois = 7) OU (mois = 8) OU (mois = 10):
        SI (jour = 31)
            nouveau_jour = 1
            nouveau_mois = nouveau_mois + 1
        SINON
            nouveau_jour = jour + 1
        FIN SI
    (mois = 2):
        SI (jour = 28)
            nouveau_jour = 1
            nouveau_mois = nouveau_mois + 1
        SINON
            nouveau_jour = jour + 1
        FIN SI
    (mois = 12):
        SI (jour = 31)
            nouveau_jour = 1
            nouveau_mois = 1
            nouvelle_annee = nouvelle_annee + 1
        SINON
            nouveau_jour = jour + 1
        FIN SI
FIN SELON
ECRIRE jour, mois, annee
~ En stock ~
. 214 fonctions API
. 12 applications
. 130 fonctions
. 38 liens dans l'annuaire
. 3 questionnaires
. 20 livres sur Visual Basic
. 1474 icônes

~ Affichage ~

~ Recommander ~





Géré par LBB.ORG
Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr