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 logiczne w PHP Operatory porównania w PHP

Program zapisany w języku PHP ma wykonać instrukcję tylko dla skrajnych ocen ucznia, czyli 1 lub 6 (zmienna $ocena). Warunek powinien zawierać wyrażenie logiczne

A. $ocena == 1 and $ocena == 6
B. $ocena >= 1 and $ocena <= 6
C. $ocena > 1 and $ocena < 6
D. $ocena == 1 or $ocena == 6
Warunek ma sprawdzać tylko dwie skrajne wartości: ocenę 1 albo ocenę 6. Dlatego logicznie potrzebne jest połączenie alternatywą, czyli operatorem or. W PHP porównanie wykonujemy operatorem ==, więc sens warunku jest taki: zmienna ocena jest równa 1 lub zmienna ocena jest równa 6. Jeśli uczeń ma 1, lewa część warunku daje true i instrukcja się wykona. Jeśli ma 6, prawa część daje true i też się wykona. Dla ocen 2, 3, 4 i 5 obie części są false, więc kod nie zostanie uruchomiony. Moim zdaniem to bardzo dobry przykład na odróżnienie „zakresu” od „konkretnych wartości”, bo w praktyce webowej takie warunki pojawiają się cały czas, np. przy walidacji formularza, sprawdzaniu roli użytkownika albo obsłudze specjalnych statusów. W PHP warto też pamiętać, że często w projektach spotyka się operatory || i && zamiast or i and, bo mają bardziej typowy priorytet operatorów i są czytelne dla programistów z różnych języków. Dobra praktyka to dodatkowo używać nawiasów, gdy warunek robi się dłuższy, np. dla czytelności: ocena == 1 lub ocena == 6. Tutaj jednak sama logika jest najważniejsza: ma być spełniona jedna z dwóch możliwości, a nie obie naraz.
W tym zadaniu łatwo pomylić sprawdzanie skrajnych ocen ze sprawdzaniem całego przedziału ocen. Warunek typu ocena > 1 and ocena < 6 oznacza, że akceptowane są wartości większe od 1 i jednocześnie mniejsze od 6, czyli w szkolnej skali będą to głównie 2, 3, 4 i 5. To jest środek skali, a nie skrajne oceny. Bardzo podobny błąd pojawia się przy zapisie ocena >= 1 and ocena <= 6. Taki warunek sprawdza poprawność oceny jako wartości z zakresu od 1 do 6 włącznie. Jest przydatny przy walidacji danych z formularza, ale nie wtedy, gdy instrukcja ma zadziałać tylko dla ocen wyjątkowych, czyli najniższej i najwyższej. Najbardziej podchwytliwe jest użycie operatora and przy dwóch porównaniach równości: ocena == 1 and ocena == 6. Jedna zmienna nie może mieć w tym samym momencie jednocześnie wartości 1 i 6, więc taki warunek nigdy nie będzie prawdziwy. To typowy błąd myślowy: ktoś czyta „1 i 6” językiem potocznym, ale w logice programowania and oznacza konieczność spełnienia obu warunków naraz. W PHP, tak samo jak w innych językach, trzeba świadomie rozróżniać koniunkcję i alternatywę. Jeśli wystarczy jedna z kilku wartości, używamy or albo często praktyczniej ||. Z mojego doświadczenia najlepiej zadać sobie pytanie: „czy obie rzeczy mają być prawdziwe naraz, czy wystarczy jedna z nich?”. Tutaj wystarczy jedna, więc potrzebne jest porównanie z 1 połączone alternatywą z porównaniem z 6.

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.