Comment appliquer des contrôles de boucles spéciales en C ++

C ++ définit deux commandes spéciales de contrôle de flux connus sous le nom pause et continuer. Parfois, la condition pour mettre fin à une boucle se produit ni le début ni la fin de la boucle, mais dans le milieu. Considérons un programme qui accumule le nombre de valeurs saisies par l'utilisateur. La boucle se termine lorsque l'utilisateur entre un nombre négatif.

Le défi de ce problème est que le programme ne peut pas sortir de la boucle jusqu'à ce que l'utilisateur a entré une valeur, mais doit quitter avant que la valeur est ajoutée à la somme.

Dans ces cas, C ++ définit la pause commande. Lorsque rencontré, le pause Causes Control pour quitter la boucle de courant immédiatement. La commande passe à partir de la pause déclaration à la déclaration immédiatement après l'accolade fermée à la fin de la boucle.

Le format de la pause des commandes est le suivant:

while (condition) // briser œuvres aussi bien en boucle {if (une autre condition) {// percées quitter la boucle}} // contrôle passe ici quand le programme // rencontre la pause

Armé de cette nouvelle pause commande, une solution au problème de l'accumulateur apparaît comme le programme BreakDemo:

// BreakDemo - entrée une série de chiffres .// continuer à accumuler la somme // de ces chiffres que l'utilisateur // entre un nombre négatif # include. #comprendre #comprendre using namespace main (int nNumberofArgs, char * pszArgs []) {// entrée de l'accumulateur boucle de countint = 0 cout-std-int lt; lt; «Sommes valeurs Ce programme de l'utilisateur n" lt; lt; "Terminer en entrant un nombre négatif" lt; lt; endl - // boucle "pour toujours" pour (-) {// chercher une autre numberint nValue = 0-cout lt; lt; "Entrez numéro suivant:" -cin >> nValue - // si il est négatif ... si (nValue lt; 0) {// ... puis exitbreak -} // ... sinon ajouter le numéro à l'accumulatoraccumulator + = nValue -} // maintenant que nous avons liquidé la boucle // sortie du resultcout accumulée lt; lt; " nLe total est" lt; lt; accumulatorlt; lt; endl - // attendre utilisateur est prêt avant le programme // mettre fin pour permettre à l'utilisateur de voir le resultscout de programme lt; lt; "Appuyez sur Entrée pour continuer ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retourner 0-}

Après avoir expliqué les règles à l'utilisateur (la saisie d'un nombre négatif pour terminer et ainsi de suite), le programme entre dans ce qui ressemble à un infini pour boucle. Une fois à l'intérieur de la boucle, BreakDemo récupère un nombre à partir du clavier. Seulement après que le programme a lu le nombre peut-il tester pour voir si ce nombre correspond aux critères de sortie.

Si le nombre d'entrée est négative, la commande passe à la briser, provoquant le programme pour quitter la boucle. Si le nombre d'entrée est pas négatifs, bennes de contrôle sur les pause commander à l'expression qui résume la nouvelle valeur dans l'accumulateur. Après le programme sort de la boucle, il affiche la valeur accumulée avant de quitter.

Lorsque vous effectuez une opération sur une variable à plusieurs reprises dans une boucle, assurez-vous que la variable est correctement initialisé avant d'entrer dans la boucle. Dans ce cas, les zéros de programme accumulateur avant d'entrer dans la boucle où nValue est ajouté.


Le résultat d'un exemple terme apparaît comme suit:

Ce programme résume les valeurs de la userTerminate en entrant un numberEnter négative numéro suivant: 1Entrez le numéro suivant: 2Entrez le numéro suivant: 3Entrez le numéro suivant: -1The total est 6Appuyer Entrée pour continuer ...

La similaire continuer commande est utilisée moins fréquemment. Lorsque le programme de la rencontre continuer commande, il se déplace immédiatement vers le sommet de la boucle. Le reste des instructions dans la boucle sont ignorés pour l'itération courante.

L'exemple extrait suivant ignore les nombres négatifs que l'entrée utilisateur de puissance. Seul un 0 se termine cette version (le programme complet apparaît sur le site Web ContinueDemo):

while (true) // cette while () a le même effet que pour (-) {// entrée un valuecout lt; lt; "Saisissez une valeur:" - cin >> nValue - // si la valeur est négative ... si (nValue lt; 0) {// ... sortie de message d'erreur ... un cout lt; lt; "Les nombres négatifs ne sont pas autorisés n" - // ... et remontent vers le haut de la loopcontinue -} // ... continuent à traiter l'entrée comme normale}

» » » » Comment appliquer des contrôles de boucles spéciales en C ++