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 PHP

Słowa kluczowe: Funkcje w PHP Instrukcja warunkowa if/elseif/else w PHP Operatory porównania w PHP

function fun1($a, $b) { if ($a > $b) return $a; elseif ($b > $a) return $b; else return -1; } Który z komentarzy opisuje zadanie zdefiniowanej w...

function fun1($a, $b)
{
    if ($a > $b)
        return $a;
    elseif ($b > $a)
        return $b;
    else
        return -1;
}
Który z komentarzy opisuje zadanie zdefiniowanej w języku PHP funkcji?
A. /* Funkcja zwraca wartość wyższą z dwóch podanych, gdy są równe zwraca wartość $a */
Źle. Większa wartość się zgadza, ale przy równych liczbach wykonuje się else i zwracane jest -1.
B. /* Funkcja zwraca wartość wyższą z dwóch podanych, gdy są równe zwraca wartość -1 */
Dobrze. Każda gałąź zwraca większą z liczb, a przy równości wykonuje się else z wartością -1.
C. /* Funkcja zwraca wartość niższą z dwóch podanych, gdy są równe zwraca wartość $a */
Źle. Funkcja zwraca wartość większą, a przy równości -1, więc oba elementy tego opisu są błędne.
D. /* Funkcja zwraca wartość niższą z dwóch podanych, gdy są równe zwraca wartość -1 */
Źle. Przy $a > $b funkcja zwraca $a, czyli wartość większą, a nie mniejszą.

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

Wystarczy przejść funkcję gałąź po gałęzi. Gdy $a > $b, zwracana jest $a, czyli większa z dwóch liczb. Gdy $b > $a, zwracana jest $b, znowu większa. Gałąź else wykona się tylko wtedy, gdy żadna nie jest większa, czyli gdy są równe, i wtedy funkcja zwraca -1.

Sprawdzenie na liczbach: fun1(3, 7) daje 7, fun1(9, 2) daje 9, a fun1(5, 5) daje -1. Taką funkcję warto znać jako wzorzec: dwa porównania i osobna obsługa równości. Gdyby równość nie wymagała osobnej wartości, wystarczyłaby wbudowana funkcja max($a, $b).

Komentarz /* ... */ nad funkcją powinien mówić, co zwraca dla każdego przypadku.

Dwie błędne odpowiedzi myli kierunek porównania. Warunek $a > $b prowadzi do zwrócenia $a, więc wraca liczba większa, a nie mniejsza. Żeby funkcja zwracała niższą wartość, w gałęzi if trzeba by zwrócić $b.

Pozostałe pomyłki dotyczą przypadku równości. Kto widzi, że przy równych liczbach obojętne jest, którą zwrócić, łatwo zakłada, że funkcja zwróci $a. Kod mówi jednak co innego: przy równości oba warunki są fałszywe i wykonuje się else z return -1;. Komentarz ma opisywać to, co kod rzeczywiście robi.

Przy takich zadaniach podstaw trzy pary liczb: pierwsza większa, druga większa i obie równe. Wynik każdego przypadku od razu wskaże właściwy komentarz.

Zwróć też uwagę, że return kończy działanie funkcji. Po zwróceniu wartości w gałęzi if dalsze warunki nie są już sprawdzane.

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.