Operator kontynuacji continue służy do przerywania działań zapisanych w ciele operatorów for , while i do ... while . W odróżnieniu od break, który przerywa całą pętlę, continue przerywa tylko bieżącą iterację od miejsca, gdzie taka sytuacja zaistnieje, po czym rozpoczyna się nowa iteracja.
W celu demonstracji działania operatora continue przeanalizujmy razem następujące zadanie. Na przykład, mamy tablicę składającą się z 10 elementów, która zawiera dodatnie i ujemne cyfry i chcemy znaleźć sumę wszystkich dodatnich cyfr.
#property strict
void OnStart()
{
//---
int Array[] = // deklaracja i inicjalizacja tablicy Array
{
5, 0, 124, -1, -55, 8, -2, -2, -2, -4
};
int Suma = 0; // deklaracja i inicjalizacja zmiennej Suma
//--- pętla 'for'
for(int i = 0; i < 10; i++)
{
//---
if(Array[i] < 0) /* jeśli napotykamy się na
ujemną cyfrę i-tego elementu tablicy */
continue; /* przerywamy tę iterację
i pętla 'for' rozpoczyna nową */
Suma += Array[i];
}
//---
Print("Suma dodatnich cyfr tablicy Array = " , Suma , ".");
//---
}
Najpierw deklarujemy tablicę Array i od razu wypełniamy ją 10 elementami. W niej elementy z indeksami 0 (cyfra 5), 1 (cyfra 0), 2 (cyfra 124) i 5 (cyfra 8) to są dodatnie cyfry. Tworzymy zmienną Suma, która będzie przechowywać ich sumę. Następnie, w nagłówku operatora for tworzymy licznik i (int i = 0), ilość iteracji ograniczamy do ilości elementów tablicy (i < 10) i po każdej iteracji zwiększamy licznik o 1 (i++). Dalej w ciele pętli widzimy operator if, który sprawdza każdy i - ty element tablicy (Array[i] < 0) czy jest cyfrą ujemną.
W przypadku jeśli warunek w if będzie prawdziwy, tj. trafimy na cyfrę ujemną, uruchomi się operator continue, który z tego miejsca przerwie dalsze działania w pętli, aby rozpocząć nową iterację. Jeśli zaś warunek będzie fałszywy, tj. cyfra będzie dodatnia, wtedy działanie przejdzie do instrukcji Suma += Array[i], gdzie do Suma zostanie dodana nowa liczba dodatnia.
A teraz po kolei.
Na 1-ej iteracji (i = 0), sprawdza się element tablicy z indeksem 0. Tym elementem jest cyfra 5. Ponieważ wynik porównania (5 < 0) to fałsz, program przechodzi do instrukcji dodania tej liczby do zmiennej Suma. Na 2-ej iteracji cyfra 0, jako element tablicy z indeksem 1, też zostanie dodana do Suma. Tak samo na 3-ej iteracji cyfra 124, jako element tablicy z indeksem 2, zostanie dodana do Suma.
A już na 4-ej iteracji (i = 3) wynik porównania w if będzie (-1 < 0) - prawda, ponieważ Array[3] to cyfra (minus) -1. W tym przypadku zostanie uruchomiony operator continue, który przerwie bieżącą iterację i nie pozwoli do zmiennej Suma dodać tę ujemną cyfrę.
Na 5-ej iteracji dla 4-go elementu tablicy, tj. cyfry -55, też zadziała operator continue i tak do końca, ponieważ pozostałe elementy to są cyfry ujemne. Następnie za pomocą funkcji Print() skrypt wyświetli wynik obliczenia w logach terminala.
Na poniższym obrazku przedstawiono schemat działania operatora continue. Wewnątrz pętli for (lub while lub do … while) widać jak iteracje powtarzają się jedna po drugiej (zielone strzałki) i jeśli w trakcie którejś z nich zaistnieje sytuacja, kiedy trzeba przerwać tylko bieżącą iterację i nie dopuścić do uruchomienia instrukcji po continue, ten operator ją przerywa i rozpoczyna się następna iteracji tej samej pętli (czerwona strzałka).
Rys. 1. Schemat działania operatora continue.