Funktionen return



  • Larryboy schrieb:

    mgaeckler schrieb:

    Hinter dem Schlüsselwort return gibst Du den Wert an, den Deine Funktion zurückliefern soll.

    mfg Martin
    P.S.: Ich glaube nicht, daß dieses Forum geeignet ist, ein Lehrbuch zu ersetzen.

    Aber welchen Wert soll man da zurückliefern ?

    Woher sollen wir das wissen? Das hängt doch davon ab, was der Aufrufer erwartet. Kauf Dir lieber ein Buch.

    mfg Martin



  • Larryboy schrieb:

    Aber welchen Wert soll man da zurückliefern ?

    Ich glaube, du hast Funktionen im Allgemeinen nicht verstanden. Das hat mit C++ wenig zu tun.



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Arcoth schrieb:

    Larryboy schrieb:

    Aber welchen Wert soll man da zurückliefern ?

    Ich glaube, du hast Funktionen im Allgemeinen nicht verstanden. Das hat mit C++ wenig zu tun.

    Erklärung für Dummies:
    - Funktionen sind ausgelagerter Code einer Anwendung
    - Funktionen können im Anwendungscode beliebig oft verwendet werden
    - Funktionen sollen irgendetwas tun
    - Funktionen haben die Syntax Rückgabewert Funktionsname(Parameter)
    - Funktionen müssen wie vereinbart aufgerufen werden
    - Den Rückgabewert und dessen Typ bestimmt allein der Programmentwickler
    - Falls keine Rückgabe gebraucht, wird als Rückgabewert nichts (void) verwendet
    und innerhalb der Funktion nur return eingesetzt.

    Wenn du dies nicht verstanden hast, kommst du um ein Einsteigerbuch nicht herum.



  • berniebutt schrieb:

    - Falls keine Rückgabe gebraucht, wird als Rückgabewert nichts (void) verwendet
    und innerhalb der Funktion nur return eingesetzt.

    Eine void Funktion hat kein return, sondern nichts.
    Die endet einfach mit der geschleiften Klammer.



  • Mit Funktionen lagert du einen bestimmen Abschnitt deines Programms so ab, dass diese Abschnitt immer wieder durch einen einzelne Namen, den Funktionsnamen, aufgerufen werden kann. Dieser Funktion kannst, aber musst es nicht, Parameter übergeben und auch einen zurückgeben lassen. Diesen Rückgabelparameter kannst du dann z.B. in einer Variablen speichern, oder gleich als Parameter für eine andere Funktion verwenden.

    Funktionen kann man einsetzen, wenn man mehr Übersicht haben will, oder wenn man einen Programmabschnitt immer und immer wieder nutzen möchte. aber nicht jedes mal den Code duplizieren mag. Das Duplizieren ist dabei nicht mal das Schlimmste, denn was machst du, wenn du was an diesem Abschnitt ändern willst? Dann müsstest du alle Duplikate abändern und da schleichen sich schnell viele unnötige Fehler ein.

    Zusätzlich kann du eigenen Datentypen in C++ erschaffen und sollen diese nicht nur Daten enthalten, sondern auch Funktionalität, so nimmt man auch hier Funktionen, die man dann aber Methoden nennt. Diese teilweise Doppelbenennung von Begriffen hat mich oft in den Wahnsinn am Anfang getrieben.

    Ich hoffe, ich habe das halbwegs einfach erklärt und nicht so viele Fehler gemacht.



  • Korrektorutus schrieb:

    berniebutt schrieb:

    - Falls keine Rückgabe gebraucht, wird als Rückgabewert nichts (void) verwendet
    und innerhalb der Funktion nur return eingesetzt.

    Eine void Funktion hat kein return, sondern nichts.
    Die endet einfach mit der geschleiften Klammer.

    Wie kommst Du auf so einen Unfug?

    Das ist falsch. Natürlich kann auch eine void-funktion ein oder mehrere returns enthalten.

    mfg Martin



  • Eine Funktion mit Rückgabetyp void nennt man auch Prozedur.



  • nutzlose info schrieb:

    Eine Funktion mit Rückgabetyp void nennt man auch Prozedur.

    Den Begriff habe ich bei C++ in keiner meiner Fachliteratur finden können, weder in "Einführung in die Programmierung mit C++" noch in "C++ Die Programmiersprache".


  • Mod

    nutzlose info schrieb:

    Eine Funktion mit Rückgabetyp void nennt man auch Prozedur.

    Wenn man Pascal oder Basic programmiert.



  • Wirst du auch nicht, weil das kein C++-Begriff ist. Das ändert nichts daran, dass man es manchmal auch so nennt. Wahrscheinlich findest du in einem korrekten C++-Buch auch nicht den Begriff Methode (ok doch, 1 Treffer bei Stroustrup: "A virtual member function is sometimes called a method."), trotzdem sind wir uns hoffentlich einig, dass der existiert und wissen auch, was er bedeuten soll?

    Um die Verwirrung komplett zu machen, manche sprechen auch generell von Prozeduren, egal ob es einen Rückgabewert gibt oder nicht.



  • Naja, eine void-Funktion ist mathematisch inkorrekte Terminologie.

    In der Mathematik ist eine Funktion oder Abbildung eine Beziehung (Relation) zwischen zwei Mengen, die jedem Element der einen Menge (Funktionsargument, unabhängige Variable, x-Wert) genau ein Element der anderen Menge (Funktionswert, abhängige Variable, y-Wert) zuordnet.

    In der Praxis kann man das natürlich machen wie man will.


  • Mod

    Dies ist aber keine Mathematik.



  • Ethon schrieb:

    Naja, eine void-Funktion ist mathematisch inkorrekte Terminologie.

    In der Mathematik ist eine Funktion oder Abbildung eine Beziehung (Relation) zwischen zwei Mengen, die jedem Element der einen Menge (Funktionsargument, unabhängige Variable, x-Wert) genau ein Element der anderen Menge (Funktionswert, abhängige Variable, y-Wert) zuordnet.

    Wenn du void als Menge mit einem Element ansiehst, verschwindet der Widerspruch.



  • @Ethon
    Der mathematische Begriff ist i.A. nicht auf die Programmierung anwendbar, da Funktionen in der Mathematik z.B. nie Nebeneffekte haben. In der Programmierung allerdings sehr oft.
    "Funktion" in der Mathematik und "Funktion" in der Programmierung sind zwei unterschiedliche Begriffe.
    Von daher ist es ziemlich egal was eine Funktion in der Mathematik ist wenn man übers Programmieren redet.



  • Bashar schrieb:

    Wenn du void als Menge mit einem Element ansiehst, verschwindet der Widerspruch.

    Das macht mir gleich Lust, es zu programmieren:

    void halteCollatz(int x){
    //	cout<<x<<'\n';
    	if(x!=1)
    		if(x%2==0)
    			return halteCollatz(x/2);
    		else
    			if(x>600000000)
    				return throw("numbers too large");
    			else
    				return halteCollatz(3*x+1);
    	else
    		return [ :><%%> ();//sourcetrollfish returning void
    }
    


  • return [ :><%%> ();//sourcetrollfish returning void
    

    Hoffentlich werden auch Digraphe mit C++1Z entfernt, sonst muss man den Mist ja noch bis in's nächste Jahrzehnt ertragen.



  • Sind Di- und Trigraphe denn schon wenigstens deprecated?
    Wenn nein ist die Chance dass sie demnächst entfernt werden eher gering.



  • Die Diskussion "Was ist eine Funktion?" hilft dem TE nicht viel weiter.

    Da passt schon eher das Analogon "Funktion einer Mikrowelle"
    Man stellt Parameter ein (Dauer, Hitze, ...) und bekommt
    eine Rückgabe (warmes Essen).

    So sehr viel anders ist der Begriff in der Programmierung auch nicht,
    obwohl die Bezeichnungen nicht einheitlich sind. Jedesmal geht es um
    eine klar beschriebene Aufgabe.



  • hustbaer schrieb:

    Sind Di- und Trigraphe denn schon wenigstens deprecated?

    Trigraphe werden mit C++1Z hoffentlich entfernt, siehe N4086. Bei Digraphen weiß ich nicht.


Anmelden zum Antworten