Unterprogramme bzw. Funktionen mit Eingabeparameter

Unterprogramme können Parameter haben. Sie dienen dazu, Werte an Funktionen durchzureichen. Diese Möglichkeit macht die Arbeit mit Funktionen um ein Vielfaches flexibler. Um aus der aufgerufenen Funktion auf die Werte des Aufrufers zuzugreifen, könnten man natürlich auch globale Variablen verwenden. Durch die Parameter wird aber offen dokumentiert, welche Informationen eine Funktion von außen bekommt. Man spricht auch von der Schnittstelle einer Funktion.

Die Parameterdefinition eines Unterprogramms gleicht einer Variablendefinition. Der Typ der Parameter ist wichtig, um zu prüfen, ob die Aufrufparameter mit den Parametern der Funktion auch kompatibel sind. Über die Parameternamen wird von innen aus der Funktion heraus auf die Parameter zugegriffen.

Beispiel

Im folgenden Beispiel wird das Programm „Summe“ um entsprechend verändert.

#include <iostream>
#include <conio.h>
 
using namespace std;
void berechnung(int n);
int sum;
 
void main()
{
  int zahl;
  cout <<"Dieses Programm summiert alle Zahlen von 1 bis n";
  cout <<"\n Zahl n: ";
  cin >> zahl;
  if (zahl>0) {
	berechnung(zahl);
	cout<<"\n Summe: " <<sum;
  }
  else{cout<<"Es wurde ein falscher Wert eingegeben";}
  getch();
} //Hauptprogramm
 
void berechnung(int n){
  sum=0;
  while(n>=0){
	sum=sum+n;
	n--;
  }
} //Berechnung

sum bleibt weiterhin eine globale Variable und wird daher vor main und berechnung vereinbart.

Der Datenaustausch zwischen dem Aufrufer und der Funktion sollte möglichst immer über Parameter erfolgen. Auch wenn es manchmal bequemer erscheint, eine globale Variable zu verwenden, sollten Sie dies nur in wohl begründeten Ausnahmesituationen tun. Der Zugriff von Funktionen auf globale Variablen nennt man Seiteneffekt. Dieser führt dazu, dass Zusammenhänge unübersichtlich werden. Darum sollten Sie ein solches Verhalten einer Funktion ausgiebig kommentieren.

Anmerkung zum Unterprogramm berechnung :

Der Eingangsparameter n wird wie eine lokale Variable behandelt, der zu Beginn des Unterprogramms ein Wert zugewiesen wird.

Aufgabe 1 - "Sterne"

Modifiziere das bereits erstellt Programm „Sterne“ so, dass der Benutzer festlegen kann, wie viele Sterne an beliebiger Stelle ausgegeben werden.

Aufgabe 2- "Gerade Zahl"

Schreibe ein Programm, welches mit Hilfe einer Funktion überprüft, ob die vom Benutzer eingegebene Zahl gerade ist.

#include <iostream>
#include <conio.h>
 
using namespace std;
 
void gerade(int zahl)
{
  if (zahl%2==0)
	 cout << "Ihre eingegebene Zahl ist gerade!\n";
  else
	 cout << "Ihre eingegebene Zahl ist ungerade!\n";
}
 
int main()
{
  int eingabe;
  cout<<"Dieses Programm ueberprueft, ob eine Zahl gerade ist oder nicht!\n";
  cout<<"Bitte geben Sie eine Zahl ein: ";
  cin>>eingabe;
  gerade(eingabe);
 
  getch();
  return 0;
}

Übungsaufgaben:


Aufgabe 3

Schreibe ein Programm, das den Umfang und die Fläche eines Kreises über zwei Funktionen mit Parametern ermittelt. (Kreisfunktionen.cpp)
(pi=3,1415927)
Alternative Variante für pi: #include <math.h> und dann M_PI verwenden.

Aufgabe 4

Schreibe ein Program (Drehkegel.cpp), das die Oberfläche eines Drehkegels ausgibt, wenn der Benutzer den Radius und die Höhe eingibt! Drehkegel

Die Berechnung der Oberfläche soll in einer eigenen Funktion erfolgen.

void oberflaeche(float r, float h){
....
}

Hinweis:

  1. $O = r^2\cdot \pi + r \cdot s \cdot \pi = r \cdot \pi \cdot (r+s)$ wobei $s$ die Längelinie ist $s = \sqrt{r^2+h^2} $
  2. Die Quadratwurzel wird mit der in der Mathematikbibliothek ( #include <math.h> ) enthaltenen Funktion sqrt() berechnet!