KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2010

PYTANIE NR 23.
W wyniku wykonania przedstawionej instrukcji iteracyjnej:
for(i=0; i<=100; i+=2) cout<<i<<endl;
wyświetlone zostaną liczby
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Pętla startuje od i=0, działa dopóki i<=100 i zwiększa i o 2.
Dzięki temu w każdej iteracji wypisywana jest aktualna wartość i: 0, 2, 4, …, 98, 100. W kodzie nie ma średnika po nagłówku pętli, więc cout jest jej ciałem i wykona się wiele razy, a nie tylko raz po pętli.

Pełne wyjaśnienie:

Instrukcja for(i=0; i<=100; i+=2) cout<<i<<endl; oznacza, że:

  • zmienna sterująca i jest ustawiana na 0 (inicjalizacja),
  • pętla trwa, dopóki warunek i<=100 jest spełniony,
  • po każdej iteracji wykonywany jest krok i+=2, czyli przejście do kolejnej liczby parzystej,
  • ciałem pętli jest pojedyncza instrukcja wypisania: cout<<i<<endl;.

W praktyce oznacza to wypisanie kolejno wartości: 0, 2, 4, 6, …, 98, 100. Po wypisaniu 100 następuje jeszcze inkrementacja do 102, ale wtedy warunek 102<=100 jest fałszywy, więc pętla się kończy i 102 nie jest już wypisywane, bo wypisywanie następuje wewnątrz pętli.

Odpowiedź "parzyste 0-100" jest więc poprawna, bo dokładnie ten zbiór liczb pojawia się na wyjściu.

Pozostałe propozycje są błędne z typowych powodów:

  • "parzyste 0-98" pomija 100, mimo że warunek jest i<=100, więc 100 też spełnia warunek i zostanie wypisana.
  • "nieparzyste 1-99" sugeruje start od 1 i krok o 2, ale w kodzie start jest od 0, więc generowane są liczby parzyste.
  • "nieparzyste 1-101" dodatkowo sugeruje wypisanie 101, co nie wynika ani ze startu, ani z kroku i+=2, ani z warunku zakończenia.

Wskazówka egzaminacyjna: zawsze sprawdź, czy po nawiasie pętli nie ma dodatkowego średnika, i czy ciało pętli to jedna instrukcja czy blok w { }.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Średnik bezpośrednio po for(...) tworzy tzw. pustą instrukcję (puste ciało pętli). Taka pętla wykonuje tylko inicjalizację/warunek/inkrementację, ale nie robi nic "w środku". Kolejna instrukcja w kodzie wykona się dopiero po zakończeniu pętli.
Ustawia i na 0, sprawdza warunek i<=100 i wykonuje ciało pętli. Po każdym przebiegu zwiększa i o 2. W efekcie i przyjmuje wartości 0,2,4,...,100, a pętla kończy się, gdy po inkrementacji warunek przestaje być spełniony.
Warunek i<=100 dopuszcza przypadek, gdy i jest równe 100. Jeśli ciało pętli wypisuje i, to 100 zostanie wypisane w tej iteracji. Dopiero potem następuje inkrementacja (np. do 102) i kolejny test warunku kończy pętlę.
102 pojawi się wtedy, gdy wypisywanie jest po pętli, np. przez niezamierzony średnik: for(...); a potem cout<<i. W takiej sytuacji pętla "przekręci" i aż do 102, zakończy się i dopiero wtedy zostanie wykonane wypisanie.
Start od 0 i krok 2 generują liczby parzyste. Jeśli warunek końca to i<=100 i wypisanie jest w ciele pętli, zobaczysz 0,2,4,...,100. To klasyczny sposób iteracji po liczbach parzystych w zadanym zakresie.
W C++ ciałem pętli jest instrukcja bezpośrednio po for(...). Jeśli po nawiasie nie ma średnika i nie ma nawiasów klamrowych, to jedna następna instrukcja (np. cout<<...) jest wykonywana w każdej iteracji.
Bo wiele osób intuicyjnie zakłada, że "do 100" oznacza "bez 100" lub myli < z <=. Przy warunku i<=100 wartość 100 spełnia warunek, więc jeśli wypisywanie jest w pętli, to 100 pojawi się na wyjściu.
Nie. Ciałem pętli może być pojedyncza instrukcja (bez { }). Nawiasy klamrowe są potrzebne, gdy chcesz wykonać w każdej iteracji więcej niż jedną instrukcję. Brak { } nie jest błędem, ale wymaga uważności przy czytaniu kodu.
Najczęściej: przeoczenie średnika po for, błędne rozumienie warunku końca (np. <= vs <), mylenie wartości końcowej z wartością po ostatniej inkrementacji oraz zakładanie, że wcięcia w kodzie mają znaczenie składniowe jak w innych językach.
Wypisz sobie mentalnie 3 elementy: start (inicjalizacja), warunek (czy zawiera równość) i krok (np. +2). Potem sprawdź, czy wypisywanie jest w ciele pętli (tuż po for) czy po pętli (np. po średniku). To zwykle wystarcza do poprawnej odpowiedzi.
info

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

Według specjalistów z branży: "Pętla startuje od i=0, działa dopóki i&lt;=100 i zwiększa i o 2.Dzięki temu w każdej iteracji wypisywana jest aktualna wartość i: 0, 2, 4, …, 98, 100."

Źródła:

  • cppreference.com: "for" statement (C++) – https://en.cppreference.com/w/cpp/language/for (dostęp: 2026-04-02)
  • cppreference.com: "Null statement" – https://en.cppreference.com/w/cpp/language/statements (sekcja o null statement / pustej instrukcji) (dostęp: 2026-04-02)
  • Bjarne Stroustrup, "A Tour of C++" (rozdziały o instrukcjach sterujących i pętlach), wydanie zależne od publikacji (źródło książkowe)

Materiały:

  • Dokumentacja cppreference dotycząca instrukcji for i null statement
  • Podstawowy podręcznik do C++ (rozdziały o instrukcjach sterujących i pętlach)
  • Ćwiczenia z analizą krótkich fragmentów kodu (szczególnie pułapki składniowe: średnik, nawiasy klamrowe)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego