Lors de l'étude de la boucle for, nous avons dit que si le nombre de répétitions de toute action est connu, vous pouvez raccourcir le programme à l'aide de l'opérateur de boucle for. Mais que se passe-t-il si le nombre de répétitions n'est pas connu ? Et cela arrive assez souvent.
Par exemple, rappelons-nous la conversion d'un nombre d'un système de numération décimal à un autre : nous devons diviser le nombre (puis le résultat de la division) par la base du système de numération jusqu'à ce que nous obtenions zéro dans la réponse. Combien de fois nous partagerons est inconnu. Et il existe de nombreux programmes qui implémentent un tel algorithme.
Comment cela est-il mis en œuvre ?
Pour de tels cas en programmation, il existe un opérateur de boucle avec une condition.
Dans le langage de programmation Pascal, une instruction de boucle conditionnelle commence par le mot while et a la structure suivante.
tandis que <condition> commence
corps de boucle
fin
Comme nous le savons déjà :
- une condition est une expression dont le résultat peut être vrai ou faux (comme dans une instruction conditionnelle)
- le corps de la boucle correspond aux commandes qui doivent être répétées
- begin et end peuvent être omis si le corps de la boucle se compose d'un seul opérateur
Comment fonctionne l'opérateur :
1. Tout d'abord, le programme évalue la condition après le mot while. Si la condition est remplie (true), alors le programme exécute la ou les instructions contenues dans le corps de la boucle.
2. Comme dans la boucle for, si le corps de la boucle ne contient qu'une seule instruction, les mots begin et end qui mettent en surbrillance le corps de la boucle peuvent être omis.
3. Une fois l'exécution du corps de la boucle terminée, le programme revient pour vérifier la condition et la vérifie à nouveau.
4. Ces actions (vérification de la condition - exécution du corps de la boucle) sont répétées jusqu'à ce que la condition devienne fausse.
5. Si à la première exécution de cet opérateur, la condition n'est pas immédiatement satisfaite (faux), alors le programme n'exécutera jamais le corps de la boucle.
En analysant le travail de cet opérateur, il devrait devenir clair que le corps de la boucle doit contenir un opérateur qui affecte la condition.
Par exemple, une boucle peut incrémenter la valeur d'une variable utilisée dans une condition.
Un exemple de programme que nous appellerons "Silent count"
Faisons en sorte que le programme compte à notre place, par exemple, jusqu'à 10.
Le programme devrait afficher la phrase "Démarrer" et "Terminer", et entre ces actions s'affichent les nombres en cours de calcul.
Comme ça,
Commencer
1 2 3 4 5 6 7 8 9 10
Terminer
Un programme utilisant une boucle while ressemblerait à ceci.
var i : entier ;
commencer
writeln('Démarrer');
je := 1;
alors que je <= 10 commence
écrire (je, ' ');
je += 1 ; //Opérateur qui affecte le changement de la variable dans la condition
fin;
écrireln();
writeln('Terminer');
fin.
Dans ce programme, nous attribuons une valeur à la variable i := 1 - l'origine
De plus, tant que la valeur de la variable i n'est pas supérieure (c'est-à-dire inférieure ou égale) à la valeur dont nous avons besoin, nous
1 - afficher la valeur de la variable i
2 - augmenter la valeur de la variable i de 1 - cet opérateur affecte la valeur de la condition entre parenthèses. La variable i est incrémentée, c'est-à-dire qu'à un moment donné, la condition i<=10 deviendra fausse. Cela se produira lorsque i deviendra égal à 11. Dans ce cas, le corps de la boucle ne sera plus exécuté et le programme exécutera l'instruction suivante après la boucle, c'est-à-dire écrireln();
writeln('Terminer');