Instrukcja break służy do natychmiastowego przerwania działania pętli i przejścia do pierwszej instrukcji po niej. Może być używana zarówno w pętlach (for, while, do...while), jak i w instrukcji switch.
1. Składnia i zasada działania
Instrukcja break jest umieszczana wewnątrz pętli i powoduje jej natychmiastowe zakończenie, niezależnie od warunku sterującego.
Przykład – ogólna składnia w pętlach:
while (warunek) {
if (warunek_przerwania) {
break; // Przerywa pętlę natychmiast
}
// Kod wykonywany, jeśli warunek_przerwania nie został spełniony
}
Przykład w switch:
switch (zmienna) {
case 1:
cout << "Wybrano 1";
break; // Przerywa dalsze sprawdzanie case’ów
case 2:
cout << "Wybrano 2";
break;
default:
cout << "Nieznana opcja";
}
2. Przykłady zastosowania w pętlach
2.1. Przerywanie pętli for
Jeśli chcemy zakończyć pętlę for, gdy napotkamy określoną wartość, możemy użyć break.
Przykład: Zatrzymanie pętli po znalezieniu liczby 5
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
cout << "i = " << i << endl;
if (i == 5) {
cout << "Znaleziono 5! Kończę pętlę." << endl;
break;
}
}
cout << "Poza pętlą." << endl;
return 0;
}
✅ Wynik: Pętla zostanie przerwana po i == 5, mimo że normalnie powinna działać do i == 10.
2.2. Przerywanie pętli while
Pętla while będzie działać w nieskończoność, jeśli nie ma warunku kończącego. break może wymusić jej zatrzymanie.
Przykład: Pobieranie liczb od użytkownika, aż poda wartość 0
#include <iostream>
using namespace std;
int main() {
int liczba;
while (true) { // Pętla nieskończona
cout << "Podaj liczbę (0 kończy program): ";
cin >> liczba;
if (liczba == 0) {
cout << "Kończę program!" << endl;
break;
}
}
return 0;
}
✅ Wynik: Program zakończy się, gdy użytkownik wpisze 0, niezależnie od tego, jak długo podaje inne liczby.
2.3. Przerywanie pętli do...while
Pętla do...while wykona się co najmniej raz, ale może zostać zatrzymana przez break.
Przykład: Prośba o podanie poprawnego hasła
#include <iostream>
using namespace std;
int main() {
string haslo;
string poprawneHaslo = "tajne";
do {
cout << "Podaj hasło: ";
cin >> haslo;
if (haslo == poprawneHaslo) {
cout << "Hasło poprawne! Dostęp przyznany." << endl;
break;
} else {
cout << "Niepoprawne hasło, spróbuj ponownie!" << endl;
}
} while (true);
return 0;
}
✅ Wynik: Pętla zakończy się natychmiast po wpisaniu poprawnego hasła.
3. Przerywanie zagnieżdżonych pętli
Jeśli break zostanie użyte w zagnieżdżonej pętli, przerwie tylko najbliższą pętlę.
Przykład: Przerywanie wewnętrznej pętli
#include <iostream>
using namespace std;
int main() {
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
cout << "i = " << i << ", j = " << j << endl;
if (j == 2) {
cout << "Przerywam wewnętrzną pętlę, ale zewnętrzna działa dalej." << endl;
break;
}
}
}
return 0;
}
✅ Wynik: Tylko wewnętrzna pętla (j) zostaje przerwana, i nadal działa.
4. Jak całkowicie zatrzymać zagnieżdżone pętle?
Aby przerwać wszystkie pętle, można użyć flagi sterującej lub goto.
Przykład: Przerwanie obu pętli
#include <iostream>
using namespace std;
int main() {
bool przerwij = false;
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
cout << "i = " << i << ", j = " << j << endl;
if (j == 2) {
przerwij = true;
break; // Przerywa tylko pętlę wewnętrzną
}
}
if (przerwij) break; // Przerywa również pętlę zewnętrzną
}
return 0;
}
✅ Zaleta: Przerwanie obu pętli bez użycia goto.
5. break a continue – różnice
| Instrukcja | Działanie |
|---|---|
break | Kończy całą pętlę i przechodzi do dalszego kodu |
continue | Pomija bieżącą iterację, ale nie przerywa pętli |
Przykład: Pomiń i == 3, ale nie przerywaj pętli
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // Pomiń 3, ale kontynuuj pętlę
}
cout << "i = " << i << endl;
}
✅ Wynik: Pętla działa dla 1, 2, 4, 5, ale 3 jest pominięte.
Podsumowanie
breaknatychmiast przerywa pętlę, niezależnie od warunku sterującego.- Stosujemy go w: ✅ Przerywaniu pętli, gdy wystąpi określony warunek.
✅ Wyjściu z nieskończonej pętli (while (true)).
✅ Obsłudze menu, gier, walidacji danych. breakw zagnieżdżonych pętlach przerywa tylko najbliższą pętlę.- Aby całkowicie zatrzymać zagnieżdżone pętle, można użyć flagi sterującej.