Begriffsabgrenzung Algorithmus, Prozedur, Funktion, Subroutine

Oneup

Cadet 2nd Year
Registriert
Mai 2009
Beiträge
26
Hallo zusammen,

eins vorweg, ich bin kein Programmierprofi, daher bitte nicht meckern ;).
Ich habe allerdings etwas Probleme bei der Abgrenzung der Begriffe und hoffe ihr könnt mir helfen:

Zu meinem Verständnis:

Ein Algorithmus beschreibt zur Lösung eines Problems definierte Schritte, nehmen wir an ich möchte 5 + 5 addieren, dann ist folgendes ein -wenn auch sehr einfacher- Algorithmus in PHP:

$a = 5;
$b = 5;

echo $a-$b;

korrekt?

Eine Prozedur ist laut der Literatur ein stück zusammenhängender Code welcher einfach nur etwas ausführt, also ist der oben genannte Algorithmus auch eine Prozedur!?

Eine Funktion ist eine Prozedur mir Werten die ich übergeben kann und die mir dann als Ergebnis wieder zurückgeliefert werden. Also wäre eine Funktion beispielsweise eine Addition der ich werte für die Zahlen a und b mitgeben könnte !? Aber auch eine Funktion ist dann doch ein Algorithmus!?!

Dann noch eine Frage zu dem Begriff der Subroutine. Laut der Literatur ist eine Subroutine ein stück ausgelagerter Code, der von einem Programm irgendwo im Code aufgerufen wird. Aber es gibt auch definitionen die Subroutine als Sammelbegriff für Funktionen und Prozeduren verstehen und die muss ich ja nicht zwingend auslagern !?

Also ihr seht ich tu' mich schwer mit den Begriffen, wäre super wenn ihr mir helfen könntet :) Besten Dank
 
funktionen kannst du als zusammengefasste subroutinen(algorithmen) nehmen. die begriffe überschneiden sich zu oft, führen deswegen für nicht-kenner schnell zur verwirrung.

jede funktion beschreibt die lösung eines problem.... jede funktion kann ausgelagert werden, also auch subroutine. Die Prozedur ist hier beschrieben. es ist nichts weiter als vorgang des programms.... was abgearbeitet wird in welche reihenfolge auch immer es sein mag.
 
Zuletzt bearbeitet:
Ich erinnere mich sogar daran, dass bei einigen Sprachen zwischen Funktion und Prozedur unterschieden wird. Eine Funktion gibt demnach einen Wert zurück, eine Prozedur jedoch nicht. In den meisten Sprachen werden Funktionen, die "void" zurückgeben, jedoch trotzdem als Funktionen bezeichnet. Und im Grunde sind das auch alles Subroutinen....

Ist schon sehr verwirrend. Wie mein Vorredner schon sagte: Einige dieser Begriffe überschneiden sich häufig.
 
Eine Subroutine ist alles, was von anderem Code aus aufgerufen wird und nachher wieder an den Aufrufort zurückspringt.

Eine Funktion ist strenggenommen das Pendant zu einer mathematischen Funktion - eine Subroutine, die Argumente (0 bis beliebig viele) entgegennimmt und einen Wert zurückliefert.

Eine Prozedur ist eine Subroutine, die keinen Wert zurückliefert. Die einzige Sprache, die mir einfällt, die tatsächlich unterschiedliche Syntax für Prozeduren und Funktionen verwendet, ist Pascal. Heutzutage werden daher oft Prozeduren auch als Funktionen bezeichnet.

Ein Algorithmus ist eine Berechnungsvorschrift, definiert durch Eingabewert(e), Ausgabewert und eine Folge von Rechenschritten. Vergleichbar mit einer Funktion, aber abstrakt - unabhängig von Programmiersprachen etc. (eine Funktion ist letztlich die Implementation eines Algorithmus).
 
eine procedure ist einfach einen teil von einem code den man immer wieder aufrufen kann. Heisst wenn man zumbsp einen bestimmten teil von code paarmal ausführen möchte, bw einmal ganz am anfang des programms und am ende, so ruft man einfach diese prozedur auf. So muss man nicht 2mal den selben code schreiben. Es dient halt auch zur übersichtlichkeit.
mann kann es quasi als 'unterprogramm' bezeichnen.
 
ähm leute, ihr habt 3 mal das gleiche beschrieben :D

prozedur ist fortlaufender prozess.... naja nicht mit dem prozess aus programmiersprache zu verwelchseln. deswegen hat man auch eigentlich das wort hierfür genommen... einfach bei wiki gucken was es bedeutet.

das ganze ist aber schwierig auseinander zu halten, weil die teile von verschiedenen leute stammen, was dazu führt dass diese wörter in der bedeutung sich mehrmals überschneiden.

prozedur kann ein "Prozess" sein (also dein gesamter code was ausgeführt wird) oder auch eine funktion. die größe spielt hier keine rolle, weil es von der grundbedeutung ja das gleiche ist. Muss man halt alles relativ betrachten.


für dich ein Tipp... ignoriere alle diese bedeutungen... nach eine weile kommt die einsicht von alleine was was ist! wenn du noch dran bleibst verlierst du nur zeit
 
Zuletzt bearbeitet:
Zurück
Oben