Was sind verschachtelte Schleifen in C ++ mit Beispielen?

Was sind verschachtelte Schleifen in C ++ mit Beispielen?
Was ist eine Schleife? Eine Schleife ist ein Konstrukt, das Anweisungen wiederholt ausführt, bis ein bestimmter Zustand erfüllt ist. Die Aussagen befinden sich im Block der Schleife. Wenn in C ++ nur eine Anweisung wiederholt werden muss, gibt es keinen Block (Zahnspangen). Es gibt die Do-While-Schleife, während der Loop und die For-Loop. Solche Konstrukte werden als zusammengesetzte Aussagen bezeichnet.

DO-während der Schleife

Eine einfache Schleife ist:

int m = 0;
Tun

Cout << m << ";
++M;
während (m<5);

Es gibt einen Anfangszustand, der nicht wirklich Teil der Schleife ist. Diese Anfangsbedingung ist "int m = 0";. Die Schleife beginnt mit dem reservierten Wort, tun und endet mit einem Semikolon nach dem Bedingung: “(m<5)”. The loop means to print out integers, beginning from zero until m is equal to 5. When m is equal to 5, no printing takes place.

Mit der Schleife wird der Block zuerst ausgeführt, bevor der Zustand überprüft wird. Der Zustand wird erfüllt, wenn m gleich 5 ist. Vorher wird der Block 5 -mal ausgeführt, beginnend von einer Zählung von 0 bis 4. Die Ausgabe ist also:

0 1 2 3 4

while-Schleife

Bei der Schleife wird der Block jedes Mal ausgeführt, bevor der Zustand überprüft wird. Andererseits wird der Zustand mit der While-Schleife zuerst jedes Mal überprüft, bevor der Block ausgeführt wird. Die folgende während der Zeitschleife macht das, was die oben genannte Schleife getan hat:

int m = 0;
während (m<5)

Cout << m << ";
++M;

Es gibt einen Anfangszustand, der nicht wirklich Teil der Schleife ist. Diese Anfangsbedingung ist "int m = 0";. Die Schleife beginnt mit dem reservierten Wort und endet am zweiten und schließt die Schließung für seinen Block. Hier gibt es kein „Do“ -Reserviertes Wort. Die Bedingung ist „(m)<5)”, same as in the above code. When the while-condition is false, that is, m equals 5, the block is not executed, and that is the end of the loop. Note that the loop does not end with a semicolon in this case. The output is the same as in the previous code, that is:

0 1 2 3 4

für Schleife

In der obigen Zeitschleife gibt es fünf Hauptkomponenten. Die erste ist die Initialisierungsanweisung,

int m = 0;

Die Wiederholung der Schleifenblockausführung erfolgt für 5 Zahlen, beginnend, wenn m Null ist. Die nächste Komponente ist der Bedingung (m<5). No repetition (no execution of the block) occurs when the while condition results in false. The third component is the loop compound statement itself, which can be imagined as the block. The fourth component is inside the loop compound statement. It is:

Cout << m << ";

Es druckt den Wert von m. Und die fünfte Komponente ist die Increment -Anweisung,

++M;

Das ist am Ende im Block. Dies führt zu einer Wiederholung der Ausführung des Blocks. Es führt die nächste Nummer für die Wiederholungsausführung des Blocks ein. Die Wiederholung findet jedoch nicht statt, wenn die Bedingung zu falsch führt.

Die verschiedenen fünf Komponenten können wie folgt in einer Fürschließung neu angeordnet werden:

für (int m = 0; m<5; ++m)

Cout << m << ";

Die Ausgabe ist gleich, ich.e.

0 1 2 3 4

Es gibt drei Aussagen in den Klammern der For-Loop: Es gibt die Initialisierungsanweisung, es gibt die Bedingung, eine kurze Aussage, und es gibt die Increment-Anweisung. Im Block gibt es diesmal nur eine Aussage, nämlich die Kernaussage. Die im Block befindliche Inkrementanweisung wurde in die Klammern aufgenommen. Weitere Aussagen können zu den oben genannten Blöcken hinzugefügt werden.

Die Schleife und die while-Schleife sind im Grunde genauso die gleiche wie die For-Loop. Die For-Loop bringt das Schleifen in eine klassische und vereinfachte Form auf. Jede Schleife benötigt einen Initialisierungszustand, eine Weile und Code, um die nächste Wiederholung zu verursachen, was nicht auftritt, wenn die Bedingung zu False führt.

Bei der Nistung einer Schleife sollten diese drei Merkmale berücksichtigt werden. Dieser Artikel erklärt verschiedene Arten, Schleifen in C zu nisten++. Die grundlegenden Schleifenformen wurden oben erklärt.

Artikelinhalt

  • DO-WAHR-WHUNTEN
  • Nist während der Schleife
  • Verschachtelung für Schleifen
  • Abschluss

DO-WAHR-WHUNTEN

Aus dem folgenden Programm werden eine Tabelle mit 5 Zeilen und 4 Zeichenspalten angezeigt. In C ++ kann die Abfolge der Großbuchstaben oder die Abfolge von Kleinbuchstaben jeweils verglichen werden, wenn die gesamte Zahlen verglichen werden, wie in der folgenden verschachtelten Schleife dargestellt:

#enthalten
Verwenden von Namespace STD;
int main ()

int i = 0;
char j = 'a';
Tun

Tun

Cout << j << ";
J ++;
while (j) < 'E');
J = 'a';
Cout << endl;
i ++;
während ich < 5);
Rückkehr 0;

Die Ausgabe ist:

A B C D
A B C D
A B C D
A B C D
A B C D

Die erste Zeile des Programms umfasst die iOstream -Bibliothek in das Programm. Diese Bibliothek ist erforderlich, um Text auszudrucken. Die nächste Zeile ist eine Anweisung, die sicherstellt.

Es ist hilfreich, an eine verschachtelte Schleife in zwei Dimensionen zu denken. Beide Schleifen wirken auf jede Zelle. Die innere Schleife ist für die Spalten verantwortlich, während die äußere Schleife für die Zeilen verantwortlich ist.

Es geht so: Während die äußere Schleife in die erste Zeile zeigt, druckt die innere Schleife einen Zellwert pro Spalte für die erste Zeile. Während die äußere Schleife in die zweite Zeile zeigt, druckt die innere Schleife pro Spalte einen Zellwert für die zweite Zeile aus. Dies geht weiter, bis die letzte Reihe gedruckt ist.

Im obigen Programm ist der Initialisierungszustand für die äußere Schleife,

int i = 0;

Der Initialisierungszustand für die innere Schleife ist,

char j = 'a';

Beachten Sie, dass die gesamte innere Schleife kurz nach der Eröffnungsklammer der äußeren Schleife platziert wurde. Nur eine Anweisung druckt jedes Zeichen, und diese Aussage muss in der inneren Schleife sein. Dies liegt daran, dass Loops auf eine Zelle pro kombinierter Iteration zugreifen. Die Aussage lautet:

Cout << j << ";

Das Großbuchstaben Alphabet kann wie ganze Zahlen gehandhabt werden (positive Ganzzahlen).

Die Bedingung für die innere Schleife ist,

während (j < 'E')

Am Ende des inneren Schleifenkerns, aber nicht am Ende des inneren Schleifencodes. Dies bedeutet, dass der fünfte Buchstabe 'e' und darüber hinaus nicht angezeigt werden müssen. Nachdem die innere Schleife 4 Elemente in einer Reihe angezeigt hat, wird der Ausgangszustand mit der Erklärung zurückgesetzt oder neu initialisiert,

J = 'a';

dem nicht vor dem reservierten Wort vorgegangen ist, Char. Das Vorgehen mit dem reservierten Wort erklärt eine neue Variable, die nicht Teil der zweidimensionalen Iteration ist. Die Aussage danach, ich.e.

Cout << endl;

erzwingt den Cursor des Bildschirms in die nächste Zeile, so dass die nächste Zeile in der nächsten Zeile gedruckt werden kann.

Nach dieser Erklärung beginnt der wesentliche Code für die äußere Schleife. Der Bedingung für die äußere Schleife ist,

(ich < 5)

Das heißt, die Zeilen werden als 0, 1, 2, 3, 4, noch fünf Zahlen gezählt.

Der Code für die innere Schleife, um den Druck des nächsten Zeichens (Spaltenwiederholung) in derselben Zeile zu verursachen, lautet:

J ++;

Wenn die Bedingung für die innere Schleife zu Falsch führt, wird kein weiterer Charakter gedruckt. Der Code für die äußere Schleife, um den Druck der nächsten Zeile (Zeilenwiederholung) zu verursachen, lautet:

i ++;

Wenn die Bedingung für die äußere Schleife zu False führt, wird keine weitere Zeile gedruckt.

Und so wurde die Variable, ich wurde für die äußere Schleife verwendet, die Reihen; und die Variable, J wurde für die innere Schleife verwendet, die Zeilenzeichen.

Nist während der Schleife

Das folgende Programm macht dasselbe wie das obige Programm:

#enthalten
Verwenden von Namespace STD;
int main ()

int i = 0;
char j = 'a';
während ich < 5)

während (j < 'E')

Cout << j << ";
J ++;
;
J = 'a';
Cout << endl;
i ++;
;
Rückkehr 0;

Die Ausgabe ist:

A B C D
A B C D
A B C D
A B C D
A B C D

Der Algorithmus dieses Codes ist fast der gleiche wie der des vorherigen. Der Hauptunterschied besteht darin, dass hier für jede Iteration für die innere oder äußere Schleife der Zustand überprüft wird, bevor der Körper der Schleife ausgeführt wird. Im vorherigen Code wird die Leiche vor dem Bedingung überprüft.

Verschachtelung für Schleifen

Das folgende Programm macht dasselbe wie das obige Programm:

#enthalten
Verwenden von Namespace STD;
int main ()

für (int i = 0; i < 5; i++)

für (char j = 'a'; j < 'E'; j++)

Cout << j << ";

Cout << endl;

Rückkehr 0;

Die Ausgabe ist:

A B C D
A B C D
A B C D
A B C D
A B C D

Hier gibt es bestimmte Dinge zu beachten: Die verschachtelte Fürschließung ist kürzer als ihre anderen Gegenstücke. Die Inkrementierungserklärung für die innere Schleife wurde aus seinem Körper entfernt und wegen des Schließens in die Klammern genommen. Die Inkrementierungserklärung für die äußere Schleife wurde aus seinem Körper entfernt und wegen ihrer Fürs Schleife in die Klammern genommen. Die Neuinitialisierung (Zurücksetzen) der inneren Schleifenvariable, J wird nicht mehr als Anweisung für die äußere Schleife benötigt. Weil die Initialisierungsaussage für die innere For-Loop sich für jede Iteration der äußeren Schleife neu initialisiert.

Vergessen Sie nicht, dass die For-Schleife eine klassische und vereinfachte Form der beiden anderen Loops ist.

Abschluss

Eine Schleife verfügt über drei wichtige Merkmale: einen Initialisierungszustand, den Bedingung und der Vorstoß für die nächste Wiederholung des Körpers der Schleife. Wenn eine Schleife in einen anderen verschachtelt ist, müssen diese drei Merkmale für jede der entsprechenden Schleifen berücksichtigt werden. Alle oben genannten Loops sind einstufige Nistschleifen. Es ist hilfreich, sich ein einstufiges Verschachtelung von Schleifen als zweidimensionales Layout vorzustellen. Der Code der verschachtelten Schleife greift auf jede Zelle für das 2D -Layout zu. Dieses Tutorial hat dem Leser die Grundlagen des Schleifennistens gegeben.