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

Która z wymienionych funkcji zapisanych językiem PHP zwraca podwojoną różnicę a i b?

A.
function licz($a, $b) { return ($a - $b)/2; }
B.
function licz($a, $b) { return 2*$a - $b; }
C.
function licz($a, $b) { return 2*($a - $b); }
D.
function licz($a, $b) { return $a - 2*$b; }
Wybrana funkcja realizuje dokładnie to, o co pyta treść zadania: najpierw oblicza różnicę wartości a i b, a dopiero potem mnoży wynik przez 2. Kluczowe są tutaj nawiasy w wyrażeniu 2 * (a - b). W PHP, tak samo jak w większości języków programowania, nawiasy mają najwyższy priorytet, więc wymuszają kolejność działań. Najpierw wykonywane jest odejmowanie a - b, a później mnożenie przez 2. Czyli dla przykładu, jeśli a = 10 i b = 4, funkcja zwróci 2 * (10 - 4) = 12. Bez nawiasów wynik mógłby być zupełnie inny, bo mnożenie ma wyższy priorytet niż odejmowanie. Moim zdaniem to jest bardzo ważny nawyk w programowaniu: jeśli zależy nam na konkretnej kolejności obliczeń, warto używać nawiasów nawet wtedy, gdy wydaje się, że „wiadomo o co chodzi”. Kod jest wtedy czytelniejszy, mniej podatny na błędy i łatwiejszy do utrzymania. W praktyce takie funkcje mogą być używane np. przy obliczaniu różnic cen, punktów, odległości albo korekt wartości, gdzie najpierw liczy się zmianę, a potem skaluje wynik.
W tym zadaniu łatwo pomylić samo występowanie odejmowania i mnożenia z właściwą kolejnością działań. Funkcja ma zwracać podwojoną różnicę a i b, czyli najpierw trzeba policzyć a - b, a dopiero później pomnożyć całość przez 2. Jeżeli w zapisie brakuje nawiasów i pojawia się wyrażenie w stylu 2 * a - b, PHP zgodnie z priorytetem operatorów wykona najpierw mnożenie, a potem odejmowanie. To daje wynik równoważny „podwój a, a następnie odejmij b”, a nie „podwój różnicę”. Dla a = 10 i b = 4 byłoby to 20 - 4 = 16, zamiast oczekiwanych 12. Inny częsty błąd to zamiana mnożenia na dzielenie, czyli obliczenie połowy różnicy. Taki zapis odpowiada sytuacji odwrotnej do wymaganej, bo zmniejsza wynik dwukrotnie, zamiast go zwiększać. Jeszcze inna pułapka polega na podwojeniu tylko drugiego składnika, czyli zapisaniu a - 2 * b. Wtedy program odejmuje od a podwojoną wartość b, co matematycznie oznacza całkiem inne wyrażenie. Z mojego doświadczenia najwięcej pomyłek bierze się stąd, że ktoś czyta kod „na oko” i nie sprawdza priorytetów operatorów. W dobrym stylu programowania, szczególnie w PHP, nawiasy stosuje się nie tylko dla komputera, ale też dla człowieka, który potem ten kod czyta i musi szybko zrozumieć intencję autora.

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.