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

Funkcja zapisana w języku PHP ma postać:

function fun1($liczba)
{
    if($liczba % 2 == 0)
        return 1;

    return 0;
}
Jej zadaniem jest
A. zwrócenie wartości 1, gdy liczba jest parzysta.
B. wypisanie liczby parzystej.
C. zwrócenie wartości 0, gdy liczba jest parzysta.
D. wypisanie liczby nieparzystej.

Pytanie z egzaminu CKE, wrzesień 2015 (arkusz E.14-X-15.08).

Ta funkcja faktycznie zwraca wartość 1 wtedy, gdy przekazana liczba jest parzysta. Kluczowy jest tutaj operator modulo %, który oblicza resztę z dzielenia. Warunek $liczba % 2 == 0 oznacza: sprawdź, czy reszta z dzielenia zmiennej $liczba przez 2 wynosi 0. Jeśli tak, liczba dzieli się przez 2 bez reszty, czyli jest parzysta, a instrukcja return 1 natychmiast kończy działanie funkcji i oddaje wynik do miejsca, z którego funkcję wywołano. Jeżeli warunek nie zostanie spełniony, program przechodzi dalej i wykonuje return 0, czyli dla liczby nieparzystej zwraca 0. W praktyce taką funkcję można użyć np. przy filtrowaniu rekordów, sprawdzaniu numerów wierszy tabeli albo nadawaniu innego stylu parzystym elementom listy. Moim zdaniem warto tu też zapamiętać różnicę między zwracaniem a wypisywaniem. return nie pokazuje nic na ekranie, tylko przekazuje wartość dalej. W dobrym kodzie PHP często napisałoby się to bardziej czytelnie jako funkcję zwracającą bool, np. true dla parzystej liczby, albo z deklaracją typów: fun1(int $liczba): int. Jeszcze lepiej użyć porównania ścisłego ===, bo w PHP ogranicza ono niechciane konwersje typów, co w większych projektach serio ma znaczenie.
W tej funkcji łatwo pomylić dwie rzeczy: wykonanie obliczenia i pokazanie wyniku użytkownikowi. Kod nie zawiera instrukcji echo, print ani żadnego mechanizmu generowania tekstu w przeglądarce, więc nie wypisuje ani liczby parzystej, ani liczby nieparzystej. Instrukcja return działa inaczej. Ona kończy funkcję i przekazuje określoną wartość do kodu, który tę funkcję wywołał. Jeżeli ktoś myśli, że return automatycznie coś wyświetla, to jest to dość typowy błąd na początku nauki PHP, bo efekt działania funkcji nie zawsze od razu widać na ekranie.

Warunek $liczba % 2 == 0 sprawdza resztę z dzielenia przez 2. Gdy reszta wynosi 0, liczba jest parzysta, na przykład 8 % 2 daje 0. Wtedy wykonywane jest return 1. Dla liczby nieparzystej, np. 7, reszta z dzielenia przez 2 wynosi 1, więc warunek jest fałszywy i dopiero wtedy funkcja dochodzi do return 0. Dlatego stwierdzenie, że funkcja zwraca 0 dla liczby parzystej, odwraca sens działania kodu. Warto też zauważyć, że nazwa fun1 nic nie mówi o przeznaczeniu funkcji, co w praktyce nie jest dobrą praktyką. Lepsza byłaby nazwa typu czyParzysta, bo wtedy kod czyta się prawie jak zdanie. Z mojego doświadczenia takie drobne nazwy bardzo pomagają, szczególnie gdy projekt rośnie i po tygodniu już nie pamięta się, co autor miał na myśli.

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.