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 PHP

Które wyrażenie logiczne w języku PHP sprawdza, czy zmienna1 należy do przedziału obustronnie domkniętego <-5, 10>?

A.
$zmienna1 <= -5 && $zmienna1 <= 10
B.
$zmienna1 >= -5 && $zmienna1 <= 10
C.
$zmienna1 >= -5 || $zmienna1 <= 10
D.
$zmienna1 <= -5 || $zmienna1 <= 10
Wyrażenie $zmienna1 >= -5 && $zmienna1 <= 10 dokładnie sprawdza, czy wartość zmiennej mieści się w przedziale obustronnie domkniętym <-5, 10>. Domknięty oznacza, że wartości graniczne też są dozwolone, czyli -5 i 10 mają dawać wynik true. Dlatego używamy operatorów >= oraz <=, a nie samych > i <. Kluczowy jest tu operator logiczny &&, czyli logiczne AND. Warunek po lewej stronie mówi: wartość nie może być mniejsza niż -5. Warunek po prawej stronie mówi: wartość nie może być większa niż 10. Dopiero gdy oba warunki są spełnione jednocześnie, całe wyrażenie zwraca true. Moim zdaniem najlepiej zapisywać to w praktyce z nawiasami dla czytelności: ($zmienna1 >= -5) && ($zmienna1 <= 10). PHP i tak poprawnie rozumie kolejność operatorów porównania i &&, ale nawiasy pomagają innym programistom szybciej ogarnąć intencję kodu. Taki zapis przydaje się np. przy walidacji wieku, punktów z testu, temperatury, rabatu albo dowolnej liczby z formularza. W dobrych praktykach webowych warto też pamiętać, że dane z formularzy są tekstem, więc przed takim porównaniem dobrze je zwalidować lub rzutować, np. przez filter_input albo sprawdzenie, czy wartość jest liczbą.
W tym pytaniu najłatwiej pomylić się przez operator logiczny OR, czyli ||. Gdy sprawdzamy przynależność do przedziału, nie wystarczy, że będzie spełniony jeden z warunków. Wartość ma być jednocześnie większa lub równa -5 oraz mniejsza lub równa 10. To jest typowy przypadek użycia AND, czyli &&. Zapis $zmienna1 >= -5 || $zmienna1 <= 10 wygląda na pierwszy rzut oka sensownie, ale w praktyce prawie zawsze zwróci true dla liczb. Jeśli liczba jest mniejsza od -5, spełni warunek <= 10. Jeśli jest większa od 10, spełni warunek >= -5. Czyli taki test nie ogranicza wartości do środka przedziału, tylko robi zbyt szeroką bramkę, mówiąc kolokwialnie. Podobny problem pojawia się przy warunkach z <= -5. Taki zapis przesuwa sens porównania w złą stronę, bo zaczyna sprawdzać wartości mniejsze od dolnej granicy, a nie wartości od niej w górę. Wyrażenie z || i dwoma warunkami <= w zasadzie sprowadza się do sprawdzenia, czy wartość jest nie większa niż 10, więc dopuści np. -100, mimo że -100 nie należy do przedziału <-5, 10>. Z kolei zapis z && oraz $zmienna1 <= -5 ogranicza wynik do wartości mniejszych lub równych -5, bo drugi warunek <= 10 niczego już realnie nie zawęża. Typowy błąd myślowy polega na czytaniu przedziału jako dwóch osobnych możliwości, zamiast jako zakresu, w którym trzeba spełnić oba ograniczenia naraz. W praktycznym kodzie PHP warto myśleć tak: dolna granica wymaga >=, górna granica wymaga <=, a między nimi musi stać &&. Dla przejrzystości dobrze pisać ($zmienna1 >= -5) && ($zmienna1 <= 10), szczególnie w projektach, gdzie kod czyta potem ktoś inny albo wraca się do niego po paru tygodniach.

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.