KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 32.
W języku JavaScript podany poniżej fragment funkcji ma za zadanie

wynik = 0;
for (i = 0; i < tab.length; i++) {
wynik += tab[i];
}

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Fragment kodu ustawia wynik na 0, a następnie w pętli for przechodzi po wszystkich indeksach od 0 do tab.length - 1. W każdej iteracji wykonuje wynik += tab[i], czyli dodaje bieżący element tablicy do sumy narastającej. Efektem jest suma wszystkich elementów tablicy.

Pełne wyjaśnienie:

Pokazany fragment realizuje klasyczny wzorzec akumulacji (sumowania) elementów tablicy.

  • Instrukcja wynik = 0; ustawia wartość początkową akumulatora. Dzięki temu suma startuje od zera i kolejne dodawania budują wynik końcowy.
  • Pętla for (i = 0; i < tab.length; i++) iteruje po indeksach tablicy: zaczyna od 0, kończy na ostatnim poprawnym indeksie, czyli tab.length - 1. Warunek i < tab.length gwarantuje, że nie wyjdziemy poza zakres tablicy.
  • Instrukcja wynik += tab[i]; jest skrótem zapisu wynik = wynik + tab[i];. Oznacza to, że do dotychczasowej sumy dokładamy aktualny element tablicy.

Dlatego poprawny opis działania to: policzyć sumę wszystkich elementów tablicy.

Pozostałe odpowiedzi są niepoprawne, bo nie wynikają z operacji wykonanych w kodzie:

  • "wyświetlić wszystkie elementy tablicy" – w kodzie nie ma żadnej instrukcji wyświetlania (np. logowania do konsoli lub wypisywania do dokumentu). Sama iteracja nie oznacza jeszcze prezentacji danych.
  • "dodać do każdego elementu tablicy stałą wartość" – aby modyfikować elementy tablicy, musiałoby pojawić się przypisanie do tab[i], np. tab[i] += 5. Tutaj modyfikowany jest tylko wynik, a tablica jest jedynie odczytywana.
  • "wprowadzić do każdego elementu tablicy aktualną wartość zmiennej i" – to również wymagałoby przypisania typu tab[i] = i. W pokazanym kodzie brak takiej instrukcji, więc wartości tablicy nie są nadpisywane.

Wskazówka egzaminacyjna: gdy widzisz zmienną ustawioną na 0 (lub 1) przed pętlą i potem operację w stylu x += ... albo x *= ..., najczęściej testowany jest właśnie mechanizm akumulacji (suma, iloczyn, zliczanie).

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Instrukcja wynik += tab[i] dodaje bieżący element tablicy do zmiennej wynik. To skrót od wynik = wynik + tab[i]. W efekcie wynik przechowuje sumę narastającą wartości z tablicy.
Ponieważ ostatni poprawny indeks tablicy ma wartość tab.length - 1. Warunek i < tab.length gwarantuje, że odczyt tab[i] nie wyjdzie poza zakres. To typowy sposób bezpiecznego iterowania po całej tablicy.
To inicjalizacja akumulatora. Ustawienie wynik = 0 tworzy punkt startowy sumy, tak aby pierwsze dodanie dało poprawną wartość. Bez inicjalizacji wynik mógłby być niezdefiniowany, co prowadzi do błędów lub niepoprawnych obliczeń.
Nie. W pętli występuje tylko odczyt tab[i] i modyfikacja zmiennej wynik. Aby zmieniać tablicę, potrzebne byłoby przypisanie do tab[i] (np. tab[i] = ... lub tab[i] += ...), którego tutaj nie ma.
Najpierw liczysz sumę elementów w zmiennej wynik, a potem dzielisz przez liczbę elementów: wynik / tab.length. W praktyce trzeba też obsłużyć przypadek pustej tablicy (gdy tab.length wynosi 0), aby uniknąć dzielenia przez zero.
Bo w kodzie nie ma instrukcji odpowiedzialnej za prezentację danych. Sama pętla for nie wyświetla nic automatycznie. Żeby coś wyświetlić, potrzebujesz np. console.log(...) albo dopisania do HTML/DOM, czego w tym fragmencie nie widać.
Częste pomyłki to: zły warunek pętli (np. i <= tab.length i wyjście poza zakres), brak inicjalizacji akumulatora, użycie złego operatora (np. konkatenacja przy łańcuchach), albo sumowanie wartości, które nie są liczbami (np. napisy).
Oba podejścia działają. for daje kontrolę nad indeksem i, a for...of jest czytelny, gdy indeks nie jest potrzebny. Na egzaminie ważne jest rozumienie, że w obu przypadkach dodajesz kolejne wartości do akumulatora.
Najczęściej tab.length - 1 wykorzystuje się, gdy chcesz odwołać się do ostatniego elementu (np. tab[tab.length - 1]) albo gdy porównujesz elementy parami. W warunku pętli standardem jest jednak i < tab.length.
Tak. Jeśli i nie jest zadeklarowane (np. przez let lub var), może stać się zmienną globalną, a w trybie ścisłym spowodować błąd. Na egzaminie zwykle liczy się logika pętli, ale w praktyce deklarowanie zmiennych jest ważną dobrą praktyką.
info

To pytanie poprawnie rozwiązuje 58% zdających egzamin. średnie

Specjaliści zwracają uwagę: "Fragment kodu ustawia wynik na 0, a następnie w pętli for przechodzi po wszystkich indeksach od 0 do tab.length - 1."

Źródła:

  • MDN Web Docs: for statement (JavaScript) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for (dostęp: 2026-02-28)
  • MDN Web Docs: Array.length — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/length (dostęp: 2026-02-28)
  • MDN Web Docs: Addition assignment (+=) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition_assignment (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja MDN: Array.length oraz pętla for
  • Ćwiczenia: napisanie funkcji sumującej liczby w tablicy i obsługa pustej tablicy
  • Powtórka operatorów przypisania z działaniem (+=, -=, *=)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego