-
19.03.2012, 21:56 #1
- Registriert seit
- 15.11.2011
- Beiträge
- 6.210
- Blog Entries
- 5
Thanked 9.130 Times in 3.005 Posts[C++] Grundwissen II (Funktionen und Parameter)
Da demnächst mal wieder eine Arbeit ansteht, gibt's von mir mal wieder ein bisschen Bildung im Bereich C++ für Noobs
1. Funktionen
Funktionen setzt man meistens ein, um Codeausschnitte, die sich mehrfach wiederholen, zusammenzufassen, damit der selbe Code nicht 10x in einem Programm vorkommt => Wartungsaufwand und Fehleranfälligkeit wird verringert. Bei komplexeren Projekten nutzt man Funktionen im Zusammenhang in Klassen, um einzelne Komponenten besser zu gliedern und so das Projekt übersichtlich zu halten.
1.1 Allgemein
Eine Funktion ist wie folgt aufgebaut:
Code:void TuWas() { // Code }
Hier kann also Beispielsweise auch int oder float stehen.
void ist ein Sonderfall: void liefert einen leeren Rückgabewert, was keinem Rückgabewert entspricht.
Darauffolgend kommt der Name, dieser wird mit () beendet.
Zwischen den zwei geschweiften Klammern steht der Code, der die Funktion beinhaltet.
Ist der Datentyp nicht vom Typ void, liefert die Funktion einen Rückgabewert, d.H. ein Wert dieses Typs muss irgendwo in der Funktion mit return zurückgegeben werden:
PHP-Code:int Rechne()
{
int Summe = 2 + 2;
return Summe;
}
Wird die Funktion aufgerufen, rechnet sie 2+2 zusammen und liefert das Ergebnis zurück.
Verwendet wird die Funktion so:
PHP-Code:#include <iostream>
#include <conio>
using namespace std;
int Rechne()
{
int Summe = 2 + 2;
return Summe;
}
void main()
{
int Ergebnis = Rechne();
cout << "Das Ergebnis lautet: " << Ergebnis;
getch();
}
Funktionen vom Rückgabetyp void müssen natürlich auch so behandelt werden und dürfen natürlich nirgends wie eine Variable behandelt werden!
Das folgende Beispiel geht also gnadenlos schief:
PHP-Code:#include <iostream>
#include <conio>
using namespace std;
void TuWas()
{
// Code der Funktion
}
void main()
{
cout << TuWas();
getch();
}
PHP-Code:int i = TuWas();
Meiner Meinung nach ist das auch komplett sinnlos. Wenn man eine Funktion vom Typ void hat weiß man, dass sie keinen Rückgabewert liefert, und wo nichts ist kann auch nichts ausgegeben oder gespeichert werden.
Wollte ich nur mal gesagt haben, da den Fehler viele gemacht haben, wieso auch immer.
1.2 Parameter
Die Funktion Rechne aus dem obigen Beispiel macht effektiv natürlich wenig Sinn, man könnte in die Variable Ergebnis auch einfach die Summe aus 2+2 schreiben und hätte sich Arbeit gespart.
Dieses Beispiel soll auch nur das Funktionsprinzip zeigen. Sinnvoll wird das obige Beispiel erst, wenn Parameter mit ins Spiel kommen.
Parameter sind Variablen eines bestimmten Typs, die man einer Funktion beim aufruf übergeben kann. Die Parameter schreibt man in die () nach dem Funktionsnamen. Deklariert werden sie ähnlich wie normale Variablen:
PHP-Code:int Rechne(int x, int y)
{
int Summe = x + y;
return Summe;
}
In dem Fall soll sie beide Zahlen addieren und das Ergebnis zurückliefern.
Das obige Beispielprogramm sieht so verändert wie folgt aus:
PHP-Code:#include <iostream>
#include <conio>
using namespace std;
int Rechne(int x, int y)
{
int Summe = x + y;
return Summe;
}
void main()
{
int Ergebnis = Rechne(2, 4);
cout << "Das Ergebnis lautet: " << Ergebnis;
getch();
}
PHP-Code:int Ergebnis = Rechne(2, 4);
Die Funktion addiert also 2+4, sendet uns das Ergebnis zurück, und wir speichern es in der Variable Ergebnis.
Man muss beim Zurückgeben von Werten mittels return natürlich nicht zwingend eine Zwischenvariable angeben wie im Beispiel oben, man kann genau so gut auf die Zwischenvariable verzichten:
PHP-Code:int Rechne(int x, int y)
{
return x + y;
}
Wollte ich nur mal erwähnt haben, da Programmierer meistens sehr faul sind und daher keine unnötigen Zwischenvariablen anlegen wenn man sich die Arbeit auch sparen kann
Sollte natürlich nur eingesetzt werden wenn es sinnvoll ist. Gibt die Funktion das Ergebnis einer 10m langen Rechnung zurück die 20 Variablen beinhaltet wären ein paar Zwischenvariablen wohl doch nicht so schlecht, damit nicht 1000 Fehler entstehen und in 2 Wochen noch überhaupt jemand kapiert, was die Funktion eigentlich tut.
-
The Following 2 Users Say Thank You to DMW007 For This Useful Post:
Ähnliche Themen
-
[C++] Grundwissen I (Variablen, Schleifen, Abfragen, etc)
Von DMW007 im Forum C++Antworten: 5Letzter Beitrag: 05.01.2017, 09:31 -
Emulator Funktionen ?
Von Bossover im Forum SupportAntworten: 1Letzter Beitrag: 18.04.2012, 17:05 -
Knuddels Funktionen
Von helfen im Forum Knuddels AllgemeinAntworten: 3Letzter Beitrag: 10.04.2012, 13:16 -
[C++] Temperaturconverter (Funktionen/Referenzparameter)
Von DMW007 im Forum C++Antworten: 0Letzter Beitrag: 20.03.2012, 17:05 -
Android Emulator Fehlermeldung invalid command-line parameter
Von Essah im Forum AndroidAntworten: 1Letzter Beitrag: 20.02.2012, 18:50
Stichworte
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.