Dans les instructions conditionnelles, on peut utiliser des
labels, ces labels identifiant un endroit précis du programme. Ces labels sont
composés d'un nom suivit de deux points,
Exemple,
UnEndroit :
message = "contenu du
message"
Certaines instructions que nous verrons par la suite
permettent de faire des sauts à des labels à partir de certains points du
programme.
Les if permettent de choisir facilement entre deux options,
mais on à parfois le choix entre plus de deux options. On peut alors soit
cascader les if, (peu recommandé), ou utiliser le switch.
Structure du switch,
soit une variable tri, (type texte)
cette variable choix peut prendre les valeurs, option1,
option2, etc.
Syntaxe,
switch(tri){
case option1 :
opération à
effectuer en cas d'option1
break
case option2 :
opération à
effectuer en cas d'option2
break
.......... Autres case option
default
:
opération à
effectuer si aucune autre option n'est vérifié
}
L'instruction switch est suivi du nom de la variable utilisé
pour effectuer le choix, ici (tri).
Chaque choix est composé du mot case suivi d'une la valeur
de la variable tri. Cette valeur est un label, assimilable à une désignation
de ligne.
Exemple,
Case "voiture" :
opération à effectuer si tri ==
"voiture"
break
Dans ce cas on veut que (opération à effectuer) soit unique
et c'est pour cela que les opérations sont suivit de l'instruction breakl,
(interrompre). Si le break est omis, le système exécutera l'opération
sélectionné par la valeur de la variable et celles qui la suivent jusqu'à la
rencontre d'un break ou de la fin de l'instruction switch. Nous allons le voir
sur des exemples.
Exemple,
Vous avez un certain nombre fruits en magasin, oranges,
pommes, bananes, cerises etc... Vous voulez renseigner des visiteurs sur la
disponibilité de vos fruits. Ils saisissent donc un nom de fruits. Un message
est alors choisi puis émis l'informant de la disponibilité des fruits
demandés. Organigramme
du programme.
Le programme se trouve dans la forme ci-dessous. Avant de
faire fonctionner ce programme, voyons le dernier label, default :
Ce label correspond à la clause else de l'instruction if, si
aucun cas ne se trouve vérifié par la valeur de la variable, (ici reponse), la
clause default est exécutée. Cette clause est facultative.
Exercice, entrez dans la boite prompt des noms de fruits
existant dans le switch ou non existant, comme poires, pêches, etc...
Exercice, supprimez l'instruction break de la case
"oranges", répondre oranges au prompt, observez que le message émis
est celui des pommes. En effet le programme saute au cas "oranges" et
exécute normalement l'assignation du message, ne rencontrant pas de break, il
exécute le cas suivant "pommes" et saute au break et continue
l'exécution du programme après le switch. Corrigé
Exercice, supprimez/rétablissez des break observez ce qui se
passe
Prenons l'exemple d'un system composé
d'un moteur, d'un disjoncteur et d'une alarme. Pour simuler le fonctionnement du
système nous admettrons qu'une variable à 1 signifie que l'élément
correspondant est activé.
Nous allons simuler le démarrage/redémarrage du sytème,
trois cas peuvent se présenter,
démarrage normal du système,
(normal)
redémarrage après arrêt d'urgence,
(urgence, disjoncteur ouvert)
redemarrage après incident et mise
en route de l'alarme, (incident, disjoncteur ouvert, alarme en fonctionnement) Organigramme
du programme
Dans le programme ci-dessous, nous simulons un redémarrage
du système. L'assignation des variables simule un arrêt en alarme. Vous entrez
dans la boite prompt le diagnostic d'arrêt, incident, urgence ou normal. Seul
"incident" vous donnera les bonnes valeurs, moteur = 1, disjoncteur =
1, alarm = 0. L'entrée d'un type d'arrêt non répertorié ou du bouton
annuler, mettra tout les paramêtres, à 0, (condition défault du switch).
Remarquez la position du break, il permet l'addition des trois premier cas, il
empêche l'exécution de la clause default sauf si la valeur de reponse ne
correspond à aucun de types d'arrêt prévus.