Warunek z treści składa się z dwóch niezależnych wymagań:
- a ma należeć do przedziału otwartego (0, 100),
- b ma być większe od zera.
Przedział otwarty (0, 100) w matematyce oznacza wartości większe od 0 i jednocześnie mniejsze od 100, bez włączania końców. W JavaScript zapisuje się to jako dwa porównania połączone koniunkcją:
a > 0 && a < 100
Ponieważ dodatkowo wymagamy b > 0, dokładamy trzeci warunek, również połączony operatorem AND:
if (a > 0 && a < 100 && b > 0)
Dlaczego pozostałe propozycje są niepoprawne?
- Zapis z a > 0 || a < 100 nie opisuje przedziału (0, 100), bo dla większości liczb przynajmniej jedna z tych nierówności będzie prawdziwa. Taki warunek staje się "prawie zawsze true", więc nie filtruje wartości do zakresu.
- Zapis (a > 0 || a < 100) && b > 0 nadal ma ten sam błąd: część dotycząca a używa alternatywy zamiast koniunkcji, więc nie wymusza spełnienia obu granic.
- Zapis (a > 0 && a < 100) || b < 0 zmienia sens całości: dopuszcza sytuację, w której a jest w zakresie albo b jest ujemne. To jest sprzeczne z wymaganiem b > 0 i dodatkowo używa ||, które rozluźnia warunek.
Wskazówka egzaminacyjna: gdy widzisz "przedział otwarty", prawie zawsze szukasz wzorca "> dolna_granica i < górna_granica", czyli operatora &&. Operator || pasuje do sytuacji "spełnij co najmniej jeden warunek", a nie do sprawdzania zakresu.