Które wyrażenie logiczne należy zastosować w języku JavaScript, aby wykonać operacje tylko dla liczb z przedziału jednostronnie domkniętego (-50, 50>?
A. (liczba < -50) || (liczba >= 50)
B. (liczba > -50) && (liczba <= 50)
C. (liczba < -50) && (liczba <= 50)
D. (liczba > -50) || (liczba <= 50)
Wyrażenie (liczba > -50) && (liczba <= 50) dokładnie opisuje przedział jednostronnie domknięty (-50, 50>. Lewy nawias okrągły oznacza, że wartość -50 nie należy do przedziału, więc trzeba użyć warunku liczba > -50. Prawy nawias domknięty, zapisany tutaj jako >, oznacza że 50 już się zalicza, dlatego warunek musi być liczba <= 50. Operator && w JavaScript oznacza logiczne AND, czyli oba warunki muszą być spełnione jednocześnie. To jest bardzo ważne, bo sprawdzamy, czy liczba znajduje się pomiędzy dwoma granicami, a nie tylko spełnia jeden z warunków. Przykładowo dla liczby 0 wynik będzie true, dla 50 też true, ale dla -50 już false. W praktyce taki warunek można użyć np. przy walidacji danych z formularza, filtrowaniu wyników albo sprawdzaniu zakresu temperatury w aplikacji. Moim zdaniem to jeden z tych prostych warunków, które dobrze pokazują, czy ktoś naprawdę rozumie operatory porównania i logikę programu. Dobrą praktyką w JavaScript jest też zapisywanie takich warunków czytelnie, z nawiasami, nawet gdy nie zawsze są wymagane przez priorytety operatorów. Kod wtedy łatwiej utrzymać i mniej osób się na nim wyłoży.
W tym zadaniu kluczowe jest zrozumienie, że przedział (-50, 50> oznacza wartości większe od -50 oraz jednocześnie mniejsze lub równe 50. To nie są dwa niezależne przypadki, tylko jeden wspólny zakres. Dlatego potrzebny jest operator &&, a nie ||. Operator || działa jak logiczne OR, czyli wystarczy, że spełniony będzie jeden z warunków. Przy sprawdzaniu przedziału liczbowego prawie zawsze chcemy, aby obie granice były kontrolowane naraz. Jeśli użyjemy warunku liczba > -50 || liczba <= 50, to w praktyce prawie każda liczba przejdzie test, bo liczba bardzo duża, np. 1000, spełnia pierwszą część, a liczba bardzo mała, np. -1000, spełnia drugą część. To typowa pułapka przy myśleniu w stylu albo jest większa od lewej granicy, albo mniejsza od prawej, a powinno być i jedno, i drugie. Warunki z liczba < -50 opisują wartości leżące po lewej stronie przedziału, więc dotyczą raczej sytuacji poza zakresem, a nie wewnątrz niego. Z kolei połączenie liczba < -50 && liczba <= 50 również nie wyznacza szukanego przedziału, bo przepuszcza liczby mniejsze od -50, np. -80, czyli dokładnie te, których nie chcemy. W JavaScript trzeba też pilnować różnicy między < a <=. Znak < wyklucza granicę, a <= ją włącza. Z mojego doświadczenia najczęstszy błąd w takich zadaniach to pomylenie nawiasów przedziału matematycznego z operatorami logicznymi w kodzie. Najpierw warto przetłumaczyć zapis matematyczny na zdanie: liczba jest większa od -50 i liczba jest mniejsza lub równa 50. Dopiero potem zapisać to jako warunek programu.