Comprendre les différences entre une boucle do-while, do-until et while pourrait être déroutant. S’agit-il de la même chose ? Pourquoi alors deux techniques différentes?
Dans ce billet de blog, je vais montrer les différences. Mais d’abord, nous devons jeter un coup d’œil aux bases.
Do-Until
Les boucles do-until feront quelque chose jusqu’à ce qu’une condition devienne vraie.
Notez la condition égale pour cette boucle $number -eq ‘0’.
Par exemple, le code ci-dessous s’exécutera jusqu’à ce que vous appuyiez sur 0 sur votre clavier. Alors et seulement alors la condition devient vraie (0).
do {$number=Read-Host "Enter number (Press 0 to Quit)"}until ($number -eq '0')
Do-While
Les boucles Do-While feront quelque chose pendant qu’une condition est vraie.
Notez la condition non égale pour cette boucle $number -ne ‘0’.
Le code ci-dessous s’exécutera jusqu’à ce que vous appuyiez sur 0 sur votre clavier, en d’autres termes, le script sera exécuté tant que (pendant) la condition ne devient pas vraie (0).
do {$number=Read-Host "Enter number"}while ($number -ne 0)
While
Les boucles While sont similaires aux boucles Do-While. Mais ce type de boucle effectue la vérification en premier, alors que la boucle Do-While effectue la vérification après la première passe.
À l’avant-dernière passe, $i vaut 9, donc la dernière passe sera effectuée, mais ensuite pas plus.
while ($i -ne 10) {$i++Write-Host $i}
Do-Until vs. Do-While vs. While
L’exemple suivant montre les différences qui ne sont pas significatives à première vue, mais elles le sont.
La première boucle ne s’exécutera qu’une seule fois car elle ne s’exécutera que tant que (aussi longtemps que) $i est supérieur à 10. Or, ce n’est pas le cas. Par conséquent, la boucle s’arrêtera après la première exécution lorsque la vérification sera traitée.
La deuxième boucle s’exécutera sans fin car $i ne deviendra jamais supérieur à 10 et donc l’énoncé est vrai.
$i = 10do {Write-Output 'This is executed once.'}while ($i -gt 10)do {Write-Output 'This is done over and over again!'}until ($i -gt 10)
En dernier lieu, la boucle while sans l’énoncé do. Cette boucle ne s’exécutera jamais car la vérification est faite avant le début de la boucle.
$i = 10while ($i -gt 10) {Write-Output 'This will never be executed.'}
J’espère avoir pu apporter un peu de lumière dans l’obscurité quand il s’agit de boucler avec l’instruction do.
À la prochaine fois avec PowerShell!