![]() |
![]() |
C++ - Funktionen nutzen (4) |
G.Eichelsdörfer - Staatliche Technikerschule Weilburg |
Antwort:
Mit einem Funktionsresultat muss man garnichts tun, man kann damit etwas tun.
Sie dürfen also ein Funktionsresultat auch ignorieren, was mitunter allerdings keinen Sinn ergibt.
Was sollte etwa der folgende Aufruf bewirken? (retorische Frage, nicht beantworten)
sin(x);
Hiermit wird ein Sinuswert berechnet, der nicht weiter verarbeitet wird.
Es gibt verschiedene Möglichkeiten, ein Funktionsresultat zu verwenden.
Einer Variablen zuweisen, um den Wert im weiteren Ablauf verarbeiten zu können.
Beispiel: y = sin(x);
Einfach nur ausgeben.
Beispiel: cout << sin(x);
In einem Ausdruck einsetzen.
Beispiele:
y = Amplitude * sin(Omega * t);
Der Funktionswert von sin()
wird mit dem Amplitudenwert multipliziert.
if(gueltig(Eingabe)) ...
Die Funktion gueltig()
liefert einen Wahrheitswert, der in der
bedingten Anweisung verwendet wird.
Es gibt eine mathematische Funktion mit folgendem Prototyp:
double pow(double x, double y);
pow kommt von power. Diese Funktion liefert das Resultat von xy.
Schreiben Sie ein kleines Testprogramm, welches die Werte für die Basis und den Exponenten einliest
und das Resultat von BasisExponent ausgibt!
Arbeitsbereich: funktionen1, Projekt: potenzieren, cmath includen
Betrachten wir einmal den folgenden von mir konstruierten Prototyp:
int search(char c, std::string str, int Anfang = 0);
Dem dritten Parameter wird der Wert 0 zugewiesen. Im Prototyp - was soll das denn?
Die Funktion search()
soll das als ersten Parameter importierte Zeichen (Typ char) im als
zweiten übergebenen Parameter str (Klasse std::string) suchen. Sie soll die Position des ersten gefundenen Zeichens
als Resultat liefern. Anfang legt fest, ab welchem Index gesucht werden soll.
Aufrufbeispiel:
std::string Text = "Wieviele e gibt es hier?";
cout << search('e',Text);
In diesem Aufruf von search()
wird kein dritter Parameter übergeben.
Dafür importiert die Funktion den Wert 0, der den Anfang des Strings repräsentiert.
Hier sollte der Wert 2 ausgegeben werden. Überprüfen Sie das!
Es ist jedoch nicht immer sinnvoll, das Suchen am Anfang beginnen zu lassen, weil dann immer nur das erste Vorkommen des Zeichens gefunden werden kann. Also soll der Aufrufer die Anfangsposition beim Suchen (per dritten Parameter) festlegen können, aber nicht müssen.
Der Wert für den dritten Parameter (hier 0) ist der voreingestellte Wert (default value). Dieser Wert wird für den Fall eingesetzt, dass der dritte Parameter beim Aufruf der Funktion nicht angegeben wird. Dieser Parameter muss nicht übergeben werden, im Gegensatz zu den anderen beiden. Dann wird dafür der Defaultwert genommen. Der dritte Parameter ist hier also optional. Optionale Parameter müssen immer an den letzten Stellen stehen.int search(char c, int Anfang = 0, std::string str); // Fehler!!!
In Wirklichkeit wird auch ein optionaler Parameter auf dem Stapel übergeben. Dies steht nur nicht im Quelltext. Der Compiler lässt dann den Defaultwert statt des Parameters auf den Stapel legen.