KWALIFIKACJA INF2 + INF3 - CZERWIEC 2007

PYTANIE NR 9.
Jaką wartość będzie miała zmienna WYNIK po wykonaniu poniższego kodu w języku rozróżniającym wielkość liter w nazwach zmiennych?
X = 3;
WYNIK = 100;
if (X > 10) {
WYNIK++;
} else {
WYNIK = 0;
}
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Warunek X > 10 jest fałszywy, bo X = 3. Dlatego blok z WYNIK++ nie wykona się wcale. Wykonuje się gałąź else, która nadpisuje wartość instrukcją WYNIK = 0. Ostatecznie WYNIK ma wartość 0.

Pełne wyjaśnienie:

To zadanie sprawdza umiejętność śledzenia wykonania kodu z instrukcją warunkową if-else. W takiej konstrukcji zawsze wykonuje się dokładnie jedna gałąź: albo blok if (gdy warunek jest prawdziwy), albo blok else (gdy warunek jest fałszywy).

Krok po kroku:

  • Najpierw ustawiane jest X = 3.
  • Następnie WYNIK = 100 (wartość startowa).
  • Sprawdzany jest warunek X > 10, czyli pytanie: "czy 3 jest większe niż 10?". Odpowiedź brzmi: nie, więc warunek jest fałszywy.
  • Skoro warunek jest fałszywy, instrukcja WYNIK++ (inkrementacja o 1) nie jest wykonywana.
  • Uruchamia się blok else z instrukcją WYNIK = 0, która nadpisuje wcześniejsze 100.

Dlatego końcowa wartość to 0.

Dlaczego pozostałe odpowiedzi są błędne?

  • "101" wynikałoby z inkrementacji 100 do 101, ale stałoby się tak tylko wtedy, gdy warunek X > 10 byłby prawdziwy. Tu nie jest.
  • "100" byłoby poprawne, gdyby kod nie zmieniał WYNIK w żadnej gałęzi lub gdyby nie było bloku else. W tym kodzie else zmienia wartość na 0.
  • "10" nie wynika z żadnej operacji w kodzie; może być efektem pomylenia wartości z warunku (10) z wynikiem zmiennej.

W praktyce takie rozumowanie wykorzystuje się przy debugowaniu walidacji formularzy i logiki dostępu: najpierw oceniasz warunek, a potem analizujesz tylko tę gałąź, która rzeczywiście się wykona.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Instrukcja if-else wybiera jedną z dwóch ścieżek wykonania. Gdy warunek w if jest prawdziwy, wykona się blok if; gdy jest fałszywy, wykona się blok else. Nigdy nie wykonują się oba bloki naraz.
Ponieważ warunek to X > 10, a zmienna X ma wartość 3. Skoro 3 nie jest większe niż 10, warunek jest fałszywy i blok z inkrementacją WYNIK++ zostaje pominięty.
Operator ++ zwiększa wartość zmiennej o 1 (inkrementacja). Zapis WYNIK++ oznacza "podnieś WYNIK o 1". Zadziała jednak tylko wtedy, gdy interpreter dotrze do tej instrukcji w wykonywanej gałęzi kodu.
Przypisanie (np. WYNIK = 0) ustawia wartość bez względu na to, co było wcześniej. Zwiększanie (np. WYNIK++) modyfikuje obecną wartość. W zadaniach egzaminacyjnych to częsta pułapka.
Nie. Konstrukcja if-else jest rozgałęzieniem: wybierana jest jedna gałąź. Jeśli warunek jest prawdziwy, wykona się blok if; w przeciwnym razie wykona się blok else. To kluczowe przy analizie przebiegu programu.
W językach case-sensitive identyfikatory X i x oznaczają dwie różne zmienne. Jeśli w kodzie miesza się wielkie i małe litery, można nieświadomie odwołać się do innej zmiennej, co zmienia wynik programu lub powoduje błąd.
Najpierw wypisz wartości startowe, potem sprawdź warunek (prawda/fałsz), a następnie analizuj tylko wykonaną gałąź. Na końcu zwróć uwagę, czy jest przypisanie (nadpisuje) czy inkrementacja (zwiększa).
Choć WYNIK startuje od 100, to przy fałszywym warunku wykona się blok else z instrukcją WYNIK = 0. To przypisanie nadpisuje 100, więc wartość końcowa nie może pozostać 100.
Bardzo często: do walidacji formularzy, reagowania na role użytkowników, obsługi błędów, wyboru widoków i komunikatów. To podstawowy mechanizm "logiki biznesowej" zarówno w skryptach po stronie klienta, jak i serwera.
Najczęstsze to: czytanie warunku "na skróty" bez podstawienia wartości, mylenie operatorów (> z < albo ==), oraz zakładanie, że instrukcje z bloku if "i tak się wykonają". Pomaga liczenie krok po kroku.
info

Statystycznie 76% uczniów zna prawidłową odpowiedź. średnio łatwe

W praktyce zawodowej kluczowe jest to, że warunek X &gt; 10 jest fałszywy, bo X = 3.

Źródła:

  • MDN Web Docs: if...else — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else (dostęp: 05.03.2026)
  • MDN Web Docs: Increment (++) operator — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment (dostęp: 05.03.2026)
  • MDN Web Docs: Grammar and types (Identifiers / case sensitivity) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_Types (dostęp: 05.03.2026)

Materiały:

  • Dokumentacja języka używanego na zajęciach (sekcja: instrukcje warunkowe)
  • Materiały o podstawach debugowania i code tracing
  • Ćwiczenia: przewidywanie wyników prostych fragmentów kodu if-else

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego