Diskussion:Prozedur (Programmierung)

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 12 Jahren von Daniel5Ko in Abschnitt C-Beispiel
Zur Navigation springen Zur Suche springen

zu den Rückgabewerten:[Quelltext bearbeiten]

Hallo, soweit ich mich erinnern kann ist der Unterschied, dass eine Funktion genau eines Wert zurückliefert, während eine Prozedur keine oder beliebig viele Rückgabewerte zurückliefern kann (ausser in Pascal).

Viele Grüße

Hans


Ich bin mir ziemlich sicher (ebenso zwei weitere Informatikstudenten), daß eine Prozedur keinen Rückgabewert hat. Wie sollte denn deiner Meinung nach eine Prozedur mit mehreren Rückgabewerten aussehen? Da ich nur Java und etwas Pascal kann würde ich in Pascal klar nach FUNCTION und PROCEDURE unterscheiden. In Java gibt's da keine strikte Trennung aber in Methoden kann man den Rückgabewert 'void' benutzen, wenn man nichts zurückgeben will. Das wären dann Funktionen. Mehrere Rückgabewerte kann meines Erachtens auch Java nicht - nur mehrdimensionale Objekte (als einzelnen Rückgabewert).

(auch in der englischen Wikipedia wird angedeutet, daß dies der Unterschied ist - es gibt aber nur einen Artikel zu Funktionen)

schönen Gruß,

Jeronimo


Die Rückgabe z.B. in C erfolgt via der parameter der Prozedur (http://www.net-lexikon.de/Unterprogramm.html). Es gibt aber in einigen Spreachen auch die Möglichkeit als Rückgabewert komplexe Strukturen zu definieren mit dennen man dann eine Vielzahl von Werten zurückgeben kann, wobei man dies natürlich auch als Funktion mit Rückgabe eines einzelnen Wertes deuten kann. Ich werde zu Hause nochmal in meinem zugegebenermassen etwas verstaubeten Buch über Programmiersprachen und Compierbau nachschlagen.

Viele Grüße

Hans --HPich 19:47, 3. Mai 2004 (CEST)Beantworten


Wenn die Rückgabe über die Aufrufparameter erfolgt, ist dies (meiner Meinung nach) keine Rückgabe im eigentlichen Sinne, sondern lediglich eine Änderung von Werten. Das ist ja auch das, was Prozeduren machen sollen. Ob die Änderung jetzt den Bildschirminhalt oder den Wert einer Variable betrifft ist (wieder meiner Meinung nach) irrelevant.

Zu den komplexen Strukturen: Wenn ich mal nach der Mathematik gehe - ich nehme an, daher kommt eigentlich auch die Funktion der Informatik - gibt es dort auch Funktionen, die komplexe Strukturen als "Rückgabewert" haben. Aber auch wieder jeweils nur ein Ergebnis pro Funktion (Siehe Definition unter Funktion_(Mathematik)).

schönen Gruß, Jeronimo --Jeronimo 09:08, 4. Mai 2004 (CEST)Beantworten

Überarbeiten[Quelltext bearbeiten]

Ich hab mir erlaubt, den Artikel als ueberarbeitungswuerdig zu markieren. Zur Begruendung verweise ich auf Diskussion:Funktion (Programmierung). --FAR 08:39, 7. Dez 2005 (CET)

Ich habe einen Kommentar in Diskussion:Funktion_(Programmierung) geschrieben, zu diesem Thema --HartmutS 00:44, 12. Feb 2006 (CET)

Wie ist es jetzt?[Quelltext bearbeiten]

Ich habe versucht die Definition bestmöglich im Sinne der genannten Diskussion zu überarbeiten. Was haltet Ihr davon?

Beim Abschnitt ueber Prozeduren in Pascal: Eine Prozedur gibt keinen nicht einen Wert zurueck, habe das geaendert. --Yodas 15:41, 28. Sep 2006 (CEST)

Keine Rückgabewerte: Jein!![Quelltext bearbeiten]

Dass eine Prozedur nichts zurückgeben kann, stimmt nur halb, wenn man in Delphi eine Prozedur folgendermaßen deklariert:

procedure xyz(n:integer;var rueckgabe:integer);

Die Prozedur gibt das natürlich nicht so zurück wie eine Funktion, aber der Variable ruckgabe wird in der Prozedur ein Wert zugewiesen, dieser wird wiederum der Variable zugewiesen, die man als Argument für die rueckgabe angibt. Und schon allein aus dem Grund, das Delphi das als .pas-Datei speichert, müsste das bei Pascal eigentlich genauso sein. Es handelt sich dabei also nicht um einen Rückgabewert, sondern eher um eine Variablenzuweisung. --Flo 1 12:35, 1. Jan. 2008 (CET)Beantworten

Methoden und Prozeduren[Quelltext bearbeiten]

Mich würde interessieren wo genau die Unterschiede von Methoden und Prozeduren in der objektorientierten Programmierung begründet sind. Des weiteren finde ich, das als Beispiel dafür z.B. die Sprache VB bzw. VB.NET verwendet werden sollte. (nicht signierter Beitrag von 77.23.190.222 (Diskussion) 21:07, 4. Februar 2009)

da ist kein prinzipieller Unterschied, zumindest nicht von der Implementierungsseite her gesehen. In der objektorientierten Programmierung nennt man die Prozeduren nun mal Methoden, obwohl es das gleiche Konstrukt ist. Der Unterschied besteht nur darin, dass Prozeduren (in der prozeduralen Programmierung) völlig losgelöst von allem anderen existieren, während Methoden (in der objektorientierten Welt) immer an eine bestimmte Klasse gebunden sind. Das sieht man zum Teil auch an der Aufrufsyntax: Eine Prozedur, die ein Fenster f auf eine andere Größe einstellt, würde in der prozeduralen Programmierung vielleicht geschrieben werden als Resize(f,newX,newY), in einem objektorientierten Ansatz als f.Resize(newX,newY).
Beispiele in VB oder VB.NET fände ich persönlich nicht so passend, da sollte man lieber 'echte' objektorientierte Programmiersprachen verwenden. --Herbert Klaeren 08:57, 5. Feb. 2009 (CET)Beantworten

C-Beispiel[Quelltext bearbeiten]

Ich hab das C-Beispiel ausgebessert, da die Deklaration von Variablen in ANSI C nur am beginn eines Blocks erlaubt ist. -- Schurli99 10:32, 10. Mai 2011 (CEST)Beantworten

Siehe ISO/IEC 9899-1999, Punkte 6.8.5 und 6.8.5.3. --Daniel5Ko 11:13, 10. Mai 2011 (CEST)Beantworten
da hast du allerdings recht, hatte auf C99 vergessen und nur C90 im Kopf -- Schurli99 19:13, 11. Mai 2011 (CEST)Beantworten
Und das bei dem Benutzernamen! Schäm dich! :D --Daniel5Ko 00:04, 13. Mai 2011 (CEST)Beantworten