Funktion und Prozedur
-
Eine "Prozedur" kann auch
return
-Anweisungen haben...void noop() { return; // Oops. What now?! }
Wichtig ist, dass ein Wert zurückgegeben wird, was bei einer Prozedur nicht der Fall ist
MfG
-
Achso...das wusste ich nicht. Ich fand die Unterscheidung eigentlich ganz hilfreich! Naja...
Auch wenn es nicht in das Forum gehört, aber kann mir jemand sagen, ob es denn ich Delphi diese Unterscheidung gibt oder ob man da auch nur von Funktionen redet?
Vielen Dank
lg, freakC++
-
Wenn der Returntyp void ist, darfst halt keinen Wert mit angeben falls du doch ein return machen willst. Verboten ist das return aber nicht.
-
Aber das mit void und return ist doch schlechter Stil!
Wer schreibt denn bitte
void noop() { return; // Oops. What now?! }
oder macht man das seit neustem?
vielen Dank für eure Hilfe
lg, freakC++
-
Das macht durchaus Sinn, wenn du die Funktion vorher abbrechen möchtest.
void foo () { if ( ... ) return; // ok abbrechen // wenn nicht, dann weiter }
-
Ich habe meinen Beitrag etwas ausgebaut, siehe oben. Die anderen waren einfach zu schnell. Und es macht manchmal Sinn, wenn die Funktion vorzeitig verlassen werden soll. Ich wuerde es nicht als schlechten Stil per se abtun.
-
@knivil
Wenn hinter dem if() ein return steht kannst du das else auch weglassen. (siehe drakon)
-
C++freak schrieb:
Auch wenn es nicht in das Forum gehört, aber kann mir jemand sagen, ob es denn ich Delphi diese Unterscheidung gibt oder ob man da auch nur von Funktionen redet?
In Delphi herrscht strikte Trennung zwischen Funktionen und Prozeduren:
Prozedur:
procedure Machwas(var AValue: Integer); begin { hier kommt code hin } end;
Funktion:
function MachwasAnderes(var AValue:Integer): Boolean; begin { hier kommt code hin } Result := true; // return in c/c++, führt aber nicht zum Abbruch der Funktion! { hier könnte noch code kommen } end;
-
Es diente nur dafuer, dass die Berechnung weitergeht, also noch etwas danach kommt. Drakon hat dafuer ein Kommentar geschrieben.
-
freakC++ schrieb:
Nutzt man in C++ einen anderen Ausdruck? Ein früheres C++ Lehrbuch hat streng auf diese Unterscheidung geachtet!
Ja, ein typisches Müllbuch. Da hat jemand vor einem halben Jahrhundert programmieren gelernt und seit einem vietel Jahrhundert nichts dazugelernt und schreibt jetzt ein pascaloides C++-Lehrbuch. Es wird while(true) statt for(;;) nehmen und daran erkennt man die Pascaller meistens am schnellsten. Es wird break scheuen und stattdessen künstliche Hilfsvariablen nehmen, um den Ablauf einer Schleife abzubrechen. Es wird zu große Funktionen bauen, gerne größer als eine Buchseite, weil das Single-Entry-Single-Exit-Dogma zu Blähcode mit Verstopfungen führt. Es wird einen ofstream erst leer anlegen, dann open aufrufen und am ende close, um all zu modernen Mist von C++ zu meiden. Es würde einer genaueren Analyse bedürfen, um zu entscheiden, ob so ein Buch nur nichts bringt, oder ob es einen in Wirklichkeit zu weit ins vergangene Jahrhundert zurückwirft.
-
freakC++ schrieb:
Aber das mit void und return ist doch schlechter Stil!
Sagt wer? Ein bestimmtes Lehrbuch?
-
volkard schrieb:
Es wird break scheuen und stattdessen künstliche Hilfsvariablen nehmen, um den Ablauf einer Schleife abzubrechen.
Ist schon seit Delphi 6 oder so nicht mehr möglich!
-
Das habe eigentlich ich gesagt...weil ich so überrascht war
Das Buch war mein erstes Lehrbuch und ist nun schon wieder ein bisschen her, doch hat der Autor auf die Unterscheidung sehr geachtet:
C++ für Kids
Vielen Dank
lg, freakC++
-
DeepCopy schrieb:
volkard schrieb:
Es wird break scheuen und stattdessen künstliche Hilfsvariablen nehmen, um den Ablauf einer Schleife abzubrechen.
Ist schon seit Delphi 6 oder so nicht mehr möglich!
Ich rede von pascaloiden Krankheiten, die ihren Höhepunkt lange vor Delphi hatten. Zum Teil sogar vor Turbo Pascal.
-
Naja den Sprachumfang ein Sprache daran zu bemessen wie er vor 15-20 Jahren war mit einer relativ jungen Sprache wie C++, schient mir ein wenig unfair zu sein.
Heute hat Pascal Interfaces, Templates, Klassen Generics und und und... Sachen wie sie z.Z. nicht mal in C++ vorkommen und anderes mehr.Soll jetzt kein Flame-Thread daraus werden.
-
Sag mir ein besseres Wort, das die Lage in der damaligen Pascal-Gemeinde beschreibt.