Przejdź do głównej treści
  1. Strona główna
  2. Technik informatyk
  3. INF.03
  4. Pytanie

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki

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.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wyślemy tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.