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: Funkcje użytkownika w PHP Instrukcja return w PHP Operatory arytmetyczne w PHP

Która ze zdefiniowanych funkcji w języku PHP jako wynik zwraca połowę kwadratu wartości przekazanej?

A.
function licz($a) { echo $a*$a/2; }
B.
function licz($a) { echo $a/2; }
C.
function licz($a) { return $a*$a/2; }
D.
function licz($a) { return $a/2; }

Pytanie z egzaminu CKE, czerwiec 2015 (arkusz E.14-X-15.05).

Poprawna funkcja to ta, która wykonuje działanie $a * $a / 2 i używa instrukcji return. Matematycznie chodzi o połowę kwadratu przekazanej wartości, czyli $\frac{a^2}{2}$. W PHP zapis $a*$a/2 jest poprawny, bo mnożenie i dzielenie mają ten sam priorytet i są wykonywane od lewej do prawej, więc najpierw powstaje kwadrat liczby, a potem wynik jest dzielony przez 2. Bardzo ważne jest też słowo return. Ono sprawia, że funkcja faktycznie zwraca wartość do miejsca, z którego została wywołana, np. można zrobić $wynik = licz(6); i dalej używać tej wartości w obliczeniach, zapisie do bazy albo w warunku. Z mojego doświadczenia to jest jedna z tych różnic, które na początku łatwo pomylić: echo coś wyświetla, a return oddaje wynik programu. W dobrym kodzie branżowym zwykle oddziela się logikę obliczeniową od prezentacji, więc funkcja licząca powinna zwracać wynik, a nie od razu wypisywać go na stronie. Jeszcze czytelniej byłoby zapisać return ($a * $a) / 2;, bo nawiasy od razu pokazują intencję programisty.
W tym pytaniu łatwo wpaść w pułapkę, bo część zapisów wygląda podobnie i nawet może coś pokazać na ekranie. Kluczowe są jednak dwa warunki naraz: funkcja ma obliczyć połowę kwadratu wartości oraz ma ten wynik zwrócić. Samo wyświetlenie wyniku przez echo nie jest tym samym co zwrócenie wartości przez return. echo wysyła tekst do przeglądarki lub do strumienia wyjściowego, ale nie daje wartości, którą można przypisać do zmiennej i wykorzystać dalej. Funkcja bez return w praktyce zwraca null, nawet jeśli na ekranie pojawi się poprawnie wyglądająca liczba. To jest dość typowy błąd w PHP, zwłaszcza przy pisaniu prostych skryptów do stron WWW. Druga pomyłka dotyczy samego wzoru. Zapis $a/2 oznacza tylko połowę przekazanej liczby, a nie połowę jej kwadratu. Dla przykładu przy wartości 8 połowa liczby to 4, ale połowa kwadratu to 8 * 8 / 2 = 32. Różnica jest więc konkretna, nie kosmetyczna. Dobra praktyka polega na tym, żeby funkcje obliczeniowe były możliwie czyste: przyjmują argument, wykonują obliczenie i zwracają wynik. Dopiero później inny fragment kodu decyduje, czy wynik wyświetlić, zapisać w sesji, przekazać do szablonu czy użyć w kolejnym algorytmie. Moim zdaniem takie rozdzielenie bardzo pomaga, bo kod staje się łatwiejszy do testowania i mniej się miesza warstwa logiki z warstwą prezentacji.

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.