KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 29.
W języku JavaScript należy zapisać warunek, który będzie spełniony, gdy zmienna a będzie dowolną liczbą naturalną dodatnią (bez 0) lub gdy zmienna b będzie dowolną liczbą z przedziału domkniętego od 10 do 100. Użyte w tym warunku wyrażenie logiczne będzie miało postać
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawny zapis musi realizować alternatywę: warunek jest prawdziwy, gdy albo a > 0, albo b należy do przedziału domkniętego [10,100]. Przedział domknięty oznacza dwie nierówności spełnione jednocześnie: b >= 10 oraz b <= 100, więc potrzebne jest &&, a całość łączy ||.

Pełne wyjaśnienie:

Warunek z treści ma być spełniony w sytuacji, gdy zajdzie co najmniej jedna z dwóch możliwości:

  • zmienna a jest dodatnia (w treści opisano to jako "liczba naturalna dodatnia bez 0", co w zapisie nierówności odpowiada warunkowi a > 0),
  • zmienna b należy do przedziału domkniętego od 10 do 100, czyli b jest nie mniejsze niż 10 i jednocześnie nie większe niż 100.

W logice programowania alternatywę realizuje operator || (logiczne "lub"): wystarczy, że jeden z członów będzie prawdziwy. Dlatego całe wyrażenie ma postać: (warunek dla a) || (warunek dla b).

Dla przedziału domkniętego [10,100] kluczowe jest to, że muszą być spełnione oba ograniczenia jednocześnie: b >= 10 oraz b <= 100. To jest koniunkcja, więc używa się operatora &&. Zastosowanie || pomiędzy tymi nierównościami byłoby błędem, bo wtedy prawdziwe byłyby prawie wszystkie wartości (np. dla dowolnej liczby b zachodzi albo b >= 10, albo b <= 100).

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

  • Połączenie (a > 0) z warunkiem na b przez && wymagałoby spełnienia obu części naraz, a w treści jest wyraźnie "lub", więc to zmienia sens zadania.
  • Użycie || między nierównościami dla przedziału to typowa pomyłka: taki zapis nie opisuje przedziału, tylko praktycznie "całą prostą liczbową".
  • Wariant z samym && dla obu części (dla a i dla b) także jest zbyt restrykcyjny, bo wymaga jednoczesnego spełnienia warunków dla a i b, a nie spełnienia przynajmniej jednego z nich.

Wskazówka egzaminacyjna: gdy widzisz "przedział domknięty [x,y]", automatycznie tłumacz to na dwa porównania połączone &&: v >= x && v <= y. Gdy widzisz w treści "lub", łączysz główne części przez ||.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Przedział domknięty [10,100] oznacza, że wartości graniczne też się liczą. W kodzie zapisujesz to jako dwa porównania spełnione jednocześnie: b >= 10 oraz b <= 100, połączone operatorem &&.
Łączysz dwa niezależne człony operatorem alternatywy ||: (a > 0) || ((b >= 10) && (b <= 100)). Nawiasy pomagają jasno pokazać, że sprawdzenie przedziału dla b to koniunkcja dwóch nierówności.
Bo liczba należy do przedziału tylko wtedy, gdy spełnia oba ograniczenia jednocześnie: nie jest mniejsza niż dolna granica i nie jest większa niż górna. Gdyby użyć ||, warunek byłby prawdziwy dla prawie każdej liczby, więc nie opisywałby zakresu.
Nie zawsze są konieczne ze względu na priorytety, ale są bardzo zalecane. Operator && ma wyższy priorytet niż ||, jednak nawiasy zwiększają czytelność i zmniejszają ryzyko błędu podczas modyfikacji warunku w przyszłości.
Najczęściej myli się operator łączący nierówności: wpisuje się || zamiast &&. Drugi błąd to połączenie całego warunku dla a i b przez &&, co zmienia sens "lub" na "i" i nadmiernie zawęża przypadki spełnienia.
Operator || zwraca prawdę, gdy co najmniej jeden z jego argumentów jest prawdziwy. W praktyce oznacza to, że blok if wykona się nawet wtedy, gdy spełniony jest tylko jeden z warunków (np. poprawne a, ale b poza zakresem).
Operator && wymaga spełnienia obu części warunku. Dlatego idealnie pasuje do sprawdzania zakresu: liczba jest w przedziale, gdy jednocześnie nie spada poniżej dolnej granicy i nie przekracza górnej granicy.
Nie. Warunek a > 0 dopuszcza też liczby dodatnie niecałkowite (np. 0.5). Jeśli naprawdę chcesz sprawdzić "liczba naturalna dodatnia", zwykle dodaje się sprawdzenie całkowitości (np. funkcją do sprawdzania, czy to liczba całkowita) oraz brak zera.
Szukaj w treści słów typu "lub", "albo", "wystarczy gdy". To sygnał alternatywy, czyli operatora ||. Z kolei sformułowania typu "od… do…", "w przedziale" zwykle oznaczają dwie nierówności połączone &&.
Najlepiej przerabiać krótkie zadania z walidacji danych: zakresy (wiek, ocena, cena), wartości brzegowe (czy 10 i 100 są dopuszczalne), oraz łączenie kilku kryteriów. Sprawdzaj ręcznie kilka przykładów liczb, by upewnić się, że warunek działa zgodnie z treścią.
info

Około 69% zdających odpowiada poprawnie na to pytanie. średnie

Specjaliści zwracają uwagę: "Poprawny zapis musi realizować alternatywę: warunek jest prawdziwy, gdy albo a &gt; 0, albo b należy do przedziału domkniętego [10,100]."

Źródła:

  • ECMA International: ECMAScript Language Specification (ECMA-262) – sekcje dotyczące operatorów Logical OR (||) i Logical AND (&&), https://tc39.es/ecma262/ (dostęp: 2026-02-28)
  • MDN Web Docs: Logical OR (||) operator, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR (dostęp: 2026-02-28)
  • MDN Web Docs: Logical AND (&&) operator, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja MDN: operatory logiczne i porównania w JavaScript
  • Specyfikacja ECMAScript (ECMA-262) – rozdziały o operatorach logicznych
  • Zadania treningowe z budowania warunków złożonych (if) i walidacji zakresów

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego