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 Pętla while w PHP

Pętla while powinna być wykonywana tak długo, jak długo zmienna x będzie przyjmowała wartości z przedziału obustronnie otwartego (-2, 5). Zapis tego warunku w nagłówku pętli za pomocą języka PHP ma postać

A. ($x > -2) && ($x < 5)
B. ($x < -2) || ($x > 5)
C. ($x == -2) && ($x < 5)
D. ($x > -2) || ($x > 5)

Pytanie z egzaminu CKE, styczeń 2020 (arkusz EE.09-SG-20.01).

Warunek jest dobrany dobrze, bo przedział obustronnie otwarty (-2, 5) oznacza: x ma być większe od -2 oraz jednocześnie mniejsze od 5. Słowo jednocześnie jest tutaj najważniejsze, dlatego w PHP używa się operatora logicznego &&, czyli logicznego AND. Sam zapis można czytać tak: wykonuj pętlę while tylko wtedy, gdy spełnione są oba porównania: x > -2 i x < 5. Wartości graniczne nie wchodzą do przedziału, więc dla x równego -2 albo 5 pętla już nie powinna się wykonać. W praktyce taki warunek może służyć np. do kontrolowania zakresu danych wejściowych, wykonywania obliczeń tylko dla dopuszczalnych wartości albo ograniczania działania algorytmu. Moim zdaniem nawiasy wokół pojedynczych porównań są tu bardzo czytelne, nawet jeśli czasem PHP poradziłby sobie bez nich. To dobra praktyka, podobna do zaleceń znanych ze stylów kodowania typu PSR: kod ma być jasny dla człowieka, nie tylko poprawny dla interpretera. Trzeba też pamiętać, że w pętli while zmienna x powinna się zmieniać wewnątrz pętli, bo inaczej łatwo zrobić pętlę nieskończoną.
W tym zadaniu najłatwiej pomylić warunek kontynuowania pętli z warunkiem jej zatrzymania. Pętla while działa tak długo, jak warunek w nagłówku ma wartość true, więc trzeba zapisać dokładnie zakres dozwolony, a nie jego odwrotność. Przedział (-2, 5) jest obustronnie otwarty, czyli wartości -2 i 5 są wykluczone. Dlatego porównanie równości x == -2 nie pasuje do treści zadania, bo wymusza jedną konkretną wartość graniczną, której właśnie nie wolno przyjąć. To częsty błąd: ktoś widzi liczbę z przedziału i od razu wpisuje ==, zamiast pomyśleć o nierównościach. Warunki z operatorem || też prowadzą w złą stronę. Operator OR oznacza, że wystarczy spełnić tylko jedną część warunku. Jeśli zapiszemy coś w stylu x < -2 lub x > 5, opisujemy wartości leżące poza przedziałem, a nie wewnątrz niego. To mogłoby mieć sens jako warunek błędu albo zakończenia, ale nie jako nagłówek pętli mającej działać w zakresie. Z kolei zapis x > -2 lub x > 5 jest logicznie zbyt szeroki, bo drugi fragment jest już zawarty w pierwszym. Dla przykładu x równe 8 też spełni taki warunek, mimo że zdecydowanie nie należy do przedziału (-2, 5). Z mojego doświadczenia najlepiej tłumaczyć to sobie zdaniem: ma być większe od lewej granicy i mniejsze od prawej granicy. Skoro oba warunki muszą zajść naraz, potrzebny jest operator &&.

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.