Bonjour et bienvenue. Dans cette conférence, j'aimerais parler du while et faire des boucles while.
Nous avons parlé de la boucle for, qui vous permet essentiellement de répéter du code.
Il y a d'autres constructions dans c appelées while et do while qui font la même chose
avec juste une syntaxe différente.
Ainsi, la boucle while la boucle while est un mécanisme pour répéter un
ensemble d'instructions et permet à l'exécution de se poursuivre aussi longtemps qu'une expression logique spécifiée est évaluée à vrai.
Donc plus de la même chose ici. Tout comme les instructions if exécutent certains codes,
tandis que les instructions exécutent un certain code basé sur une évaluation booléenne plusieurs fois.
Tout ce que vous pouvez faire dans la boucle for, vous pouvez le faire dans
la boucle while, c'est juste une syntaxe différente.
Donc à quoi ressemblent les boucles while, c'est quelque chose comme ça.
À un niveau très élevé, si nous examinons le pseudocode, tant
que cette condition est vraie, continuez à le faire.
Donc, pour le relier à un exemple mondial plus mondial.
En gros, pendant que vous avez faim, mangez des sandwichs, quelque chose comme ça.
Vous allez donc répéter le code. Vous allez continuer à manger de nombreux sandwichs pendant que vous avez faim.
La syntaxe générale de la boucle while est la suivante.
Et cela vous montre la syntaxe d'une instruction dans
le corps, vous n'avez donc pas besoin de fournir des crochets ou des accolades.
J'ai tendance à utiliser les termes accolades et
crochets dans la même terminologie.
Voici donc à quoi ressemble la syntaxe lorsque vous avez une instruction par rapport à plusieurs instructions.
Plusieurs déclarations, vous devez avoir ces crochets, une
seule déclaration non, elles sont facultatives. Vous ne pouvez pas les avoir ou vous ne devez pas les avoir.
L'expression entre entre parenthèses, tout comme la boucle
for et l'instruction if. L'expression ici est différente de la
boucle for en ce sens qu'il s'agit d'une seule condition de sortie.
C'est juste l'expression. Vous n'initialisez pas la variable de contrôle de boucle.
Vous ne modifiez pas la variable de contrôle de boucle entre les parenthèses.
C'est juste l'expression, juste la condition de sortie.
La condition de continuation de la boucle while est testée au début.
C'est donc le top de la boucle.
Donc, ce que cela signifie, c'est que c'est une boucle de prétest. Et ce que cela signifie, c'est
qu'il pourrait s'exécuter 0 fois ou il pourrait s'exécuter plusieurs fois dans le corps.
Et encore une fois, cela va être pertinent car la boucle do while fait quelque chose d'un peu différent.
Si l'expression commence par false, aucune des instructions de
boucle du corps ne sera exécutée.
C'est pourquoi c'est le meilleur test.
Donc, si vous répondez non à la première question, je n'ai pas
faim, alors vous n'allez jamais manger de sandwichs. Vous allez passer directement au café ou à
la ligne de code suivante. Vous n'allez pas entrer dans le corps de la boucle.
Si la condition de boucle commence par true,
le corps de la boucle doit contenir un mécanisme pour changer cela
si la boucle doit se terminer. Sinon, vous allez avoir une boucle infinie.
Donc, avec la boucle for où vous modifiez la variable de contrôle de boucle dans une seule instruction, c'est la même chose
dans la boucle while sauf que vous devez le faire dans le corps.
La boucle while va initialiser la
variable de contrôle de boucle quelque part, puis elle va
être modifiée à l'intérieur du corps du code.
Donc, comme je l'ai mentionné, la boucle while peut faire tout ce qu'une boucle for fait, c'est juste une syntaxe différente.
Et encore une fois, la boucle for est plus courte. Vous pouvez tout faire sur une seule
ligne alors que la boucle while vous devez faire ces 3 choses sur des lignes séparées.
Donc, dans cet exemple,
nous avons un nombre entier égal à 0. Il s'agit de la variable de contrôle de boucle. Ceci est en dehors de l'instruction de boucle while.
Si vous utilisiez une instruction for, celle-ci irait dans la boucle for comme avant le premier point-virgule.
C'est là que l'initialisation de la variable de contrôle de boucle.
Ensuite, vous avez le mot-clé while et vous avez entre parenthèses l'expression booléenne.
Ce serait équivalent à la boucle for, la deuxième
instruction juste avant le deuxième point-virgule.
C'est donc ce que vous vérifiez pour vrai ou faux. Et si c'est vrai ou faux, vous entrez dans le corps de la boucle.
Si le nombre est inférieur à 5, vous allez imprimer le nombre.
La prochaine ligne de code après cela est très importante,
le plus plus compte parce que cela modifie la variable de contrôle de boucle.
Vous devez faire cela plus plus compte ou vous n'allez jamais quitter la boucle car la condition en
haut indique si le nombre est inférieur à égal à 5. Si le nombre est toujours égal à 1, vous
avez une boucle infinie.
Donc ce plus et plus compte très, très important.
Plus plus count se souvient est un opérateur incrémentation.
Cela dit simplement que le nombre est égal au nombre plus 1
Cette boucle va s'exécuter 5 fois.
Il va fonctionner avec un compte égal à 1, un
compte égal à 2, un compte égal à 3, un compte égal à 4 et un compte égal à 5.
Une fois que count est égal à 6, il va sauter hors de la
boucle et il ne sortira plus d'instructions dans le corps.
Encore une fois, vous devriez penser en termes de boucle for.
C'est juste la variable de contrôle de boucle et la modification de la variable
de contrôle de boucle n'est pas dans la déclaration de la boucle réelle.
Tout n'est pas sur une seule ligne comme dans la boucle for.
Voici un autre exemple où la logique est contrôlée pour terminer la boucle.
Donc, dans ce premier exemple ici que j'ai montré, il s'agit d'une boucle de contrôle de compteur.
Il s'exécutera toujours le même nombre de fois, soit 5.
Dans l'exemple suivant, c'est un exemple où la boucle peut s'exécuter
100 fois ou 0 fois.
La condition que nous évaluons ici dans notre clé while où num n'est pas égal
à moins 1 dépend entièrement de ce que l'utilisateur entre car
num est ce que l'utilisateur entre.
Ainsi, cette boucle peut s'exécuter 0 fois, elle peut s'exécuter 100 fois.
Tout dépend de l'entrée du clavier.
Et cela s'appelle une boucle de contrôle sentinelle. Ce n'est pas contre-contrôlé.
Il est basé sur une logique et une variable qui peuvent changer.
Ainsi, alors que num n'est pas égal à moins 1, alors num est
stocké la valeur que nous saisissons au clavier.
Si l'utilisateur n'entre jamais un 1 négatif sur le clavier, cette boucle ne se terminera jamais.
Donc, même type de syntaxe ici avec notre while.
Notre variable de contrôle de boucle ici est num. Nous initialisons le 0 en haut,
puis nous lisons le modifier pour voir si nous allons entrer dans la boucle en fonction
de ce que l'utilisateur a entré au clavier.
Ensuite, à l'intérieur de la parenthèse du mot clé while, nous le
vérifions en fait pour voir s'il s'agit d'un 1 négatif.
Et puis dans le corps de la boucle while avec les crochets, les
crochets n'ont pas besoin d'être là parce qu'il y a une seule instruction, mais j'aime les mettre là-dedans.
Ensuite, nous lisons également l'entrée suivante et nous l'avons stockée dans num.
Si l'utilisateur entre un 1 négatif pour cette prochaine entrée, il sautera hors de la boucle.
S'ils ne le font pas, il continuera à s'exécuter et leur demandera d'entrer des informations.
Une boucle do while est un peu différente de la
boucle for dans la boucle while car elle est considérée comme une boucle post-test.
Ainsi, dans la boucle while, le corps est exécuté tant que la condition est vraie.
Dans la boucle do while où le corps est exécuté pour la première fois de manière inconditionnelle, la
boucle do while parce que le test est en bas
signifie que vous allez toujours exécuter la boucle au moins une fois.
Vous allez toujours exécuter le corps une fois
au moins, ça pourrait être plus, mais c'est toujours un, ce n'est jamais 0.
Parce que la condition pour tester la sortie est en bas.
C'est ce qu'on appelle une boucle post-test. C'est aussi appelé une boucle contrôlée de sortie.
Vous utiliseriez donc la boucle do a while si vous vouliez que la boucle entre
au moins une fois.
En règle générale, vous n'avez pas besoin d'utiliser une boucle do while
car vous pouvez toujours faire la même chose dans une boucle for si vous le souhaitez, vous
devez simplement mettre le code en dehors de la boucle.
Donc, la boucle do while n'est pas vraiment nécessaire, mais il y a des cas où vous voudrez peut-être l'utiliser.
Après l'exécution initiale, le corps n'est
exécuté que tant que la condition est vraie. Donc, après la première itération de la boucle, elle
va alors agir comme des boucles normales. Il sautera si la condition est fausse.
Voici donc à quoi cela ressemble. Le faire est en haut, puis
le test de la condition est en bas avec le mot-clé while.
Alors faites est un
nouveau mot-clé et vous allez avoir soit des crochets ou des non-crochets selon
que vous avez ou non plusieurs instructions dans le corps.
Si vous n'avez qu'une seule instruction dans le corps, vous n'aurez pas de parenthèse. Vous aurez juste à faire en haut et
ensuite vous aurez le temps au bas de la boucle.
Et à l'intérieur du while, entre parenthèses, vous aurez l'évaluation booléenne qui sera la
condition que vous vérifiez. Mais encore une fois,
comme cette condition est en bas, vous êtes toujours assuré d'exécuter l'instruction au moins une fois.
Ainsi, l'exemple de gauche est une instruction, l'exemple de droite est
composé de plusieurs instructions. Vous avez donc les crochets, les accolades.
Et encore une fois, dans ce deuxième exemple, vous dites que vous pouvez avoir quelque chose comme une demande de mot de passe, lire l'entrée
de l'utilisateur et alors que l'entrée n'est pas égale au mot de passe.
Mais vous allez toujours demander ce mot de passe au moins une fois.
Donc, un autre exemple de boucle while.
Le premier exemple en haut est un exemple de la
façon dont la boucle peut
s'exécuter une ou plusieurs fois, mais jamais à 0.
Tout dépend de ce que l'utilisateur entre. Il s'exécutera toujours au moins une fois, mais il
s'agit de lire l'entrée du clavier. Nous voyons la fonction scanf.
Et tant que l'utilisateur n'entre pas 20,
il exécutera cette boucle.
Une boucle while peut également être une boucle de contrôle de compteur, ce qui signifie qu'elle va s'exécuter un certain nombre de fois.
Dans ce cas, il va s'exécuter 4 fois dans cet exemple.
Nous avons un nombre entier égal à 4. Et puis nous avons faire en haut,
puis nous avons
les crochets parce que nous avons plusieurs déclarations à l'intérieur du corps.
Et nous incrémentons cette variable de contrôle de boucle à l'intérieur du corps, nombre plus plus.
Et puis la condition de vérification est toujours en bas. Vous allez donc l'exécuter 4 fois.
Et vous remarquerez que le mot-clé while ne doit pas nécessairement être sur la même ligne que l'accolade droite.
En règle générale, c'est le cas, mais ce n'est pas obligatoire.
Et le mot-clé while en bas se termine également par un point-virgule, vous devriez également le remarquer.
Nous avons donc tout appris sur ces boucles; la boucle for, le while et le do while.
Quelles boucles devriez-vous utiliser?
Eh bien, la première chose que vous devez décider de la boucle que vous souhaitez utiliser est d'abord
de vouloir qu'elle soit pré-test ou post-test? Voulez-vous qu'il s'exécute au moins une fois ou ne
voulez-vous pas l'exécuter au moins une fois? Si vous voulez qu'il s'exécute au
moins une fois, vous allez utiliser le do while. Si ce n'est pas une
condition, vous pouvez utiliser le for, le while ou le do while.
Donc, la plupart du temps, lorsque vous décidez de la boucle à utiliser, ce
sera toujours une boucle de pré-test. Vous devez rester à l'écart de la boucle do while.
C'est juste une meilleure option dans la plupart des cas. C'est beaucoup plus facile à lire.
Il est préférable de regarder avant de faire une boucle.
Ne commencez pas à boucler, il vaut mieux vérifier cette condition en haut.
Pour des raisons de lisibilité, si la boucle est au test, c'est beaucoup plus intuitif.
Donc, faites cette vérification de boucle au début, utilisez un pendant ou un moment.
Et dans de nombreux cas, il est important que la boucle soit entièrement ignorée si le test n'est pas initialement satisfait.
Encore une fois, parce que c'est le cas, le test devrait être au sommet. Vous ne devriez pas toujours exécuter au moins une fois.
Pour la plupart, vous ne voudrez peut-être pas toujours exécuter.
Vous devriez donc utiliser un pendant un certain temps.
Maintenant, la question se résume bien à laquelle dois-je utiliser, pendant un certain temps.
C'est vraiment une question de préférence personnelle. Cela n'a pas d'importance car comme je
l'ai dit au début de cette conférence, tout ce que vous pouvez faire en un moment, vous pouvez le faire en un pour.
Donc, si vous aimez mieux la boucle for, le for est parfois un peu plus
rapide car toutes les modifications de contrôle de boucle et l'initialisation et la condition de
sortie peuvent toutes être sur une seule ligne.
Mais c'est vraiment à vous.
En règle générale, je vais utiliser la boucle for pour les boucles contre-contrôlées.
Mais encore une fois, vous pouvez utiliser la même chose. Si vous voulez réellement utiliser une boucle
for et la faire ressembler à un moment, vous n'avez tout
simplement pas la première et la troisième expression,
vous avez juste la seule. Ainsi, le point-virgule pour les tests de point-virgule est le même que celui de while.
Donc, cela vous montre simplement que le for in the while peut faire la même chose, il suffit de
changer un peu la syntaxe.
Si vous voulez réellement utiliser une boucle while mais que vous voulez qu'elle agisse comme une
boucle for, alors vous la préfixez avec l'initialisation et incluez les instructions de mise à jour dans le corps.
Donc, ce que vous feriez est quelque chose comme ça et vous le faites généralement toujours pendant une boucle while.
Mais c'est l'équivalent d'une boucle for. L'initialisation est en dehors de la boucle
de la variable de contrôle, la variable de contrôle de boucle.
La condition de test est entre parenthèses, puis vous
mettez à jour cette variable de contrôle de boucle dans le corps de la boucle while.
Et c'est la même chose que la mise à jour du test d'initialisation de la boucle
for, puis le corps. Il n'y a pas de différence.
Encore une fois, comme je l'ai mentionné, j'utilise peut-être un peu plus la boucle for pour les boucles de contrôle de compteur.
Mais j'utiliserai le pour et le while de manière interchangeable, selon ce que je ressens ce jour-là.
Ainsi, une boucle for peut être un peu plus appropriée si vous souhaitez
initialiser et mettre à jour une variable sur une ligne.
Une boucle while est meilleure lorsque les conditions sont différentes.
Encore une fois, les boucles de contrôle de compteur pour, les boucles de contrôle sentinelle peuvent être la boucle while.
Et voici un exemple de boucle while avec une boucle de contrôle sentinelle
et une boucle for qui refait la même chose ou une boucle for pour un compteur contrôlé.
Alors que la boucle peut s'exécuter plusieurs fois en
fonction de ce que l'utilisateur entre, la boucle for est contrôlée par un compteur.
C'est donc le moment de le faire. J'espère que c'est clair.
Familiarisez-vous avec ces boucles car vous souhaitez souvent répéter le code.
Dans la discussion un peu sur les boucles imbriquées et aussi un peu
de mécanismes différents pour sortir d'une boucle en utilisant une pause
ou continuer. Merci.