Back to Top

Czego nauczysz się po ćwiczeniu 5 - funkcje

  • w jaki sposób kilka razy użyć tego samego kodu

  • co to są funkcje

  • jak przekazać parametry i zwrócić wynik z funkcji

Link do ćwiczenia 5 - funkcje

Funkcje

Funkcja to wydzielony fragment kodu o zdefiniowanej nazwie, który może być używany w różnych momentach i miejscach programu. Funkcje można opisać jak rozwiązanie jakiegoś ogólnego problemu, przy czym dokładne informacje (zmienne) potrzebne do rozwiązania tego zadania będą podane dopiero w momencie użycia tej funkcji. Funkcję definiuje się raz, a później wywołuje się ją dowolną liczbę razy, w zależności od potrzeb i konieczności. W ten sposób można wykorzystać kilka razy ten sam, sprawdzony kod. Funkcja musi posiadać unikatową nazwę, co oznacza, że nie można nadać 2 funkcjom tych samych nazw.

Składnia funkcji wygląda następująco:

function nazwa ( ) {
	instrukcja1;
	instrukcja2;
	instrukcjaN;

	return zwracana_wartosc;
}

Deklaracja funkcji zaczyna się od słowa kluczowego function, potem wpisujemy nazwę funkcji. Nazwa ta powinna być w języku angielskim, gdyż tak się przyjęło wśród programistów. Pomiędzy nawiasami klamrowymi znajduje się ciało funkcji, czyli kod, który zostanie uruchomiony kiedy użyjemy tej funkcji. Kod ten składa się z dowolnej ilości instrukcji aż do momentu zakończenia ciała funkcji lub napotkania słowa kluczowego return. Słowo kluczowe return oznacza miejsce, w którym funkcja się kończy i zwraca wartość. Zwracaną wartość podaje się tuż po słowie return (po prawej stronie słówka kluczowego return). Przykładowa deklaracja funkcji, która zwraca wynik dodawania dwóch liczb wygląda następująco:

function sum(){
    return 5 + 5;
}

To jest tylko deklaracja, więc nie oznacza to jeszcze, że faktycznie ta funkcja zostanie uruchomiona. Uruchomienie funkcji, czyli tzw. wywołanie to miejsce, gdzie używamy wcześniej napisanej funkcji. W tym miejscu pojawi się jej wynik, który zwraca funkcja za pomocą return. Zdefiniowaną funkcję możemy wywołać w dowolnym miejscu skryptu przez podanie jej nazwy a następnie, w nawiasach okrągłych, jej parametry. W dowolnym miejscu skryptu oznacza, że możemy funkcję użyć w kodzie nad jej deklaracją ponieważ PHP poradzi sobie ze znalezieniem odpowiedniej funkcji będącej poniżej wywołania.

// Wywołanie funkcji sum() echo wyświetli zwracaną sumę
echo sum();

W dużym uproszczeniu można przyjąć, że w miejscu wywołania funkcji, czyli użycia jej nazwy z nawiasami okrągłymi zostanie podstawiona wartość będąca za słówkiem return.

Funkcja z argumentami

Funkcja może przyjmować argumenty, które wstawiane są w nawiasy okrągłe. Są to zmienne, które są potrzebne do prawidłowego działania funkcji i są dostarczane podczas jej uruchomienia (wywołania). Składnia wygląda podobnie jak poprzednio z tą różnicą, że w środku nawiasów okrągłych przyjmowane są argumenty.

function nazwa ( argument1, argument2,  /* ... */, argumentN ) {
	instrukcja1;
	instrukcja2;
	instrukcjaN;

	return zwracana_wartosc;
}

Funkcja może przyjmować dowolną liczbę argumentów ale w praktyce stosuje się niewielką ich ilość ze względu na czytelność. Jeśli do działania funkcji niezbędna jest większa liczba argumentów, wówczas rozważa się rozbicie jednej funkcji na dwie mniejsze. O samych argumentach musimy myśleć jak o zmiennych względem których będzie pracować funkcja. Pracuje się na nich jak na każdych innych zmiennych, z tym wyjątkiem że do chwili użycia funkcji nie znamy ich dokładnej wartości. Poza tym nie są one widoczne poza funkcją (nie możemy ich użyć). Jeśli nie podamy wartości argumentów jakie przyjmuje funkcja spowoduje to błąd.

// Deklaracja funkcji z argumentami

function sumArguments($arg1, $arg2){
    return $arg1 + $arg2;
}

/* Jeśli użyjesz argumentów $arg1 i $arg2 poza ciałem funkcji spowoduje to błąd gdyż można używać ich jedynie w środku funkcji */

echo $arg1;  - błąd nieznana zmienna $arg1 !

Zadanie 1

Napisz funkcję o nazwie getModulo(), która zwraca resztę z dzielenia dwóch liczb: 10 i 2.

Liczby te wstaw w ciało funkcji. Wywołaj następnie stworzoną funkcję, zapisując to co ona zwraca do zmiennej $result.

Wyświetl zmienną $result używając komendy var_dump(), czyli:

var_dump( getModule() );

Zadanie 2

Napisz funkcję o nazwie checkNumber( $arg ). Funkcja ma przyjmować jeden argument o nazwie $arg. Jej zadaniem będzie zwrócenie reszty z dzielenia wartości podanej w argumencie $arg przez 2 (analogicznie jak w poprzednim zadaniu tylko z wykorzystaniem argumentu). Wywołaj kilka razy funkcję, podając różne argumenty. Wynik wyświetl za pomocą komendy var_dump(). Jako dodatkowe zadanie, sprawdź co się stanie (jaka wartość zostanie wyświetlona przez var_dump) jeśli zastąpisz słowo kluczowe return komendą echo. Czy potrafisz powiedzieć co zwraca funkcja, jeśli nie ma słowa kluczowego return? Odpowiedź napisz w komentarzu.

Zadanie 3

Napisz funkcję max3($z1, $z2, $z3) zwracającą największą spośród trzech podanych liczb jako argumentów. Do rozwiązania zadania należy użyć instrukcji warunkowych i operatorów porównania. Na końcu należy zwrócić wartość największej z liczb (można ją zapisać w innej zmiennej np. $result i na końcu ją zwrócić używając słowa kluczowego return).

Przetestuj działanie funkcji, wywołując ją na różnych argumentach.