KWALIFIKACJA INF3 - STYCZEŃ 2023 (test 2)

PYTANIE NR 3.
Skrypt JavaScript obsługujący płace pracowników ma za zadanie wygenerować raport dla pracowników, którzy są zatrudnieni na umowę o pracę oraz zarabiają w przedziale obustronnie domkniętym od 4000 do 4500 zł. Wskaż warunek wygenerowania raportu.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawny warunek musi jednocześnie spełniać dwa kryteria: typ umowy to "praca" oraz pensja mieści się w zakresie 4000–4500 włącznie. Dlatego stosuje się operator AND między sprawdzeniem umowy i sprawdzeniem przedziału, a przedział zapisuje jako dwie nierówności połączone AND: pensja >= 4000 i pensja <= 4500.

Pełne wyjaśnienie:

Warunek ma wyłonić tych pracowników, którzy spełniają oba wymagania jednocześnie:

  • są zatrudnieni na umowę o pracę (czyli zmienna umowa ma wartość "praca"),
  • ich wynagrodzenie mieści się w przedziale domkniętym 4000–4500, czyli z uwzględnieniem wartości granicznych.

W logice i w JavaScript sytuacja "musi być spełnione X oraz Y" wymaga użycia koniunkcji, czyli operatora &&. Stąd poprawna struktura to: sprawdzenie umowy && sprawdzenie przedziału pensji.

Przedział domknięty zapisuje się jako dwa porównania połączone AND:

  • pensja >= 4000 (nie mniej niż 4000),
  • pensja <= 4500 (nie więcej niż 4500).

Połączenie tych dwóch porównań operatorem OR byłoby błędem, bo warunek pensja >= 4000 || pensja <= 4500 jest prawdziwy dla ogromnej większości liczb (praktycznie dla każdej), więc nie ograniczałby wyniku do przedziału.

Dlaczego pozostałe propozycje są niepoprawne:

  • Warianty z OR między umową a pensją dopuszczają pracowników spełniających tylko jeden z warunków (np. dowolna umowa, byle pensja w zakresie), a w zadaniu wymagane są oba naraz.
  • Warianty z OR wewnątrz sprawdzania pensji nie testują przedziału, tylko warunek "co najmniej 4000 lub co najwyżej 4500", co nie odpowiada zapisowi 4000–4500 włącznie.

W praktyce takie warunki stosuje się w instrukcjach if lub przy filtrowaniu danych do raportów (np. w aplikacji kadrowej), gdzie precyzja operatorów logicznych bezpośrednio wpływa na poprawność wyników.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Użyj dwóch porównań połączonych operatorem AND: pensja >= 4000 && pensja <= 4500. Zapis "włącznie" oznacza, że wartości 4000 i 4500 też mają przechodzić warunek, więc stosuje się znaki >= oraz <=.
Bo warunek typu pensja >= 4000 || pensja <= 4500 jest prawdziwy dla prawie każdej liczby. W praktyce nie ogranicza wyniku do widełek, tylko przepuszcza większość wartości, więc raport byłby błędny.
To przedział, w którym obie granice należą do zakresu. Dla 4000–4500 domkniętego oznacza to, że 4000 i 4500 są akceptowane. W kodzie odpowiada temu użycie >= i <=, a nie > i <.
Jeżeli oba muszą być spełnione jednocześnie, użyj AND: umowa == 'praca' && (pensja >= 4000 && pensja <= 4500). Nawiasy przy części z pensją poprawiają czytelność i ułatwiają uniknięcie błędów logicznych.
Niekoniecznie, ale często są zalecane. Nawiasy nie zmieniają logiki, gdy priorytety operatorów i tak dają ten sam wynik, ale zwiększają czytelność i chronią przed pomyłką, zwłaszcza gdy mieszasz && z || lub masz kilka kryteriów.
Najczęstsze są: użycie OR zamiast AND w zakresie, pomylenie znaków (> zamiast >=), brak jednego z ograniczeń (np. tylko dolna granica) oraz zła kolejność łączenia warunków przy dodatkowych kryteriach, np. typie umowy.
Wtedy do raportu trafią osoby, które spełniają tylko jeden warunek: albo mają umowę "praca" niezależnie od pensji, albo mają pensję w zakresie niezależnie od typu umowy. To zmienia sens zadania, bo raport ma dotyczyć pracowników spełniających oba kryteria.
Podstaw wartości graniczne i sprawdź wynik logiczny. Dla domkniętego zakresu warunek ma zwrócić prawdę dla 4000 i 4500. Jeśli użyjesz > i <, granice odpadną. Jeśli użyjesz >= i <=, granice przejdą poprawnie.
Tworzysz funkcję zwracającą true/false, np. pracownicy.filter(p => p.umowa == 'praca' && p.pensja >= 4000 && p.pensja <= 4500). Filtr wybierze tylko te obiekty, które spełniają wszystkie składowe warunku.
Szukaj słów: "oraz", "i jednocześnie", "spełniają oba warunki" → zwykle AND (&&). Słowa: "lub", "co najmniej jeden warunek" → zwykle OR (||). Przy przedziałach liczbowych prawie zawsze potrzebujesz dwóch nierówności połączonych AND.
info

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

Specjaliści zwracają uwagę: "Poprawny warunek musi jednocześnie spełniać dwa kryteria: typ umowy to "praca" oraz pensja mieści się w zakresie 4000–4500 włącznie."

Źródła:

  • MDN Web Docs: Logical AND (&&) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND - dostęp 2026-03-02
  • MDN Web Docs: Logical OR (||) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR - dostęp 2026-03-02
  • MDN Web Docs: Comparison operators - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_operators#comparison_operators - dostęp 2026-03-02

Materiały:

  • Dokumentacja MDN: operatory logiczne i porównania w JavaScript
  • Ćwiczenia: budowa warunków dla przedziałów (domknięty/otwarty) i łączenie kilku kryteriów
  • Powtórka: tabelka priorytetów operatorów w JavaScript (operator precedence)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego