|
~ 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 ~
~ Partenaires ~
|
~ Bases de la programmation ~
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. 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.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
Dans les exercices ci-dessous, pensez à choisir la structure conditionnelle la plus appropriée pour
l'écriture de l'algorithme. 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 ~
. 20 livres sur Visual Basic
. 1474 icônes ~ Affichage ~
~ Recommander ~
|