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

Słowa kluczowe: Operatory porównania i logiczne w PHP

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

A.
$zmienna1 <= -5 || $zmienna1 < 10
B.
$zmienna1 >= -5 || $zmienna1 < 10
C.
$zmienna1 <= -5 && $zmienna1 < 10
D.
$zmienna1 >= -5 && $zmienna1 < 10

Pytanie z egzaminu CKE, czerwiec 2019 (arkusz EE.09-X-19.06).

Wyrażenie $zmienna1 >= -5 && $zmienna1 < 10 poprawnie sprawdza, czy wartość zmiennej należy do przedziału <-5, 10), czyli do przedziału domkniętego z lewej strony i otwartego z prawej. Warunek $zmienna1 >= -5 oznacza, że dopuszczamy liczbę -5 oraz wszystkie większe wartości. Drugi warunek, $zmienna1 < 10, mówi, że wartość musi być mniejsza od 10, ale sama liczba 10 już nie przechodzi testu. Operator && w PHP oznacza logiczne AND, czyli oba warunki muszą być spełnione jednocześnie. To jest dokładnie sens sprawdzania przynależności do przedziału liczbowego. W praktyce taki zapis przydaje się np. przy walidacji danych z formularza, kontroli zakresu wieku, punktów, temperatury albo poziomu dostępu. Moim zdaniem dobrą praktyką jest zapis z nawiasami: ($zmienna1 >= -5) && ($zmienna1 < 10), bo czytelniej pokazuje intencję programisty, szczególnie w większych warunkach if. W PHP warto też pamiętać o typach danych: jeśli wartość pochodzi z formularza, dobrze ją wcześniej sprawdzić lub rzutować na liczbę, żeby uniknąć dziwnych efektów porównań.
W tym zadaniu kluczowe jest rozróżnienie między warunkiem złożonym typu AND oraz OR, a także poprawne ustawienie znaków nierówności przy granicach przedziału. Przedział <-5, 10) oznacza, że wartość ma być jednocześnie nie mniejsza niż -5 i mniejsza niż 10. Nie chodzi więc o wybranie jednej z dwóch możliwości, tylko o spełnienie obu ograniczeń naraz. Gdy użyje się operatora ||, czyli logicznego OR, program przepuści wartość, jeżeli prawdziwy będzie przynajmniej jeden z warunków. To mocno zmienia znaczenie. Na przykład zapis $zmienna1 >= -5 || $zmienna1 < 10 w praktyce jest prawdziwy dla prawie każdej liczby, bo liczby mniejsze od 10 spełnią prawą część, a liczby od 10 w górę spełnią lewą część. Taki warunek nie ogranicza zakresu, tylko robi bardzo szeroką alternatywę. Z kolei użycie $zmienna1 <= -5 odwraca sens lewej granicy. Zamiast dopuszczać wartości od -5 w górę, wybiera wartości mniejsze lub równe -5, czyli przeciwną stronę osi liczbowej. Jeśli połączy się to operatorem && z warunkiem $zmienna1 < 10, wynik będzie obejmował wartości mniejsze lub równe -5, a nie przedział od -5 do 10. To typowy błąd myślowy: ktoś widzi znak przy liczbie granicznej, ale nie sprawdza, po której stronie tej granicy ma być właściwy zakres. W kodzie produkcyjnym takie pomyłki są groźne, bo walidacja formularza albo reguła biznesowa wygląda na sensowną, a tak naprawdę przepuszcza złe dane. Z mojego doświadczenia najlepiej czytać taki warunek na głos: zmienna jest większa lub równa -5 oraz zmienna jest mniejsza od 10. Wtedy od razu widać, że potrzebny jest operator &&, nie ||.

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.