Die break-Anweisung
Manchmal musst du nicht die ganze Schleife durchlaufen. Wenn du etwas suchst und es gefunden hast, gibt es keinen Grund weiterzusuchen. Die Anweisung break beendet die Schleife sofort, und das Programm macht mit dem Code nach der Schleife weiter.
Suchen wir die erste Zahl ab 100, die durch 7 teilbar ist. Die Schleife gibt jede Zahl aus, die sie prüft, damit du siehst, wo sie anhält:
for (int zahl = 100; zahl < 200; zahl++) {
std::cout << "Prüfe " << zahl << std::endl;
if (zahl % 7 == 0) {
std::cout << "Erstes Vielfaches von 7: " << zahl << std::endl;
break;
}
}
std::cout << "Fertig" << std::endl;Prüfe 100
Prüfe 101
Prüfe 102
Prüfe 103
Prüfe 104
Prüfe 105
Erstes Vielfaches von 7: 105
FertigDie Bedingung zahl % 7 == 0 ist wahr, wenn der Rest der Division durch 7 gleich 0 ist. Kommt die Schleife bei 105 an, ist die Bedingung wahr. Das Programm gibt das Ergebnis aus, und break beendet die Schleife: Die Zahlen ab 106 werden nie geprüft, und das Programm macht mit der Zeile weiter, die Fertig ausgibt. Ohne break würde die Schleife bis 199 laufen und alle 14 Vielfachen von 7 ausgeben, nicht nur das erste.
Du schreibst break fast immer in ein if. Allein würde es die Schleife schon im ersten Durchlauf beenden. break funktioniert in while- und for-Schleifen gleich.
Oft musst du nach der Schleife auch wissen, was du gefunden hast oder ob du überhaupt etwas gefunden hast. Speichere das Ergebnis dann in einer Variablen, die du vor der Schleife erstellst, mit einem Wert, der „nicht gefunden“ bedeutet, bei einem Index zum Beispiel -1:
std::vector<std::string> namen = {"Adam", "Eva", "Peter", "Eva"};
int position = -1;
for (int i = 0; i < namen.size(); i++) {
if (namen[i] == "Eva") {
position = i;
break;
}
}
if (position == -1) {
std::cout << "Nicht gefunden" << std::endl;
} else {
std::cout << "Eva steht an Index " << position << std::endl;
}Eva steht an Index 1Dank break bekommst du die erste Eva, an Index 1. Ohne break würde die Schleife weiterlaufen, und position wäre am Ende 3, der Index der letzten Eva.
So schreibst du es:
Anweisungen
- 1
Der Vektor
temperaturenenthält Morgentemperaturen in der Reihenfolge, in der sie gemessen wurden, und die Schleife gibt jede aus, während sie sie prüft. Füge in der Schleife unter der Zeile, diePrüfeausgibt, einifhinzu, das für jede Temperatur unter nullErster Frost:und die Temperatur ausgibt. Führe das Programm aus: Es gibt dreimalErster Frost:aus, aber nur das erste ist richtig. - 2
Füge nach der Ausgabe
breakin den Block desifein, damit die Schleife beim ersten Frost anhält. Jetzt endet die Ausgabe mitPrüfe -3undErster Frost: -3, und die übrigen Temperaturen werden nie geprüft.