![]() |
![]() ![]() ![]() ![]()
Autor artykułu: mgr Jerzy Wałaszek, wersja 1.0 |
©2008 mgr
Jerzy Wałaszek |
Funkcja jest samodzielnym fragmentem programu, który można wielokrotnie wykorzystywać. Dotychczas zapoznaliśmy się z funkcją main(), od której rozpoczyna się wykonanie programu w języku C++. Zanim rozpoczniemy korzystanie z funkcji, musimy ją zdefiniować. Ponieważ kompilator języka C++ analizuje treść programu od pierwszego wiersza kolejno do ostatniego, definicja funkcji musi wystąpić przed jej pierwszym użyciem w programie - tak samo jest ze zmiennymi. Chodzi tutaj o to, aby kompilator wiedział, co ma zrobić z napotkanym symbolem.
Definicja funkcji ma następującą składnię:
typ_wyniku nazwa_funkcji(lista_parametrów)
{
treść funkcji
}
typ_wyniku:
Funkcje wykorzystujemy często do wykonania powtarzających się obliczeń. W takim przypadku funkcja może zwrócić wyliczoną wartość za pomocą polecenia:
return wyrażenie;
Polecenie to kończy wykonywanie kodu funkcji i zwraca jako jej wynik wartość wyrażenia. W definicji funkcji określamy typ zwracanej wartości (np. int, unsigned, char itp.)
Jeśli funkcja nie zwraca żadnej wartości, to przyjmuje typ void.
nazwa_funkcji:
Każdy obiekt w języku C++ posiada określoną nazwę, poprzez którą odwołujemy się do niego w programie. Również definiowane przez nas funkcje muszą posiadać nazwy. Nazwę funkcji tworzymy wg tych samych zasad co nazwy zmiennych:
Mogą zawierać jedynie litery duże i małe, cyfry i znaki podkreślenia. Pierwszym znakiem nazwy musi być litera lub podkreślenie. Litery duże i małe są w nazwach funkcji rozróżniane. Nazwy funkcji powinny odzwierciedlać wykonywane przez nie zadania - wtedy stosowanie ich w programie będzie bardziej zrozumiałe.
lista_parametrów:
Często funkcja wymaga podania danych, na których mają być przeprowadzone obliczenia lub inne operacje. Dane do funkcji przekazujemy poprzez listę parametrów, która posiada następującą budowę:
typ nazwa_parametru1, typ nazwa_parametru2, ...
Chociaż jest to bardzo podobne do deklaracji zmiennej, parametrów nie należy mylić ze zwykłymi zmiennymi. W parametrach funkcja otrzymuje dane z programu, który ją wywołał. Parametru zatem nie musimy inicjować przed pierwszym użyciem - nawet jest to niewskazane, ponieważ inicjalizacja zniszczyłaby dane przekazywane przez ten parametr.
Lista parametrów może być pusta, gdy funkcja nie potrzebuje do swojej pracy żadnych danych od programu głównego.
Przykład:
int Suma(int a,int b)
{
return a + b;
}
Powyższa funkcja zwraca jako wynik sumę swoich argumentów.
unsigned suma_n(unsigned n)
{
unsigned s = 0;
for(unsigned i = 1; i <= n; i++) s += i;
return n;
}
Funkcja suma_n() oblicza sumę n kolejnych liczb naturalnych. Wartość n jest przekazywana do funkcji w parametrze n.
Gdy funkcja zostanie raz zdefiniowana, można ją wielokrotnie wywoływać w programie poprzez jej nazwę. Na przykład, wywołanie powyższych dwóch funkcji może być następujące:
cout << Suma(a,5) * Suma(c,d) << endl; // równoważne
cout << (a + 5) * (c + d) << endl;
cout << suma_n(6) + 5 << endl;
// równoważne cout << 1+2+3+4+5+6+5 << endl;
Parametr przekazywany do funkcji sam może być wyrażeniem. W takim przypadku komputer wylicza wartość wyrażenia i do funkcji w parametrze przekazywana jest wartość wyrażenia:
cout << suma_n(suma_n(3) * 2) << endl; // co wyświetli się w oknie konsoli?
Program w języku C++:
// Skracanie ułamków //(C)2008 I-LO w Tarnowie //----------------------- #include <iostream> using namespace std; // Funkcja oblicza NWD //-------------------- unsigned NWD(unsigned a, unsigned b) { unsigned x; do { x = b; b = a % b; a = x; } while(b); return a; // zwracamy wynik i kończymy funkcję } main() { unsigned l,m,nwd; cout << "Skracanie ulamka\n" "----------------\n\n"; cout << "licznik = "; cin >> l; cout << "mianownik = "; cin >> m; cout << endl; nwd = NWD(l,m); // wykorzystujemy funkcję cout << l << "/" << m << " = " << l / nwd << "/" << m / nwd << endl << endl; system("pause"); } |
Skracanie ulamka ---------------- licznik = 125 mianownik = 255 125/255 = 25/51 Aby kontynuować, naciśnij dowolny klawisz . . . |
![]() | I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe