08.06.2015 Views

11. Les structures répétitives et conditionnelles

11. Les structures répétitives et conditionnelles

11. Les structures répétitives et conditionnelles

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!