Comment créer des boucles infinies dans la programmation de c

Méfiez-vous de la boucle sans fin! Quand un programme de C entre dans une boucle sans fin, il crache soit sortie encore et encore sans fin ou il est assis là serré et ne fait rien. Eh bien, il fait ce que vous avez commandé de faire, qui est de se reposer et de tourner pour toujours.

Sommaire

Parfois, cette configuration se fait sur le but, mais le plus souvent il arrive raison d'une erreur de programmation. Et avec la manière dont les boucles sont mis en place en C, il est facile de involontairement boucle À l'infini.

Une façon courante de faire une boucle sans fin illustre une boucle sans fin commune, qui est une erreur de programmation, pas une erreur de syntaxe.

Une façon courante de FAIRE UNE boucle sans fin

#include int main () {int x-pour (x = 0 X = 10-x = x + 1) {puts ("Qu'est-ce que tu regardes?") -} return (0) -}

Le problème avec le code d'une manière commune de faire une boucle sans fin est que l'état de sortie de la déclaration pour est toujours vrai: x = 10. Relire si vous ne l'attrapez la première fois, ou tout simplement faire de l'exercice 9-18.

Exercice 1: Tapez le code source pour une voie commune pour Faire une boucle sans fin. Enregistrer, créer et exécuter.

Le compilateur peut vous avertir de l'état TRUE constante dans l'instruction for. Code :: Blocks devrait le faire, et tout autre compilateur, si vous intensifié son contrôle d'erreur. Sinon, le programme est compilé et exécuté - infiniment.

  • Pour sortir d'une boucle sans fin, appuyez sur Ctrl + C sur le clavier. Cette astuce ne fonctionne que pour les programmes de la console, et il peut ne pas toujours fonctionner. Si elle ne le fait pas, vous avez besoin de tuer le processus se déchaînent.

  • Boucles sans fin sont aussi appelés boucles infinies.

Comment une boucle infinie, mais sur le but

Parfois, un programme a besoin d'une boucle sans fin. Par exemple, un micro-contrôleur peut charger un programme qui tourne tant que l'appareil est sous tension. Lorsque vous configurez une telle boucle sur le but en C, l'un des deux états est utilisé:

pour(--)



Lire cette déclaration comme “ à jamais ”. Avec aucun élément dans les parenthèses, mais toujours avec les deux points-virgules requises, la boucle for répète éternellement - même après que les vaches viennent à la maison. Voici la boucle équivalent de tout:

while (1)

La valeur dans les parenthèses n'a pas nécessairement besoin d'être 1- des œuvres de valeur vraie ou non-zéro. Lorsque la boucle est sans fin sur le but, cependant, la plupart des programmeurs définissez la valeur à 1 tout simplement à l'auto-documents qu'ils savent ce qui est en place.

Comment sortir d'une boucle

Toute boucle peut être résilié immédiatement - y compris les boucles sans fin - en utilisant une instruction break au sein du groupe de répétition de la boucle des états. Lorsqu'il rencontre break, boucle arrêts et l'exécution du programme ramasse avec la prochaine déclaration après dernière accolade de la boucle. Get Me Outta Here! démontre le processus.

Faites-moi sortir!

main () {int count-count = 0 int #include-tout (1) {printf ("% d", count) -count = count + 1-si (comptez> 50) percée} putchar (' n ') -retour (0) -}

La boucle while à la ligne 8 est configuré pour durer éternellement, mais le test, si à la ligne 12 peut l'arrêter: Lorsque la valeur de comptage est supérieure à 50, l'instruction break (voir ligne 13) est exécutée et les haltes de boucle.

Exercice 2: Construire et gérer un nouveau projet en utilisant le code source de Get Me Outta Here!

Exercice 3: Réécrire le code source à partir de Get Me Outta Here! de sorte qu'une boucle sans fin pour est utilisé à la place d'une interminable boucle while.

Vous ne devez pas construire une boucle sans fin à utiliser l'instruction break. Vous pouvez sortir d'une boucle. Lorsque vous le faites, l'exécution se poursuit avec la première déclaration après dernière accolade de la boucle.

Comment vous pouvez visser une boucle avec C

Il ya deux façons de faire des dégâts une boucle. Ces points chauds surgissent pour les débutants et les pros. La seule façon d'éviter ces taches est de garder un œil attentif de sorte que vous pouvez repérer 'em rapide.

La première gaffe-up spécifie une condition qui ne peut jamais être MET par exemple:

pour (x = 1-x == 10-x = x + 1)

Dans la ligne précédente, la condition de sortie est fausse avant que la boucle tourne une fois, donc la boucle est jamais exécuté. Cette erreur est presque aussi insidieux que l'aide d'un opérateur d'affectation (un seul signe égal) à la place de la “ est égal à n ° 148; l'opérateur (comme vient de le montrer).

Une autre erreur commune est d'égarer le point-virgule, comme dans

pour (x = 1 XLT; 14-x = x + 1) - {puts (“ épaule douloureuse chirurgie ”) -}

Parce que la première ligne, l'instruction for, se termine par un point-virgule, le compilateur croit que la ligne est la boucle entière. Le code vide répète 13 fois, ce qui est ce que l'instruction for dicte. La déclaration puts () est ensuite exécuté une fois.

Ces points-virgules voyous peuvent être frustrant!

Le problème est pire avec les boucles while parce que la structure do-while nécessite un point virgule après la finale while. En fait, en oubliant que virgule particulière est également une source de malheur. Pour une boucle while traditionnel, vous ne faites pas cela:

while (XLT; 14) - {puts (“ épaule douloureuse chirurgie ”) -}

La chose stupide sérieusement sur ces erreurs-virgule est que le compilateur ne les attrape pas. Il estime que votre intention est d'avoir une boucle sans déclarations. Une telle chose est possible.

UN POUR LOOP sans corps

#include int main () {int (x = 0 XLT; 10 x = x + 1, printf ("% d n", x)) x-pour - retour (0) -}

Dans l'exemple représenté en A Fou Boucle sans corps, le point-virgule est placé sur la ligne après l'instruction for (voir ligne 8 en A Fou Boucle avec No Body). Cela montre une intention délibérée.

Vous pouvez voir que deux éléments sont placés dans le pour les parenthèses de déclaration, les deux séparés par une virgule. Cela est parfaitement légal, et il fonctionne, mais il est pas tout à fait lisible.

Exercice 4: Tapez le code source de A Fou Boucle sans corps dans votre éditeur. Construire et exécuter.

Bien que vous pouvez charger des objets dans une des parenthèses de déclaration, il est rare et certainement pas recommandé, pour l'amour de la lisibilité.


» » » » Comment créer des boucles infinies dans la programmation de c