Informatik :: C++ :: Funktionen

Funktionen

[Allgemeines] [Deklaration] [Aufruf] [Rekursive Funktionen] [Aufgaben]

Allgemeines

In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. Oft benötigter Code kann in Funktionen zusammengefasst werden und über den Namen der Funktion nach Bedarf aufgerufen werden.

Funktionen können einen oder mehrere Aufrufparameter haben und liefern nach ihrem Ende i.d.R. einen Funktionswert zurück.

In C++ gibt es bereits eine Vielzahl von implementierten Funktionen.
So z.B. sqrt(zahl), pow(zahl,exponent), getchar(), system("pause")

Wir wollen uns anschauen, wie man eine benutzerdefinierte Funktion erstellt.


Seitenanfang

Deklaration

Bevor man eine Funktion verwenden, sprich: aufrufen kann, muss man sie deklarieren.

Syntax

Datentyp Funktionsname (Datentyp p1, Datentyp p2, ...)
{
  Anweisung(en);
  return Rückgabewert;
}

Hinweise:

Beispiel:

float monatszins (float K, float p)
{
  float jahreszins;
  jahreszins = K * p / 100;
  return jahreszins / 12;
}

oder kürzer:

float monatszins (float K, float p)
{
  return K * p / 100 / 12;
}

Erklärung:
Die Funktion monatszins bekommt bei einem Aufruf einen Wert für K und einen Wert für p übergeben.
K und p sind Parameter. Sie müssen auch deklariert werden!!!
Die Funktion berechnet die Zinsen für einen Monat und gibt diesen Wert der aufrufenden Stelle zurück.

Seitenanfang

Aufruf

Der Vorteil von Funktionen ist, dass man sie an beliebiger Stelle im Programm (also innerhalb der main()-Pozedur verwenden kann.

Beispiel:

int main()
{
  float kapital, zinssatz;
  cout << "Bitte geben Sie das Kapital ein! ";
  cin >> kapital;
  cout << "Bitte geben Sie den Zinssatz ein! ";
  cin >> zinssatz;
  cout << "Der Monatliche Zins beträgt " << monatszins(kapital, zinssatz);
}

Erklärung:
Nach Eingabe von Kapital und Zinssatz erfogt sofort die Ausgabe.
Innerhalb dieser wird die Funktion monatszins mit den Werten von kapital und zinssatz aufgerufen.
Diese oben deklarierte Funktion monatszinssatz gibt dem Ausgabestream den von der Funktion berechneten Wert zurück, der dann mit dem Text ausgegeben wird.

Seitenanfang

Rekursive Funktionen

Rein intuitiv programmiert man immer iterativ. Die Iteration (v. lat. iterare "wiederholen") ist in der Mathematik eine Methode, sich der Lösung eines Rechenproblems schrittweise, aber zielgerichtet anzunähern. Sie besteht in der wiederholten Anwendung desselben Rechenverfahrens.
In der Informatik bedeutet Iteration, wenn ein Zugriff schrittweise, beziehungsweise wiederholt, auf Datenstrukturen erfolgt, beispielsweise bei einer FOR-Schleife.

Als Rekursion (lat. recurrere "zurücklaufen") bezeichnet man die Technik in Mathematik, Logik und Informatik, eine Funktion durch sich selbst zu definieren (rekursive Definition).

Jeder Aufruf der rekursiven Funktion muss sich durch Entfalten der rekursiven Definition in endlich vielen Schritten auflösen lassen. Umgangssprachlich sagt man, sie darf nicht in eine Endlosschleife geraten.

Beispiel:

Die Funktion sum(n) soll zu jeder Zahl n die Summe der ersten n natürlichen Zahlen berechnen. Sie ist iterativ folgendermaßen definiert:
Rekursive Funktion:

int sum(int n)
{
  int summe;
  if (n == 0) summe = 0;   //Rekursionsanfang
  else summe = sum(n-1) + n;   //Rekursionsschritt
  return summe;
}

Iterative Funktion:

int sum(int n)
{
  int summe;
  summe = 0;
  for (int i=1; i<=n; i++) summe = summe + i;
  return summe;
}

Rein mathematische Funktion mit Hilfe der Gaußschen Summenformel:

int sum(int n)
{
  return n * (n + 1) / 2;
}


Seitenanfang

Aufgaben