-
Notifications
You must be signed in to change notification settings - Fork 3
2. Przykładowe funkcje
Bardzo często, na etapie poznawania języka programowania, jego nauki - zadajemy podstawowe pytanie:
"Kiedy zachodzi potrzeba tworzenia funkcji? Skąd programista wie, że warto taką funkcję utworzyć?"
Pomyśl, że funkcja to taki "mały program" - podprogram, który możemy wielokrotnie używać (wykonywać kod, tym samym korzystać z funkcjonalności tego kodu - funkcji). Jeśli przewidujemy w naszym programie (aplikacji, serwisie, stronie internetowej, bazie danych, pozostałych obszarach związanych z programowaniem), że pewne "czynność" nasz program będzie wykonywał wielokrotnie - tworzymy funkcję.
Na przykład, jeśli w naszym programie wielokrotnie będziemy obliczali ładowność, bo piszemy program do zarządzania środkami transportu - wtedy tworzymy taką funkcję.
Poniżej przykłady funkcji wraz komentarzem.
Napisz funkcję, która zamieni wartość zmiennej (parametr funkcji), w taki sposób, że po jej wykonaniu zmienna jako argument funkcji będzie powiększona dwa razy. Przyjmij założenie, że operujemy na liczbach całkowitych.
Na pierwszy rzut oka wydaje się, że zadanie jest trudne. Mamy w jego treści sporą ilość nowych pojęć. Tłumacząc to zadanie na język "ludzki" moglibyśmy sformułować zadanie inaczej.
Utwórz "magiczną" skrzynką. Nadaje jej nazwę, która będzie odzwierciedlała to co ona robi oraz określ listę parametrów, które do niej "wchodzą". Do tej skrzynki "wchodzi" zmienna (argument), a wychodzi z niej dwa razy większa.
///
///Funckja podwaja wartość parametru
///
///@param value - wartość
///
void doubling(int & value);//Funckja podwaja wartość parametru
void doubling(int & value)
{
value = value * 2;
}W języku C/C++ przed nazwą funkcji musimy podać typ zwrotny. W powyższym przykładzie jest to typ void (ang. pusty, próżny). Należy to rozumieć, że nasza funkcja doubling nie zwraca żadnej wartości (zwraca nic (void)). Pewnie zastanawiasz się dlaczego w nawiasie, po prawej stronie funkcji, pomiędzy typem parametru int, a nazwą parametru value, jest znak
(ang. ampersand) - operator adresu).
Taki zapis informuje, że do funkcji "wchodzi" oryginał zmiennej (poprzez podanie referencji /przezwiska/ - adresu pamięci, pod którym zapisano wartość zmiennej.
Taki zapis spowoduje, że w ciele funkcji zawartej pomiędzy nawiasami klamrowymi, podwajamy oryginał zmiennej, czyli realizujemy założenia funkcjonalności, jaką nasza funkcja ma posiadać. Gdyby nie było operatora adresu &, pomimo tego, że mnożymy przez 2 wartość argumentu, po zakończeniu działania funkcji pozostałby on bez zmian. Czyli pracowaliśmy na kopii.
Pamiętaj - jeśli w deklaracji funkcji przed nazwą parametru napiszesz znak &, oznacza to, że pracujesz na oryginale. W przeciwnym wypadku pracujesz na kopii.
int liczba = 10;
doubling(liczba);//wywołanie funckji z argumentem o wartości 10
//po wykonaniu funkcji zmienna liczba będzie miała wartość 20Gdyby chcieć Utworzyć e języku Python funkcję o takiej samej funkcjonalności jak ta powyższa musielibyśmy podejść do tematu odrobinę inaczej. Zrealizujemy to w późniejszym czasie.
Pamiętaj, że języku Python nie ma typowania funkcji ani zmiennych.
Napisz funkcję w języku Python, która na podstawie dwóch parametrów zwróci ich średnią arytmetyczną.
"""
Funkcja zwraca średnią arytmetyczną
"""
def average(a, b):
#return ((a+b)/2)
return ((a + b) * 0.5)
passZwróć uwagę, że zamiast dzielenia wykorzystałem mnożenie przez odwrotność. Wiemy, że dzielenie, jako działanie arytmetyczne nie jest wykonalne jeśli dzielnik jest równy zero.