Wie die For-Schleife in C ++

Die häufigste Form der Schleife in C ++ ist die für Schleife. Das für Schleife über dem Basismodell bevorzugt während Schleife, weil es in der Regel einfacher zu lesen (es gibt wirklich keinen anderen Vorteil).

Das für Schleife hat folgendes Format:

für (initialization- Konditionalität Zuwachs) {// ... Körper der Schleife}

Das für Schleife wird auf die folgende äquivalente während Schleife:

{Initialisierung-while (Bedingung) {{// ... Körper der Schleife} increment-}}

Die Ausführung der für Schleife beginnt mit der Initialisierung Klausel, die erhielt seinen Namen, weil es normalerweise ist, wo das Zählen Variablen initialisiert werden. Die Initialisierung Klausel wird nur einmal ausgeführt, wenn der für Schleife wird zuerst begegnet.

Die Ausführung wird fortgesetzt mit der Konditionalsatz. Diese Klausel funktioniert genauso wie die während Schleife: Solange die bedingte Klausel wahr, das für Schleife weiter auszuführen.

Nachdem der Code in den Körper der Schleife Ausführung beendet, geht die Steuerung auf den Zuwachs Klausel vor der Rückkehr in die bedingte Klausel zu überprüfen - und damit den Prozess zu wiederholen. Der Zuwachs Klausel normalerweise beherbergt die Autoinkrement oder Autodekrement Aussagen verwendet, um die Zählvariablen zu aktualisieren.

Das für Schleife wird am besten durch Beispiel zu verstehen. Folgende ForDemo1 Programm ist nichts anderes als das WhileDemo konvertierte die zu verwenden für Schleifenkonstrukt:

// ForDemo1 - Eingang eine Schleifenzählung. Schleife während // Ausgeben astring arg Anzahl. # Include #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// Eingang der Schleife countint nLoopCount-cout lt; lt; "Geben Sie Zählschleife:" -cin >> nLoopCount - // zählen zu der Schleife nach oben zählen limitfor (- nLoopCount> 0 -) {nLoopCount = nLoopCount - 1-cout lt; lt; "Nur" lt; lt; nLoopCountlt; lt; "Schleifen zu gehen" lt; lt; Endl -} // warten, bis der Benutzer vor dem Beenden Programm bereit ist, // damit der Benutzer das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - Rückkehr 0-}

Das Programm liest einen Wert aus der Tastatur in die Variable nloopCount. Das für beginnt zu vergleichen nloopCount auf 0 geht die Steuerung in der für Schleife, wenn nloopCount größer als 0 ist im Inneren des Einmal für loop, das Programm dekrementiert nloopCount und zeigt das Ergebnis. Das getan ist, kehrt das Programm zu dem für loop control.

Überspringt die Steuerung in die nächste Zeile nach dem für loop sobald nloopCount wurde auf 0 dekrementiert.

Alle drei Abschnitte eines für Schleife kann leer sein. Eine leere Initialisierung oder Schritt Abschnitt tut nichts. Ein leerer Vergleichsabschnitt ist wie ein Vergleich behandelt, liefert wahr.

Dies für Schleife hat zwei kleine Probleme. Erstens ist es destruktiv, in dem Sinne, dass sie den Wert ändert sich von nloopCount, # 147 zerstörende # 148- den ursprünglichen Wert. Zweitens, diese für Schleife zählt rückwärts von großen Werten nach unten zu kleineren Werten. Diese beiden Probleme werden adressiert durch einen anwendungsspezifischen Zählvariable der Addiereinheit für Schleife. Hier ist, wie es aussieht:

// ForDemo2 - Eingang eine Schleifenzählung. Schleife während // Ausgeben astring arg Anzahl. # Include #einschließen #einschließen using namespace std-int main (int nNumberofArgs, char * pszArgs []) {// Eingang der Schleife countint nLoopCount-cout lt; lt; "Geben Sie Schleifenzählung:" -cin >> nLoopCount - // zählen bis zum Schleifenzählung limitfor (int i = 1 i lt; = nLoopCount- i ++) {cout lt; lt; "Wir haben fertig" lt; lt; ILT; lt; "Schleifen" lt; lt; Endl -} // warten, bis der Benutzer vor dem Beenden Programm bereit ist, // damit der Benutzer das Programm resultscout zu sehen lt; lt; "Drücken Sie die Eingabetaste, um fortzufahren ..." lt; lt; Endl-cin.ignore (10, ' n') - cin.get () - Rückkehr 0-}

Diese modifizierte Version von ForDemo Schleifen die gleiche wie zuvor. Anstatt den Wert des Modifizierens nLoopCount, dies jedoch ForDemo2 Version verwendet einen neuen Zählervariable.

Dies für Schleife deklariert eine Zählervariable ich und initialisiert sie auf 0. Es dann diese Zählervariable vergleicht nLoopCount. Ob ich ist weniger als nLoopCount, die Steuerung geht an die Ausgabeanweisung innerhalb des Körpers der für Schleife. Sobald der Körper der Ausführung abgeschlossen ist, geht die Steuerung zu dem Inkrement Klausel wo ich erhöht und im Vergleich zu nLoopCount wieder, und so geht es.

Die folgende Abbildung zeigt eine Beispielausgabe aus dem Programm:

Geben Sie Schleifenzählung: 5Wir fertig sind 1 loopsWe've 2 fertig loopsWe've fertig 3 loopsWe've fertig 4 loopsWe've fertig 5 loopsPress eingeben, um fortzufahren ...

Wenn innerhalb der Initialisierung Teil der deklarierter für Schleife wird die Indexvariable innerhalb der einzige bekannte für Schleife selbst. Nerdy C ++ Programmierer sagen, dass der Umfang der Variable auf die begrenzt ist für Schleife. In dem ForDemo2 Beispiel nur gegeben, die Variable ich ist nicht zugänglich von der Rückkehr Aussage, weil diese Aussage ist nicht in der Schleife.

Menü