Instrukcja break pozwala na wcześniejsze zakończenie pętli bez przerywania działania całego programu. Komendę break można stosować w pętlach for, while oraz do‑while.
Należy pamiętać, że instrukcja break znajdująca się w pętli zagnieżdżonejzagnieżdżenie pętlipętli zagnieżdżonej zakończy działanie tylko wewnętrznej pętli.
RjoWkB4cm1daT
Jeśli chcielibyśmy znaleźć najmniejszą liczbę całkowitą z przedziału od 0 do 100, której kwadrat jest większy od 100, nasza pętla musiałaby przejść aż 101 cykli. Proces ten możemy zoptymalizowaćoptymalizacjazoptymalizować, używając instrukcji break, ponieważ mamy pewność, że każda kolejna liczba podniesiona do kwadratu daje wynik większy niż poprzedni. W omawianym przypadku pętla zostanie wykonana 12, nie zaś 101 razy.
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny znak równości 100 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. int x znak równości i asterysk i średnik.
Linia 6. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Kwadrat liczby cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów to cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny x otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 8. if otwórz nawias okrągły x zamknij nawias ostrokątny 100 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 9. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Szukana liczba to cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 10. break średnik.
Linia 11. zamknij nawias klamrowy.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Wynik działania programu wygląda następująco:
Linia 1. Kwadrat liczby 0 to 0.
Linia 2. Kwadrat liczby 1 to 1.
Linia 3. Kwadrat liczby 2 to 4.
Linia 4. Kwadrat liczby 3 to 9.
Linia 5. Kwadrat liczby 4 to 16.
Linia 6. Kwadrat liczby 5 to 25.
Linia 7. Kwadrat liczby 6 to 36.
Linia 8. Kwadrat liczby 7 to 49.
Linia 9. Kwadrat liczby 8 to 64.
Linia 10. Kwadrat liczby 9 to 81.
Linia 11. Kwadrat liczby 10 to 100.
Linia 12. Kwadrat liczby 11 to 121.
Linia 13. Szukana liczba to 11.
Instrukcja continue
Działanie instrukcji continue jest podobne do działania instrukcji break – instrukcja continue służy jednak do zakończenia aktualnego cyklu pętli. Możemy ją wykorzystać, gdy jakiś element nie spełnia określonych warunków i dlatego chcemy pominąć pozostałe operacje w bieżącym obiegu pętli.
Prosty przykład działania omawianej instrukcji zawiera polecenie wypisania wszystkich liczb parzystych od 1 do 10:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. if otwórz nawias okrągły i procent 2 wykrzyknik znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. continue średnik.
Linia 7. zamknij nawias klamrowy.
Linia 9. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 10. zamknij nawias klamrowy.
Linia 11. zamknij nawias klamrowy.
Wykonanie przedstawionego wyżej kodu spowoduje, że zostaną wypisane wszystkie liczby parzyste z zadanego przedziału:
Linia 1. 2.
Linia 2. 4.
Linia 3. 6.
Linia 4. 8.
Linia 5. 10.
Kiedy przerywać działanie pętli?
Zadanie z wypisywaniem liczb parzystych można rozwiązać również bez użycia instrukcji continue. Wystarczy zmienić warunek wewnątrz pętli, aby uzyskać ten sam efekt:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. for otwórz nawias okrągły int i znak równości 1 średnik i otwórz nawias ostrokątny znak równości 10 średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. if otwórz nawias okrągły i procent 2 znak równości znak równości 0 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 7. zamknij nawias klamrowy.
Linia 8. zamknij nawias klamrowy.
Linia 9. zamknij nawias klamrowy.
Możemy również przeprojektować całą pętlę, aby pozbyć się instrukcji warunkowej:
Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny.
Linia 3. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy.
Linia 4. for otwórz nawias okrągły int i znak równości 2 średnik i otwórz nawias ostrokątny znak równości 10 średnik i plus znak równości 2 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. std dwukropek dwukropek cout otwórz nawias ostrokątny otwórz nawias ostrokątny i otwórz nawias ostrokątny otwórz nawias ostrokątny std dwukropek dwukropek endl średnik.
Linia 6. zamknij nawias klamrowy.
Linia 7. zamknij nawias klamrowy.
Kiedy korzystać z instrukcji break i continue? Wtedy, gdy chcemy ograniczyć liczbę iteracji. Musimy jednak pamiętać o takim wykorzystaniu możliwości przerywania pętli, które nie zaburzy czytelności programu – ma to szczególne znaczenie w skomplikowanych algorytmach, w których dba się o przejrzystość kodu. Operacje tego typu wykonuje się więc nawet kosztem nieznacznych strat w prędkości działania programu.
Słownik
zagnieżdżenie pętli
zagnieżdżenie pętli
wywołanie jednej pętli wewnątrz drugiej
optymalizacja
optymalizacja
(od łac. optimus – najlepszy) poprawa wydajności programu komputerowego lub algorytmu uzyskana dzięki zmniejszeniu liczby operacji niezbędnych do otrzymania wyniku