Funkcje w C++
1. Co to jest funkcja?
Funkcja to wydzielony fragment programu, który wykonuje określone zadanie. Pozwala podzielić program na mniejsze części, co ułatwia jego tworzenie, testowanie i czytanie.
Funkcje umożliwiają:
- unikanie powtarzania tego samego kodu,
- zwiększenie przejrzystości programu,
- łatwiejsze utrzymanie i rozwijanie projektu.
2. Budowa funkcji
Ogólna postać funkcji w C++:
- typ_zwracany – typ danych zwracanych przez funkcję (
int,double,voiditp.), - nazwa_funkcji – dowolna, zgodna z zasadami nazewnictwa w C++,
- lista_parametrów – dane wejściowe przekazywane do funkcji (może być pusta),
- ciało funkcji – zestaw instrukcji, które mają być wykonane po jej wywołaniu.
3. Deklaracja (prototyp) funkcji
Deklaracja informuje kompilator o istnieniu funkcji, jej typie zwracanym oraz parametrach, ale nie zawiera ciała.
Deklarację można umieścić nad funkcją main() lub w osobnym pliku nagłówkowym (.h).
Przykład:
4. Definicja funkcji
Definicja to pełna postać funkcji, która zawiera jej ciało – czyli instrukcje do wykonania.
Przykład:
5. Wywoływanie funkcji
Aby skorzystać z funkcji, należy wywołać ją po nazwie, przekazując odpowiednie argumenty.
Przykład:
6. Parametry funkcji
Funkcje mogą przyjmować parametry, czyli dane wejściowe. Sposób przekazywania parametrów wpływa na to, czy funkcja może zmienić oryginalne zmienne.
a) Przekazywanie przez wartość
Wartości argumentów są kopiowane do zmiennych funkcji. Zmiany w funkcji nie wpływają na oryginalne dane.
b) Przekazywanie przez referencję
Funkcja operuje na oryginalnych zmiennych, nie na ich kopiach.
Zmiana wartości parametru wewnątrz funkcji zmienia wartość zmiennej w main().
c) Przekazywanie przez wskaźnik
Do funkcji przekazywany jest adres zmiennej. Pozwala to również modyfikować jej wartość.
d) Parametry domyślne
Parametry mogą mieć przypisane wartości domyślne, używane, gdy argument nie zostanie podany.
7. Funkcje typu void
Funkcje, które nie zwracają żadnej wartości, mają typ void.
8. Funkcje w wielu plikach
W większych projektach funkcje dzieli się na różne pliki dla lepszej organizacji kodu:
- funkcje.h – zawiera deklaracje (prototypy),
- funkcje.cpp – zawiera definicje,
- main.cpp – korzysta z funkcji.
Przykład (uproszczony):
funkcje.h
funkcje.cpp
main.cpp
9. Różnica między funkcją a metodą
| Cecha | Funkcja | Metoda |
|---|---|---|
| Definicja | Niezależny fragment kodu | Funkcja zdefiniowana wewnątrz klasy |
| Sposób wywołania | Wywoływana samodzielnie | Wywoływana przez obiekt klasy |
| Dostęp do danych | Nie ma bezpośredniego dostępu do pól klasy | Ma dostęp do pól klasy przez wskaźnik this |
| Przykład | int dodaj(int a, int b) |
int Klasa::dodaj(int a, int b) |
Przykład:
10. Podsumowanie
| Element | Opis | Przykład |
|---|---|---|
| Deklaracja | Informuje kompilator o istnieniu funkcji | int suma(int, int); |
| Definicja | Zawiera ciało funkcji | int suma(int a, int b){ return a+b; } |
| Wywołanie | Użycie funkcji | suma(2,3); |
| Parametry | Dane wejściowe | int suma(int a, int b) |
| Zwracanie wartości | Wynik funkcji | return a + b; |