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
break
natychmiast 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. break
w 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.