W języku JavaScript, aby sprawdzić warunek, czy liczba znajduje się w przedziale (100, 200>, należy zapisać:
A.
if (liczba < 100 && liczba <= 200)
B.
if (liczba > 100 || liczba <= 200)
C.
if (liczba > 100 && liczba <= 200)
D.
if (liczba < 100 || liczba >= 200)
Pytanie z egzaminu CKE, styczeń 2017 (arkusz E.14-X-17.01).
Warunek if (liczba > 100 && liczba <= 200) dobrze opisuje przedział (100, 200>, czyli taki, w którym 100 nie należy do zakresu, a 200 już należy. Dlatego po lewej stronie jest operator >, a nie >=. Liczba musi być większa od 100. Po prawej stronie jest <=, bo wartość 200 ma jeszcze przejść test. Operator && oznacza logiczne AND, czyli oba warunki muszą być spełnione jednocześnie. W praktyce taki zapis stosuje się np. przy sprawdzaniu progu punktów, ceny produktu, wieku użytkownika albo zakresu wartości wpisanej w formularzu. Moim zdaniem to jeden z tych warunków, które warto umieć pisać bez zastanawiania, bo w JavaScript pojawiają się non stop: w walidacji danych, obsłudze zdarzeń i prostych algorytmach. Dobrą praktyką jest też czytelne rozdzielanie porównań, zamiast próbować pisać coś w stylu 100 < liczba <= 200, bo w JavaScript taki zapis nie działa tak jak w matematyce szkolnej.
W tym zadaniu łatwo pomylić zapis matematyczny przedziału z operatorem logicznym w JavaScript. Przedział (100, 200> oznacza, że interesują nas tylko liczby większe od 100 i jednocześnie mniejsze lub równe 200. Słowo jednocześnie jest tutaj kluczowe, więc potrzebny jest operator &&, a nie ||. Operator || oznacza logiczne OR, czyli wystarczy spełnienie jednego z warunków. Zapis liczba > 100 || liczba <= 200 jest szczególnie zdradliwy, bo dla zwykłych liczb będzie praktycznie zawsze prawdziwy: liczba albo jest większa od 100, albo jest mniejsza lub równa 200. To nie ogranicza zakresu, tylko wpuszcza prawie wszystko. Z kolei warunek z liczba < 100 idzie w przeciwną stronę, bo sprawdza wartości poniżej dolnej granicy, a nie wewnątrz przedziału. Często wynika to z mechanicznego przepisania znaku nierówności bez zastanowienia, czy granica ma być otwarta czy domknięta. Zapis liczba < 100 && liczba <= 200 sprowadza się w praktyce do sprawdzania liczb mniejszych od 100, bo jeśli coś jest mniejsze od 100, to automatycznie jest też mniejsze lub równe 200. Warunek liczba < 100 || liczba >= 200 bardziej przypomina sprawdzanie wartości poza pewnym zakresem, ale też ma źle dobrane granice względem zadanego przedziału. W JavaScript warto zawsze rozbić takie zadanie na dwa pytania: jaka jest dolna granica i czy należy do przedziału, oraz jaka jest górna granica i czy należy do przedziału. Potem łączymy je przez &&, jeśli liczba ma spełniać oba ograniczenia naraz.