Kurs C++: Pętle i Iteracje

Instrukcja continue służy do pomijania bieżącej iteracji pętli i przechodzenia do kolejnej, bez wykonywania dalszego kodu w tej iteracji. Nie przerywa całej pętli, tylko sprawia, że bieżący obrót zostaje pominięty.


1. Składnia i zasada działania

Instrukcja continue może być używana w pętlach for, while oraz do...while.

Ogólna składnia:

for (inicjalizacja; warunek; zmiana) {
    if (warunek_pominięcia) {
        continue;  // Pomija resztę kodu i przechodzi do następnej iteracji
    }
    // Ten kod zostanie wykonany tylko, jeśli continue NIE zostanie wywołane
}

2. Przykłady zastosowania

2.1. Pomijanie liczb parzystych w pętli for

Załóżmy, że chcemy wypisać liczby od 1 do 10, ale pominąć liczby parzyste.

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;  // Pomija liczby parzyste
        }
        cout << i << " ";  
    }
    return 0;
}

Wynik: 1 3 5 7 9 (liczby parzyste zostały pominięte).


2.2. Pomijanie błędnych danych w pętli while

Jeśli użytkownik poda ujemną liczbę, program ją pominie i poprosi o nową wartość.

#include <iostream>
using namespace std;

int main() {
    int liczba;
    
    while (true) {
        cout << "Podaj liczbę dodatnią (0 kończy): ";
        cin >> liczba;

        if (liczba < 0) {
            cout << "Liczba ujemna - pomijam!" << endl;
            continue;  // Pomija resztę kodu i wraca do początku pętli
        }

        if (liczba == 0) {
            cout << "Koniec programu!" << endl;
            break;  // Zatrzymuje pętlę
        }

        cout << "Podana liczba: " << liczba << endl;
    }

    return 0;
}

Działanie:

  • Dla -5 program wypisze: „Liczba ujemna – pomijam!”
  • Dla 3 wypisze: „Podana liczba: 3”
  • 0 zakończy działanie programu.

2.3. Pomijanie spacji w tekście

Załóżmy, że chcemy wypisać zdanie, ale bez spacji.

#include <iostream>
#include <string>
using namespace std;

int main() {
    string tekst = "C++ jest super!";
    
    for (char znak : tekst) {
        if (znak == ' ') {
            continue;  // Pomija spacje
        }
        cout << znak;
    }

    return 0;
}

Wynik: C++jestsuper! (spacje zostały usunięte).


2.4. Użycie continue w do...while

Pętla do...while gwarantuje wykonanie kodu co najmniej raz. W tym przykładzie, jeśli użytkownik poda liczbę ujemną, program pominie jej wyświetlanie.

#include <iostream>
using namespace std;

int main() {
    int liczba;
    
    do {
        cout << "Podaj liczbę (0 kończy): ";
        cin >> liczba;

        if (liczba < 0) {
            cout << "Ujemna liczba - pomijam!" << endl;
            continue;  // Wraca do początku pętli, nie wyświetlając liczby
        }

        cout << "Podałeś: " << liczba << endl;

    } while (liczba != 0);

    return 0;
}

Działanie: Program nie wypisze ujemnych liczb, ale nie zakończy działania – użytkownik może podać inną wartość.


3. continue w zagnieżdżonych pętlach

Jeśli continue zostanie użyte w pętli wewnętrznej, pomija tylko bieżącą iterację tej pętli, a nie całej struktury.

Przykład: Pomijanie j == 2 w pętli wewnętrznej

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 3; i++) {
        for (int j = 1; j <= 3; j++) {
            if (j == 2) {
                continue;  // Pomija j == 2
            }
            cout << "i = " << i << ", j = " << j << endl;
        }
    }
    return 0;
}

Wynik:

i = 1, j = 1
i = 1, j = 3
i = 2, j = 1
i = 2, j = 3
i = 3, j = 1
i = 3, j = 3

🔹 Pętla wewnętrzna pomija tylko j == 2, ale pętla i działa normalnie.


4. break vs continue – różnice

InstrukcjaDziałanie
breakZatrzymuje całą pętlę i wychodzi z niej
continuePomija tylko bieżącą iterację, ale pętla działa dalej

Porównanie w pętli for

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        break;  // Przerywa całą pętlę
    }
    cout << i << " ";
}

Wynik: 1 2 (pętla przerwana po i == 3).

for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;  // Pomija tylko tę iterację
    }
    cout << i << " ";
}

Wynik: 1 2 4 5 (3 zostało pominięte, ale pętla działa dalej).


5. Podsumowanie

continue pozwala na pomijanie konkretnej iteracji pętli, ale nie przerywa jej całkowicie.
Używane w for, while, do...while do omijania niechcianych wartości.
W zagnieżdżonych pętlach działa tylko na najbliższą pętlę.
break zatrzymuje pętlę, a continue tylko pomija bieżącą iterację.