Funktionen return



  • 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