Inhaltsverzeichnis:
Video: C - Flow Control 2024
Teil von C ++ für Dummies Cheat Sheet
Die folgenden C ++ - Strukturen leiten den Steuerungsfluss durch das Programm. Wenn Sie ein erfahrener Programmierer sind, wird die Funktion dieser Strukturen aus anderen Sprachen bekannt sein.
IF
Der folgende Befehl wertet booleanExpression aus. Wenn es zu true ausgewertet wird, wird die Steuerung an die Ausdrücke1 übergeben. Wenn nicht, wird die Steuerung an die optionalen Ausdrücke übergeben2.
if (booleanExpression) {Ausdrücke1;} [else {Ausdrücke2;}]
WHILE
Der folgende Befehl wertet booleanExpression aus. Wenn dies der Fall ist, wird die Steuerung an Ausdrücke übergeben. Am Ende des Blocks wird die Steuerung an booleanExpression zurückgegeben und der Vorgang wird wiederholt.
while (booleanExpression) {Ausdrücke;}
DO … WHILE
Der folgende Befehl führt Ausdrücke aus. Es wertet dann booleanExpression aus. Wenn dies der Fall ist, kehrt die Steuerung zum Anfang der Schleife zurück und wiederholt den Vorgang.
do {Ausdrücke;} while (booleanExpression);
FOR
Der folgende Befehl führt initCommand aus, das ein Ausdruck oder eine Variablendeklaration sein kann. Es wertet dann BoolExpression aus. Wenn dies der Fall ist, wird die Steuerung an expression1 übergeben. Wenn boolExpression den Wert false hat, wird die Steuerung an die erste Anweisung nach der geschlossenen Klammer der for-Schleife übergeben. Sobald die Ausdrücke abgeschlossen sind, wird die Steuerung an den in loopExpression enthaltenen Ausdruck übergeben, bevor sie an boolExpression zurückkehrt, um den Prozess zu wiederholen. Wenn initCommand eine neue Variable deklariert, verlässt sie den Gültigkeitsbereich, sobald die Kontrolle außerhalb der Schleife übergeben wird.
für (initCommand; boolExpression; loopExpression) {Ausdrücke;}
FOR (EACH)
Der 2011-Standard führt eine zweite For-Schleife ein, die manchmal als "für jeden" bezeichnet wird, weil seiner Ähnlichkeit mit dem foreach in einigen anderen Sprachen gefunden. In dieser Form nimmt die in der Deklaration deklarierte Variable den Wert des ersten Elements der Liste an und führt den Ausdrucksblock aus. Wenn sie abgeschlossen ist, nimmt die deklarierte Variable den zweiten Wert von list und führt die Ausdrücke erneut aus. Dieser Vorgang wird für jeden Wert in der Liste wiederholt.
for (Deklaration: Liste) {Ausdrücke;}
SCHALTER
Der folgende Befehl wertet IntegerAusdruck aus und vergleicht das Ergebnis mit jedem der aufgeführten Fälle. Wenn festgestellt wird, daß der Wert einem der konstanten Integralwerte val1, val2 usw. entspricht, geht die Steuerung zu der entsprechenden Menge von Ausdrücken über und fährt fort, bis die Steuerung auf eine Unterbrechung stößt.Wenn Ausdruck keinem der Werte entspricht, wird die Steuerung standardmäßig an die ExpressionsN übergeben.
switch (Ganzzahlausdruck) {case val1: Ausdrücke1; Unterbrechung; Fall val2: Ausdrücke2; Unterbrechung; [default: expressionsN;]}
BREAK, CONTINUE, GOTO
Ein continue übergibt die Steuerung an das Ende der geschlossenen Klammer eines der Schleifensteuerelemente. Dadurch wird die Schleife mit der nächsten Iteration fortgesetzt. Zum Beispiel verarbeitet die folgende Schleife Primzahlen zwischen 1 und 20:
für (int i = 0; i <20; i ++) {// wenn die Zahl nicht prim ist … if (isPrime (i)) {/ / … springe zum nächsten Wert von i weiter;} // Verarbeitung fortsetzen}
Ein break übergibt die Kontrolle an die erste Anweisung nach der geschlossenen Klammer eines der Schleifenbefehle. Dies führt dazu, dass die Ausführung die Schleife sofort beendet. Zum Beispiel liest das folgende Zeichen Zeichen bis zum Ende der Datei:
while (true) {// liest eine Zeile von Eingabeobjekteingabe >> Zeile; // wenn ein Fehler oder ein Dateiende auftritt … if (cin. eof () || cin. fail ()) {// … dann beende den Schleifendurchbruch;} // verarbeite die Zeile}
A goto Das Etikett übergibt die Kontrolle an das angegebene Etikett. Das Break-Beispiel oben könnte wie folgt geschrieben worden sein:
while (true) {// liest eine Zeile aus Eingabeobjekteingabe >> Zeile; // wenn ein Fehler oder Dateiende auftritt … if (cin. eof () || cin. fail ()) {// … dann beende die Schleife goto exitLabel;} // verarbeite die Zeile} exitLabel: // die Kontrolle geht hier weiter