Zum Inhalt springen

Prozedur (Programmierung)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 14. Juni 2025 um 22:49 Uhr durch imported>SchlurcherBot (Bot: http → https).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Prozedur ist ein Begriff aus der Programmierung von Computersystemen. Im Allgemeinen versteht man darunter eine Variante zum Begriff „Unterprogramm“: Die Anweisungen einer Prozedur können über ihre Benennung aufgerufen und dadurch mehrfach verwendet werden.

Terminologie und Details unterschiedlich

Je nach Programmiersprache und Programmierparadigma gibt es Unterschiede in der Definition des Begriffs Prozedur und zur Abgrenzung zum Begriff der Funktion.

FORTRAN77 beispielsweise fasst unter procedures Funktionen und prozedurale Unterprogramme (subroutines) zusammen.<ref>FORTRAN77-Standard, Kap. 15. fortran.com, archiviert vom Vorlage:IconExternal (nicht mehr online verfügbar) am 24. Januar 2010; abgerufen am 20. September 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> In der Terminologie des C-Standards heißen Unterprogramme 'Funktion', unabhängig davon, ob das aufgerufene Unterprogramm einen Rückgabewert ermittelt oder ob der Rückgabewert verwendet wird.<ref>C99-Standard. (PDF; 3,8 MB) open-std.org, abgerufen am 12. September 2010 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value), nicht-normatives Arbeitsdokument).</ref> In der objektorientierten Programmierung werden beide Konzepte oft unter dem Sammelbegriff Methode zusammengefasst.

Nach anderer Definition kann eine Prozedur im Unterschied zu einer Funktion, die genau einen Funktionswert als Rückgabewert liefert, ihre Ergebnisse nur indirekt zurückgeben, also über globale Variablen oder über Referenzparameter im aufrufenden Programm.<ref>Prozeduren-Funktionen-Methoden. (PDF; 309 kB) uni-frankfurt.de, abgerufen am 1. Dezember 2015.</ref><ref>Prozedurale Abstraktion, Funktionen. uni-koeln.de, abgerufen am 20. September 2010.</ref>

Im Allgemeinen kann eine Prozedur Parameter besitzen und auch die Werte von Variablen ändern, um dort Ergebnisse zu speichern. Man unterscheidet hier zwischen lokalen (nur innerhalb der Prozedur gültigen und von außen nicht direkt beeinflussbaren) und globalen (außerhalb der Prozedur deklarierten) Variablen. Das Ändern globaler Variablen innerhalb einer Prozedur kann die Übersichtlichkeit des Programms beeinträchtigen und die Fehlersuche erschweren.

Ebenfalls sprachenabhängig können Prozeduren wie Funktionen in Programmbibliotheken zusammengestellt werden. Hierdurch besteht die Möglichkeit, eine Prozedur aus separaten Programmmodulen oder auch aus anderen Programmen heraus aufzurufen.

Abweichende Bedeutungen: In COBOL sind Prozeduren lediglich die in der ‚Procedure Division‘ formulierten, durch ‚Paragraphen‘ benennbaren Anweisungen (Befehle), unabhängig davon, ob sie als Unterroutine verwendet werden oder nicht. Auch in PL/I bezeichnet man die im Befehlsteil des Quelltextes enthaltenen – prozedural (= ‚fortschreitend‘) zu verarbeitenden – Anweisungen als „Prozeduren“.

In vielen Programmiersprachen ist der rekursive Aufruf einer Prozedur durch sie selbst zulässig.<ref>Rekursion: Definition, Formel und Funktion. Abgerufen am 1. Juni 2025 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Beispiele

Die folgenden Beispiele definieren jeweils eine Prozedur zum Zeichnen einer Linie mit anzahl Punkten.

Pascal

In der Programmiersprache Pascal, die Prozeduren explizit als Sprachelement verwendet, gibt eine Prozedur im Gegensatz zu einer Funktion definitionsgemäß keinen Wert zurück:

Beispiel einer Prozedur in Pascal: <syntaxhighlight lang="pascal"> procedure PunkteZeichnen(anzahl: Integer); var

   i: Integer;

begin

   for i := 1 to anzahl do
       Write('.');

end; </syntaxhighlight>

Beispiel eines Prozeduraufrufs in Pascal: <syntaxhighlight lang="pascal"> PunkteZeichnen(5); </syntaxhighlight>

BASIC

Realisierung einer Prozedur in einer modernen BASIC-Variante (Subroutine ohne Rückgabewert): <syntaxhighlight lang="vbscript"> public sub PunkteZeichnen(anzahl as Integer)

   for i as Integer = 1 to anzahl
       Debug.print(".")
   next i

end sub </syntaxhighlight> Beispiel eines Methodenaufrufes in Basic: <syntaxhighlight lang="vbscript"> call PunkteZeichnen(5) </syntaxhighlight>

C

Realisierung einer Prozedur in C. Das Schlüsselwort void legt fest, dass die Funktion keinen Rückgabewert liefert: <syntaxhighlight lang="c"> void punkte_zeichnen(int anzahl) {

   for (int i = 0; i < anzahl; ++i)
       putchar('.');

} </syntaxhighlight> Beispiel eines Funktionsaufrufs in C: <syntaxhighlight lang="c"> punkte_zeichnen(5); </syntaxhighlight>

Java

Realisierung einer Prozedur in Java (Methode ohne Rückgabewert): <syntaxhighlight lang="java"> public class Beispiel {

   public static void punkteZeichnen(int anzahl) {
       for (int i = 0; i < anzahl; ++i)
           System.out.print (".");
   }

} </syntaxhighlight> Beispiel eines Methodenaufrufs in Java: <syntaxhighlight lang="java">

 Beispiel.punkteZeichnen(5);

</syntaxhighlight>

Go

Realisierung einer Prozedur in Google Go: <syntaxhighlight lang="go"> func punkteZeichnen(anzahl int) {

   for i:=0; i<anzahl; i++ {
       fmt.Print(".")
   }

} </syntaxhighlight> Beispiel eines Methodenaufrufs in Go: <syntaxhighlight lang="go">

 punkteZeichnen(5)

</syntaxhighlight>

Einzelnachweise

<references />