Introduction
En programmation informatique, une boucle infinie désigne 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. Les boucles infinies peuvent engendrer des bugs.
Les boucles infinies, dans le cas de la programmation PHP ou C / C++ entraînent une utilisation importante des ressources du serveur ou de l'ordinateur (hôte), pouvant conduire à l'arrêt des services et à une utilisation à 100 % du processeur, et par conséquent à un bug du système.
Exemples de boucles infinies
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 while
, or ici cette condition est toujours vraie (True
).
La situation suivante crée également une boucle infinie :
i = 0 while i < 10: i = 1
En effet, la boucle se termine lorsque i
n'est plus inférieur à 10, or l'instruction présente dans la boucle donne toujours à i
la valeur 1
; la condition de sortie de la boucle est donc toujours vraie.
En C / C++ comme en PHP, on peut trouver :
PHP :
$i = 0; while ($i < 1) { // Instructions }
C :
int i = 0; while (i < 1) { // Instructions }
La variable $i
ou i
n'est pas incrémentée (on ne lui ajoute pas 1
) et par conséquent la condition sera toujours vérifiée car $i
ou i = 0 < 1
.
Éléments de programmation informatique |
Bibliothèque logicielle | Bibliothèque standard • Espace de nom • Framework • Gabarit (template) • Interface • Interface de programmation (API) |
Vocabulaire | Algorithme • Expression • Indentation • Ligne de code • Opérateur • Pseudo-code • Surcharge des opérateurs | Autour des fonctions | Convention de nommage • Factorisation • Fonction imbriquée • Fonction de rappel • Fonction récursive • Généricité • Opérande • Paramètre • Polymorphisme • Procédure • Signature de type | Autour de l'objet | Classe • Constructeur • Destructeur • Encapsulation • Héritage • Héritage multiple • Instance • Méthode • Ramasse-miettes (garbage collector) • Référence | |
Dans le code source | Structures de données | Arbre • Attribut • Caractère • Enregistrement • File • First in, first out (fifo) • Last in, first out (lifo) • Liste • Liste chaînée • Pile • Table de symboles • Tableau • Tas • Type abstrait • Sémaphore | Déclarations : types et variables | Affectation • Pointeur • Portée • Tableau associatif • Type énuméré • Type récursif • Typage statique • Variable • Variable globale • Variable locale | Structures de contrôle | case • do • else • eval • if • for • goto • loop • switch • while | Fonctions usuelles | Concaténation • Incrémentation • malloc • printf | |
Outil de développement logiciel | Environnement de développement • Environnement de développement intégré (IDE) • Générateur de documentation • Gestion de versions • Modèle • Patch • Spécification |
Folklore | Hello world • Keep it Simple, Stupid • Langage de programmation exotique |
Catégorie:Développement logiciel • Catégorie:Programmation informatique |