Algorytm przedstawiony dla tablicy n-elementowej t[n] ma na celu obliczenie sumy: // K1
i = 0; wynik = 0;
// K2
while i < n do
// K3
wynik = wynik + t[i];
// K4
i = i + 2;
// K5
wypisz(wynik);
To właśnie jest sedno tego algorytmu – on faktycznie sumuje co drugi element tablicy. Spójrz na ten fragment: „i = i + 2;”. To kluczowa linia! Po każdym dodaniu elementu do sumy, indeks zwiększa się o dwa, a nie o jeden, jak bywa w klasycznym przeglądaniu tablicy. W praktyce oznacza to, że najpierw bierzemy element t[0], potem t[2], potem t[4] i tak dalej, aż do końca tablicy. Taki sposób iteracji często spotyka się w zadaniach, gdzie zależy nam na analizie tylko parzystych indeksów, np. kiedy chcemy oddzielić wartości z pozycji parzystych od nieparzystych albo przy optymalizacjach związanych z przetwarzaniem dużych zbiorów danych. Co ciekawe, podobna konstrukcja pojawia się w algorytmach, gdzie trzeba obrobić strumień danych fragmentami, np. podczas przeglądania jednej połowy tablicy lub w algorytmach filtrujących sygnały. Z mojego doświadczenia wynika, że taki schemat jest nie tylko szybki, ale też czytelny dla innych programistów. Dobre praktyki zalecają zawsze wyraźnie pokazywać, które elementy są brane pod uwagę w pętli – tutaj jest to bardzo klarowne. Można byłoby to jeszcze rozwinąć, np. obsługując sytuacje, gdzie tablica ma nieparzystą liczbę elementów, ale generalnie, jeśli potrzebujesz sumy co drugiego elementu – taki algorytm jest idealny.
Analizując różne odpowiedzi, łatwo zauważyć, że wiele osób może się pogubić, bo pętla wygląda niemal klasycznie, a jednak jest tu pewien haczyk. Często powtarzanym błędem jest automatyczne założenie, że taka konstrukcja sumuje wszystkie elementy tablicy – to przychodzi na myśl, gdy widzimy „while i < n” i sumowanie. Jednak kluczowe tutaj jest to, jak przebiega inkrementacja indeksu. Zamiast „i = i + 1”, mamy „i = i + 2”, co powoduje, że po skończeniu pętli w „wynik” trafia suma tylko tych elementów, których indeksy są parzyste (czyli co drugi element, poczynając od zera). To mocno różni się od sumowania wszystkich n-elementów. Kolejny błąd to mylenie wartości z indeksami – niektórzy mogą sądzić, że algorytm wybiera elementy nieparzyste względem wartości, ale w rzeczywistości decydujące jest, które komórki tablicy odwiedza pętla, a nie jakie wartości się w nich znajdują. W praktyce błędnie można też uznać, że „co drugi element” to to samo, co „wszystkie”, jeśli nie prześledzi się dokładnie jak zmienia się zmienna i. Niektórzy mogą też uznać, że chodzi o sumę elementów o nieparzystych wartościach, bo często takie zadania się pojawiają, ale tu nie ma żadnego warunku dotyczącego wartości – algorytm po prostu sumuje te, których indeksy są odpowiednie. Takie pomyłki są typowe, zwłaszcza u osób, które dopiero zaczynają przygodę z programowaniem i nie przywiązują wagi do szczegółów w kodzie. Moim zdaniem warto zawsze dokładnie prześledzić krok po kroku, które wartości są brane pod uwagę, a które nie. Tylko wtedy można mieć pewność, że rozumie się działanie algorytmu, co jest absolutną podstawą w praktyce zawodowej i na egzaminach technicznych.