Boucle infinieUne boucle infinie est, en programmation informatique, une boucle dont la condition de sortie n'a pas été définie ou ne peut pas être satisfaite. En conséquence, la boucle ne peut se terminer qu'à l'interruption du programme qui l'utilise. Pourquoi est-ce un problème ?Il y a rarement un intérêt à programmer une boucle infinie. Une telle boucle ne permet pas de faire sortir un résultat, et accapare les ressources de l'ordinateur. Sur un système monotâche, une boucle infinie peut interdire à l'utilisateur toute autre action. Il faut alors interrompre de force l'exécution (on peut être obligé de couper l'alimentation de l'ordinateur). Les systèmes modernes sont généralement suffisamment multitâches pour laisser le contrôle à l'utilisateur, qui peut commander l'interruption du programme. Mais tant que ce n'est pas fait, l'ordinateur se retrouve beaucoup moins performant pour tout autre travail. Une boucle infinie est donc presque toujours considérée comme un bug. Une exception possible est celle d'un programmeur qui souhaiterait absolument maintenir son ordinateur en activité en son absence. Il peut donc programmer une boucle infinie en s'assurant qu'il pourra l'interrompre quand il le souhaitera. Exemples de boucles infiniesDans de nombreux langages de programmation, la boucle infinie la plus simple est, en pseudo-code : tant que VRAI ou en anglais while TRUE C'est-à-dire que les instructions doivent être exécutées tant que l'évaluation de l'expression logique « VRAI » a comme résultat « VRAI ». En Python par exemple, une boucle infinie peut être définie comme ceci : while True:
print("Boucle infinie")
L'instruction contenue dans la boucle s'exécute tant que la condition définie après La situation suivante crée également une boucle infinie : i = 0
while i < 10:
i = 1
En effet, la boucle se termine lorsque En C, en C++ ou en PHP, on peut trouver : PHP : <?php
while(true)
{
//Code à insérer
}
?>
C : int i = 0;
while (i < 1) {
// Instructions
}
La variable Boucles à condition d'arrêtLa structure décrite précédemment, On appelle boucle d'Alderson le cas particulier de boucle infinie pour lequel la boucle est infinie quant à sa condition d'entrée, a une condition d'arrêt, mais qu'une erreur de conception rend cette condition inaccessible. Dans ce cas, c'est bien sûr un bug. Alderson est un programmeur qui avait codé une fonction qui exécutait des instructions suivant que l'utilisateur clique sur « OK » ou « annuler », sans avoir affiché les boutons en question[1]. Récursion infinieL'exemple suivant en VBA renvoie une erreur de dépassement de pile : Sub Test1()
Call Test1
End Sub
Dans la culture informatiqueUne vieille blague d'informaticien disait qu'« un Cray-3 est si rapide qu'il peut exécuter une boucle infinie en moins de 2 secondes »[2]. L'allée des bâtiments d'Apple à Cupertino s'appelle Infinite Loop, « boucle infinie » en anglais. Notes et références
Voir aussiArticles connexes |