Wskaż pętlę, która w języku JavaScript wyświetli sześć kolejnych liczb nieparzystych.
A.
for(i=1;i<=11;i+=2) {document.write(i);}
B.
for(i=1;i<11;i++) {i++; document.write(i);}
C.
for(i=1;i<11;i+=2) {document.write(i);}
D.
for(i=1;i<=11;i++) {i=i+2; document.write(i);}
Wybrana pętla działa poprawnie, bo spełnia trzy warunki naraz: zaczyna od liczby 1, czyli od pierwszej liczby nieparzystej, wykonuje się dopóki i <= 11, a po każdym obiegu zwiększa licznik o 2. Dzięki temu zmienna i przyjmuje kolejno wartości 1, 3, 5, 7, 9, 11. To dokładnie sześć kolejnych liczb nieparzystych. W pętli for bardzo ważne są trzy części: inicjalizacja licznika, warunek kontynuacji oraz sposób zmiany licznika. Tutaj zapis i += 2 jest czytelny i praktyczny, bo od razu pokazuje zamiar programisty: przechodzimy co drugą liczbę. Moim zdaniem to najlepszy styl w takim zadaniu, bo nie trzeba robić dodatkowych instrukcji wewnątrz bloku pętli. W profesjonalnym JavaScripcie warto jeszcze zadeklarować zmienną, np. for (let i = 1; i <= 11; i += 2), żeby nie tworzyć przypadkiem zmiennej globalnej. Samo document.write nadaje się raczej do prostych przykładów szkolnych; w prawdziwych stronach częściej używa się manipulacji DOM, np. textContent albo appendChild, bo document.write może nadpisać dokument po jego załadowaniu.
W tym zadaniu łatwo pomylić dwie rzeczy: wypisywanie liczb nieparzystych oraz wypisanie dokładnie sześciu wartości. Sama zmiana licznika o 2 nie wystarcza, jeśli warunek końcowy jest źle dobrany. Gdy pętla startuje od 1 i ma warunek i < 11, wypisze 1, 3, 5, 7, 9, czyli tylko pięć liczb. Liczba 11 nie zostanie już uwzględniona, bo warunek mniejszości wyklucza wartość równą 11. To typowy błąd granicy zakresu, bardzo częsty przy pętlach for. Z mojego doświadczenia właśnie znaki < i <= robią najwięcej zamieszania w prostych algorytmach. Inny problem pojawia się wtedy, gdy licznik jest zwiększany zarówno w nagłówku pętli, jak i wewnątrz jej ciała. Taki kod może wydawać się sprytny, ale w praktyce łatwo traci kontrolę nad wartościami. Jeśli w środku wykonamy i++, a potem pętla sama zrobi kolejne i++, to licznik zmienia się szybciej niż wygląda na pierwszy rzut oka. W efekcie można otrzymać liczby parzyste albo za mało wyników. Jeszcze gorzej, gdy w ciele pętli robimy i = i + 2, a w nagłówku dodatkowo i++. Wtedy całkowity skok nie jest już równy 2, tylko zależy od obu instrukcji, więc wynik nie tworzy oczekiwanego ciągu liczb nieparzystych. Dobra praktyka jest taka: licznik pętli zmieniamy w jednym, przewidywalnym miejscu, najczęściej w trzeciej części instrukcji for. Dzięki temu kod jest prostszy do sprawdzenia, łatwiejszy do debugowania i mniej podatny na pomyłki.