11. Les structures répétitives et conditionnelles
11. Les structures répétitives et conditionnelles
11. Les structures répétitives et conditionnelles
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
420-183<br />
Programmation 1<br />
<strong>11.</strong> <strong>Les</strong> <strong>structures</strong><br />
<strong>répétitives</strong> <strong>et</strong><br />
<strong>conditionnelles</strong><br />
La possibilité de pouvoir répéter l'exécution de certaines instructions est, en programmation, un<br />
besoin essentiel. Si nous voulons qu'une application, par exemple, effectue certains traitements pour<br />
chacune des lignes d'une facture, comme de calculer le prix total à partir du prix unitaire multiplié par<br />
le nombre d'articles, nous ne voulons pas devoir coder ce traitement autant de fois qu'il y a de lignes<br />
sur la facture! Nous voulons pouvoir définir ce qu'est le traitement d'une ligne de facture <strong>et</strong> spécifier<br />
d'exécuter automatiquement ce même traitement pour chacune des lignes. C'est ce à quoi servent les<br />
instructions <strong>répétitives</strong>, communément appelées «boucles».<br />
L'instruction for<br />
L'instruction for perm<strong>et</strong> d'exécuter une instruction ou un groupe d'instructions un certain nombre de<br />
fois. Sa forme de base est la suivante:<br />
for(initialisation ; condition ; incrémentation)<br />
{<br />
instruction(s) à exécuter ;<br />
}<br />
Le paramètre «initialisation» est une instruction qui initialise une variable qui servira de compteur du<br />
nombre de fois que la boucle des «instructions à exécuter» sera effectuée. Le paramètre «condition»<br />
spécifie que la boucle doit être exécutée tant que la condition reste vraie. Quant au paramètre<br />
«incrémentation» c'est une instruction qui doit être exécutée pour incrémenter le compteur, après<br />
chaque itération de la boucle. Supposons par exemple que nous voulions exécuter une même<br />
instruction cinq fois :<br />
for(vCompteur=1 ; vCompteur
ce que la condition ne soit plus vraie, c'est-à-dire lorsque la valeur de vCompteur sera égale à 6, après<br />
l'exécution de la boucle une cinquième fois.<br />
Le nombre d'itération que va comporter la boucle n'a pas à être nécessairement prédéfini.<br />
Supposons qu'un vecteur vValeurs contienne un certain nombre de valeurs <strong>et</strong> que nous voulions<br />
additionner ces valeurs. Il suffit de faire une boucle qui recueille à tour de rôle chacun des éléments<br />
du vecteur <strong>et</strong> qui les additionne, même si le nombre de valeurs n'est pas fixe. Si le nombre de valeurs<br />
est stocké dans une variable vNombre, il suffit d'écrire :<br />
var vTotal=0;<br />
for(vCompteur=0 ; vCompteur
c'est-à-dire qu'une condition soit vraie ou fausse, le switch perm<strong>et</strong> de vérifier de multiples conditions<br />
simultanément.<br />
Supposons par exemple qu'un formulaire contienne un champ province <strong>et</strong> que, selon la province<br />
sélectionnée, nous voulions utiliser un taux de taxe de vente différent. Nous pourrions effectuer ce<br />
choix au moyen d'une série d'instructions if qui vérifieraient successivement s'il s'agit de l'une ou<br />
l'autre des provinces <strong>et</strong> qui fixerait le taux approprié. Mais l'instruction switch nous perm<strong>et</strong> de<br />
simplifier c<strong>et</strong>te tâche. Si la variable vProvince peut contenir trois valeurs différentes, soit «Québec»,<br />
«Ontario» ou «Manitoba» <strong>et</strong> que les taux de taxe sont respectivement de 7%, 6% <strong>et</strong> 9%, nous<br />
pouvons assigner la bonne valeur à une variable vTaux au moyen des instructions :<br />
switch(vProvince)<br />
{<br />
case "Québec" : vTaux = 0.07 ; break ;<br />
case "Ontario" : vTaux = 0.06 ; break ;<br />
case "Manitoba" : vTaux = 0.09 ;<br />
}<br />
Notez que l'instruction break, qui a été spécifiée au deux premiers cas, est essentielle car elle indique<br />
qu'après avoir effectué la bonne assignation de la valeur du taux, il faut ignorer les cas suivants. Il n'y<br />
a qu'au dernier cas où il n'est pas nécessaire de spécifier une instruction break, puisqu'on est rendu à<br />
la fin de l'instruction switch. C<strong>et</strong>te particularité est commune à tous les dialectes javanais <strong>et</strong> à tous les<br />
autres langages issus du langage C, soit Java, JavaScript, PHP, C, C++, C#, <strong>et</strong>c. Un écueil majeur<br />
dans lequel s'enfarge tout programmeur débutant est d'oublier une instruction break dans une<br />
instruction switch!<br />
Il est possible, à la suite de l'énumération de tous les cas d'une instruction switch, de prévoir «tous les<br />
autres cas». Ceci s'effectue au moyen du cas default. Si dans l'exemple précédent, la province peut<br />
avoir de nombreuses autres valeurs mais le taux est de zéro pour tous ces autres cas, l'instruction<br />
précédente devient :<br />
switch(vProvince)<br />
{<br />
case "Québec" : vTaux = 0.07 ; break ;<br />
case "Ontario" : vTaux = 0.06 ; break ;<br />
case "Manitoba" : vTaux = 0.09 ; break ;<br />
default : vTaux = 0 ;<br />
}<br />
Notez que nous avons dû ajouter une instruction break dans le traitement du Manitoba, puisqu'il ne<br />
s'agit plus du dernier cas traité dans la liste des cas de l'instruction switch.<br />
Dans c<strong>et</strong> exemple, il n'y avait qu'une seule instruction dans chacun des traitements de cas, soit<br />
l'assignation de la valeur du taux à la variable vTaux. Il aurait cependant pu y avoir plusieurs<br />
instructions pour chaque cas, à la condition bien sûr que la dernière soit toujours une instruction<br />
break.<br />
Session A-2008 © 2008, Marc-Gabriel Vallières page 11-3