Funkcje w języku C++

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   
im. Kazimierza Brodzińskiego
w Tarnowie

©2023 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.

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