X. Répétition des déclarations▲
X-A. Introduction▲
Dans tout le code dont nous avons parlé jusqu'à présent, chaque déclaration n'a été exécutée qu'une seule fois. On peut toujours reproduire le code dans des fonctions en les appelant à plusieurs reprises [1].
//[1]
NSLog
(
@"Julia est mon actrice préférée."
);
NSLog
(
@"Julia est mon actrice préférée."
);
NSLog
(
@"Julia est mon actrice préférée."
);
Mais il faudra quand même répéter l'appel. Parfois, vous devrez exécuter une ou plusieurs des déclarations à plusieurs reprises. Comme tous les langages de programmation, Objective-C offre plusieurs moyens d'y parvenir.
X-B. for() (pour())▲
Si vous connaissez le nombre de fois que la déclaration (ou un groupe de déclarations) doit être répétée, vous pouvez le préciser en mettant ce nombre dans la déclaration for de l'exemple [2]. Le nombre doit être un entier, car vous ne pouvez évidemment pas répéter une opération 2,7 fois.
//[2]
int
x;
for
(
x =
1
; x <=
10
; x++
)
{
NSLog
(
@"Julia est mon actrice préférée."
); //[2.4]
}
NSLog
(
@"La valeur de x est %d"
, x);
Dans l'exemple [2], la chaîne de caractères [2.4] sera affichée dix fois. Tout d'abord, on attribue la valeur 1 à x. L'ordinateur évalue alors la condition de la formule que nous avons mise en place : x <= 10. Cette condition est remplie (puisque x est égal à 1), de sorte que la ou les déclaration(s) entre les accolades sont effectuées. Puis la valeur de x est incrémentée, ici de un, en raison de l'expression x++. Ensuite, la valeur résultante de x, maintenant 2, est comparée à 10. Comme elle est toujours inférieure et non égale à 10, les déclarations entre les accolades sont à nouveau exécutées. Dès que x vaut 11, la condition x <= 10 n'est plus remplie. La dernière déclaration [2.6] a été mise pour vous démontrer que x est égal à 11, et non 10, une fois la boucle terminée.
Parfois, vous devrez faire plus de choses qu'une simple incrémentation à l'aide de x++. Tout ce que vous avez à faire, c'est de la remplacer par l'expression dont vous avez besoin. L'exemple[3] suivant convertit des degrés Fahrenheit en degrés Celsius.
//[3]
float
celsius, tempEnFahrenheit;
for
(
tempEnFahrenheit =
0
; tempEnFahrenheit <=
200
; tempEnFahrenheit =
tempEnFahrenheit +
20
)
{
celsius =
(
tempEnFahrenheit -
32.0
) *
5.0
/
9.0
;
NSLog
(
@"%10.2f -> %10.2f"
, tempEnFahrenheit, celsius);
}
La sortie de ce programme est :
0.00 -> -17.78
20.00 -> -6.67
40.00 -> 4.44
60.00 -> 15.56
80.00 -> 26.67
100.00 -> 37.78
120.00 -> 48.89
140.00 -> 60.00
160.00 -> 71.11
180.00 -> 82.22
200.00 -> 93.33
X-C. while() (tant que())▲
Objective-C dispose de deux autres moyens pour répéter une suite de déclarations :
while () { }
et
do {} while ()
Le premier est essentiellement identique à la boucle for débattue ci-dessus. Il y a d'abord une évaluation de condition. Si le résultat de cette évaluation est faux, les déclarations de la boucle ne sont pas exécutées.
//[4]
int
compteur =
1
;
while
(
compteur <=
10
)
{
NSLog
(
@"Julia est mon actrice préférée.
\n
"
);
compteur =
compteur +
1
;
}
NSLog
(
@"La valeur de compteur est %d"
, compteur);
Dans ce cas, la valeur de compteur est 11, si vous en avez besoin plus tard dans votre programme !
Avec l'instruction do {} while (), les déclarations entre les accolades sont exécutées au moins une fois.
//[5]
int
compteur =
1
;
do
{
NSLog
(
@"Julia est mon actrice préférée.
\n
"
);
compteur =
compteur +
1
;
}
while
(
compteur <=
10
);
NSLog
(
@"La valeur de compteur est %d"
, compteur);
La valeur finale de compteur est de 11.
Vous avez maintenant acquis un peu plus de compétences en programmation pour pouvoir attaquer un sujet difficile. Dans le prochain chapitre, nous allons construire notre premier programme avec interface utilisateur graphique (GUI).