Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Algorytmy i podstawy informatyki JavaScript

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) i jednocześnie 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. (a > 0) && ((b >= 10) && (b <= 100))
B. (a > 0) || ((b >= 10) && (b <= 100))
C. (a > 0) && ((b >= 10) || (b <= 100))
D. (a > 0) || ((b >= 10) || (b <= 100))
Wyrażenie (a > 0) && ((b >= 10) && (b <= 100)) dobrze oddaje sens warunku z treści zadania. Operator && w JavaScript oznacza logiczne AND, czyli oba warunki muszą być spełnione jednocześnie. Najpierw sprawdzamy, czy a > 0, a więc czy wartość zmiennej a jest dodatnia. Następnie dla zmiennej b trzeba zapisać przynależność do przedziału domkniętego od 10 do 100, czyli b >= 10 oraz b <= 100. Tu też potrzebne jest &&, bo b ma być naraz nie mniejsze niż 10 i nie większe niż 100. Moim zdaniem to jest jeden z tych warunków, które warto zawsze rozbijać sobie w głowie na małe części: osobno warunek dla a, osobno dolna granica b, osobno górna granica b. W praktycznym kodzie taki zapis przydaje się np. przy walidacji formularza, gdzie użytkownik podaje wiek, liczbę sztuk produktu albo zakres punktów. Dobra praktyka w JavaScript to używanie nawiasów tam, gdzie poprawiają czytelność, nawet jeśli część z nich nie jest konieczna przez priorytet operatorów. Warto też pamiętać, że jeżeli naprawdę wymagamy liczby naturalnej, a nie tylko dodatniej, to w kodzie produkcyjnym należałoby dopisać np. Number.isInteger(a) && a > 0. W tym zadaniu jednak chodzi głównie o poprawne połączenie warunków logicznych i granic przedziału.
Błędy w pozostałych wariantach wynikają głównie z pomylenia operatora && z operatorem ||. W JavaScript operator || oznacza logiczne OR, czyli wystarczy spełnienie jednego z warunków. To zupełnie zmienia sens zapisu. Jeżeli między warunkiem a > 0 oraz sprawdzeniem zakresu b pojawi się ||, to całe wyrażenie będzie prawdziwe nawet wtedy, gdy tylko a jest dodatnie, a b ma wartość kompletnie spoza zakresu, na przykład 500. A przecież treść mówi, że oba wymagania mają być spełnione jednocześnie. Podobny problem pojawia się przy opisie przedziału od 10 do 100. Zapis z operatorem || między b >= 10 i b <= 100 jest praktycznie zawsze prawdziwy dla zwykłych liczb, bo liczba 5 spełnia b <= 100, a liczba 150 spełnia b >= 10. Taki warunek nie ogranicza b do przedziału, tylko przepuszcza prawie wszystko. To typowy błąd myślowy: ktoś czyta po polsku od 10 do 100 i widzi dwie granice, ale łączy je słowem lub, zamiast i. W programowaniu trzeba być tu bardzo dokładnym, bo logika formalna nie wybacza skrótów myślowych. Przedział domknięty [10, 100] oznacza, że granice 10 i 100 też są dozwolone, dlatego używamy >= oraz <=. Gdyby wymagany był przedział otwarty, wtedy byłyby znaki > i <. Warto również zauważyć, że nawiasy pomagają czytać kod, ale same nawiasy nie naprawią źle dobranego operatora logicznego. Najbezpieczniej jest czytać takie wyrażenie na głos: a jest większe od zera i b jest większe lub równe 10 i b jest mniejsze lub równe 100. Wtedy od razu widać, że potrzebne są same operatory && między wymaganymi warunkami.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.