Instrukcja break kończy pętlę, w której się znajduje. Program wychodzi z pętli i jest wykonywany dalej. Instrukcję break można stosować zarówno w pętli for, jak i while.
Jeśli break znajduje się w zagnieżdżonej pętlizagnieżdżenie pętlizagnieżdżonej pętli, kończy tylko jedną pętlę – tę, w której się znajduje.
R1dJpY0YmMQJz1
Schemat pętli. 1. Rozpoczęcie pętli. 2. Warunek wykonania pętli. 3. jeśli Fałsz to Wyjście z pętli. 4. jeśli Prawda to Break? 5. Break? 6. jeśli Tak to Wyjście z pętli 7. jeśli Nie to Wykonaj pozostałą część pętli 8. Warunek wykonania pętli. Pętla zaczyna się od nowa.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Spójrzmy na przykładowe wykorzystanie break w kodzie. Poniżej znajduje się program sprawdzający, czy „Asia” znajduje się na liście imion.
Linia 1. imiona znak równości otwórz nawias kwadratowy cudzysłów Kuba cudzysłów przecinek cudzysłów Asia cudzysłów przecinek cudzysłów Karolina cudzysłów przecinek cudzysłów Maciek cudzysłów przecinek cudzysłów Magda cudzysłów zamknij nawias kwadratowy.
Linia 2. czyZnaleziono znak równości False.
Linia 4. for imie in imiona dwukropek.
Linia 5. print otwórz nawias okrągły cudzysłów Imie dwukropek cudzysłów plus imie zamknij nawias okrągły.
Linia 7. if imie znak równości znak równości cudzysłów Asia cudzysłów dwukropek.
Linia 8. print otwórz nawias okrągły cudzysłów Znaleziono wykrzyknik cudzysłów zamknij nawias okrągły.
Linia 9. czyZnaleziono znak równości True.
Linia 11. print otwórz nawias okrągły cudzysłów Czy znaleziono znak zapytania cudzysłów plus str otwórz nawias okrągły czyZnaleziono zamknij nawias okrągły zamknij nawias okrągły.
Linia 1. Imie dwukropek Kuba.
Linia 2. Imie dwukropek Asia.
Linia 3. Znaleziono wykrzyknik.
Linia 4. Imie dwukropek Karolina.
Linia 5. Imie dwukropek Maciek.
Linia 6. Imie dwukropek Magda.
Linia 7. Czy znaleziono znak zapytania True.
Imie: Kuba
Imie: Asia
Znaleziono!
Imie: Karolina
Imie: Maciek
Imie: Magda
Czy znaleziono? True
Jak widać, mimo że imię zostało znalezione już na początku pętli, była ona wykonywana do końca. Wykorzystując instrukcję break, możemy przerwać pętlę, kiedy imię będzie znalezione. Poniższy kod przedstawia program z dodaną instrukcją break:
Linia 1. imiona znak równości otwórz nawias kwadratowy cudzysłów Kuba cudzysłów przecinek cudzysłów Asia cudzysłów przecinek cudzysłów Karolina cudzysłów przecinek cudzysłów Maciek cudzysłów przecinek cudzysłów Magda cudzysłów zamknij nawias kwadratowy.
Linia 2. czyZnaleziono znak równości False.
Linia 4. for imie in imiona dwukropek.
Linia 5. print otwórz nawias okrągły cudzysłów Imie dwukropek cudzysłów plus imie zamknij nawias okrągły.
Linia 7. if imie znak równości znak równości cudzysłów Asia cudzysłów dwukropek.
Linia 8. print otwórz nawias okrągły cudzysłów Znaleziono wykrzyknik cudzysłów zamknij nawias okrągły.
Linia 9. czyZnaleziono znak równości True.
Linia 10. break.
Linia 12. print otwórz nawias okrągły cudzysłów Czy znaleziono znak zapytania cudzysłów plus str otwórz nawias okrągły czyZnaleziono zamknij nawias okrągły zamknij nawias okrągły.
Linia 1. Imie dwukropek Kuba.
Linia 2. Imie dwukropek Asia.
Linia 3. Znaleziono wykrzyknik.
Linia 4. Czy znaleziono znak zapytania True.
Imie: Kuba
Imie: Asia
Znaleziono!
Czy znaleziono? True
Dzięki tej operacji nasz program został zoptymalizowanyoptymalizacjazoptymalizowany i nie wykonuje niepotrzebnie kodu. Tak samo możemy zrobić w pętli while.
Instrukcja continue
Instrukcja continue działa podobnie, ale nie kończy działania całej pętli, a jedynie kończy aktualną iterację – kod wewnątrz pętli, który jest po continue, nie zostanie wykonany w tej iteracji.
Można to wykorzystać w sytuacji, kiedy element wewnątrz pętli nie spełnia założonych warunków i nie ma potrzeby wykonywania kolejnych instrukcji w tej iteracji pętli.
Poniższy program drukuje silnię tylko parzystych liczb z podanego zakresu.
Linia 1. for x in range otwórz nawias okrągły 1 przecinek 10 zamknij nawias okrągły dwukropek.
Linia 2. if x procent 2 wykrzyknik znak równości 0 dwukropek.
Linia 3. continue kratka liczba nie jest parzysta minus nie ma sensu wykonywać dalszych operacji dla tej liczby.
Linia 4. silnia znak równości x.
Linia 5. for y in range otwórz nawias okrągły 1 przecinek x zamknij nawias okrągły dwukropek.
Linia 6. silnia asterysk znak równości y.
Linia 8. print otwórz nawias okrągły cudzysłów Silnia liczby otwórz nawias klamrowy 0 zamknij nawias klamrowy wynosi otwórz nawias klamrowy 1 zamknij nawias klamrowy cudzysłów kropka format otwórz nawias okrągły x przecinek silnia zamknij nawias okrągły zamknij nawias okrągły.
for x in range(1, 10):
if x % 2 != 0:
continue # liczba nie jest parzysta - nie ma sensu wykonywać dalszych operacji dla tej liczby
silnia = x
for y in range(1, x):
silnia *= y
print("Silnia liczby {0} wynosi {1}".format(x, silnia))
Jak widać, jeśli liczba jest nieparzysta, to dalsza część pętli nie jest wykonywana, tylko natychmiast wykonywana jest kolejna iteracja.
Czy break i continue są konieczne?
Powyższe programy można również napisać, nie korzystając z instrukcji break i continue. Piszesz po prostu odpowiednie instrukcje warunkowe.
Instrukcje break i continue, jeśli są wykorzystywane w skomplikowanych algorytmach, w wielu miejscach, sprawiają, że kod staje się nieczytelny. Łamie to zasady pisania dobrego kodu i sprawia problem innym w zrozumieniu programu.
Z tego względu powinno się korzystać z instrukcji przerwania z umiarem – tylko wtedy, kiedy jest to konieczne.
Słownik
zagnieżdżenie pętli
zagnieżdżenie pętli
wywołanie jednej pętli wewnątrz drugiej
optymalizacja
optymalizacja
poprawa wydajności programu komputerowego lub algorytmu poprzez zmniejszenie liczby operacji potrzebnych do otrzymania wyniku