Zusammenfassung zu Funktionen
In dieser Lektion hast du gelernt:
- Eine Funktion ist ein benanntes Stück Code, das du einmal schreibst und so oft ausführen kannst, wie du willst. Änderst du eine Funktion, gilt die Änderung überall, wo sie verwendet wird.
- Du definierst eine Funktion mit einem Rückgabetyp, einem Namen, runden Klammern mit Parametern und einem Rumpf in geschweiften Klammern:
void gibFlaecheAus(int breite, int hoehe) { ... }. Eine Definition allein führt nichts aus. - Du rufst eine Funktion mit ihrem Namen, runden Klammern und einem Semikolon auf:
gibFlaecheAus(5, 6);. Ein Programm beginnt in der Funktionmain, und von dort aus rufst du andere Funktionen auf. Eine Funktion muss über der Stelle definiert sein, an der du sie aufrufst, sonst bekommst du den Fehleruse of undeclared identifier. - Ein Parameter ist eine Variable in der Definition, ein Argument ist ein Wert im Aufruf. Die Argumente gehen der Reihe nach in die Parameter, und ihre Anzahl und Typen müssen zu den Parametern passen. Ein Parameter kann einen Standardwert haben, aber nur am Ende:
void gibPreisAus(int preis, std::string waehrung = "EUR"). returngibt einen Wert an die Stelle des Aufrufs zurück, du kannst den Aufruf also wie einen Wert verwenden:int gesamt = addiere(2, 3) * 2;. Der Typ des zurückgegebenen Werts steht vor dem Namen der Funktion.voidbedeutet, dass die Funktion nichts zurückgibt.std::coutzeigt einen Wert nur an; das Programm kann mit ihm nicht arbeiten. Eine Funktion, die etwas berechnet, sollte das Ergebnis zurückgeben. Eine Zahl wandelst du mitstd::to_string()in Text um.returnbeendet die Funktion sofort, und der Rest der Funktion wird nicht ausgeführt. Eine Funktion, die nichtvoidist, muss immer einen Wert zurückgeben, sonst bricht das Programm mit einem Fehler ab. Die Funktionmaingibt einenintzurück, undreturn 0;an ihrem Ende bedeutet, dass das Programm ohne Fehler beendet wurde.- Variablen, die in einer Funktion erstellt werden, und ihre Parameter sind lokal: Sie existieren nur innerhalb dieser Funktion, und das gilt auch für
main. Werte gehen über die Parameter in eine Funktion hinein und kommen mitreturnheraus. - Ein Parameter bekommt eine Kopie des Arguments, auch wenn es ein Vektor ist. Ändert die Funktion den Parameter, bleibt die Variable, die
mainihr übergeben hat, gleich.
In der nächsten Lektion, Referenzen und Zeiger, lernst du, wie eine Funktion eine Variable ändern kann, die der aufrufende Code ihr übergeben hat, und was Adressen im Speicher sind. Danach wartet ein Abschlussprojekt auf dich, in dem du alles zusammenfügst, was du im Kurs gelernt hast.
So schreibst du es:
Anweisungen
- 1
Üben wir. Schreibe über
maineine FunktionwarenkorbSummemit zwei Parametern:preisevom Typstd::vector<int>undrabattvom Typintmit dem Standardwert0. Die Funktion gibt die Summe der Preise minus den Rabatt zurück. Gib inmainunter dem VektorwarenkorbwarenkorbSumme(warenkorb)undwarenkorbSumme(warenkorb, 50)aus, jedes in einer eigenen Zeile. Das Programm gibt280und230aus. - 2
Schreibe eine Funktion
preisTextmit einem Parameterpreisvom Typint, die den Preis als Text zurückgibt: Für0gibt sie"gratis"zurück, sonst den Preis mit der Währung, zum Beispiel"230 EUR"für230. Füge am Ende vonmain, vorreturn 0;, diese Zeile hinzu:std::cout << "Zu zahlen: " << preisText(warenkorbSumme(warenkorb, 50)) << std::endl;Das Programm ruft zuerst
warenkorbSummeauf und übergibt den Wert, den es zurückgibt, anpreisText. Füge darunter dieselbe Zeile für einen Kunden mit einem Geschenkgutschein hinzu, dessen Rabatt280beträgt. Das Programm gibt aus:Zu zahlen: 230 EUR Zu zahlen: gratis