Prozedur (Programmierung)


Prozedur (Programmierung)

Eine Prozedur ist in der Programmierung von Computersystemen eine benannte Folge von Anweisungen (möglicherweise mit Parametern), die es erlaubt, bestimmte Aufgaben in wiederverwendbarer Art zu formulieren. Man unterscheidet eigentlich

Sowohl in der Theorie als auch in manchen Programmiersprachen wird unter Prozedur bzw. procedure einschränkend wie auch im Folgenden speziell ein Unterprogramm verstanden.

Im Unterschied zur Funktion liefert eine Prozedur keinen Rückgabewert auf direktem Weg.[1][2]

Im Allgemeinen kann eine Prozedur Aufrufparameter besitzen und auch die Werte von Variablen ändern. Man unterscheidet hier zwischen lokalen (nur innerhalb der Prozedur gültigen und von außen nicht 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.

Prozeduren können wie Funktionen in Programmbibliotheken zusammengestellt werden. Hierdurch besteht die Möglichkeit, eine Prozedur auch aus anderen Programmen oder separaten Programmmodulen heraus aufzurufen. Durch die Möglichkeit, selbst Prozeduren und Bibliotheken erstellen zu können, kann der Programmierer den eigenen Code modular und wiederverwendbar gestalten.

Inhaltsverzeichnis

Terminologie

Je nach Programmiersprache und Programmierparadigma gibt es Unterschiede in der Abgrenzung zwischen den Begriffen Funktion und Prozedur. FORTRAN77 beispielsweise fasst unter procedures Funktionen und prozedurale Unterprogramme (subroutines) zusammen.[3] In der Terminologie des C-Standards ist jedwedes Unterprogramm eine Funktion, unabhängig davon, ob ein Wert zurückgeliefert wird.[4] In der objektorientierten Programmierung werden beide Konzepte oft unter dem Sammelbegriff Methode zusammengefasst.

Prozedur als Unterprogramm

In der Programmierung tritt immer wieder der Fall auf, dass sich bestimmte Programmabschnitte wiederholen. Statt den Codeabschnitt jedes Mal zu kopieren, legt man ihn nur einmal an, versieht in mit einem Namen und ruft ihn an anderer Stelle über diesen Namen auf. Zur Laufzeit wird dann der betreffende Abschnitt durchlaufen. Einige Programmiersprachen (z. B. Pascal) unterscheiden bei der Deklaration explizit zwischen Funktion (mit Rückgabewert) und Prozedur (ohne Rückgabewert). In anderen Sprachen werden Prozeduren einfach als Funktionen oder Methoden ohne Rückgabewert realisiert. Im Gegensatz zur „reinen“ Funktion, deren einziger Effekt das nebenwirkungsfreie Liefern eines Wertes ist (z. B. Quadratwurzel einer Zahl), sind Prozeduren gerade wegen ihrer Nebeneffekte interessant, beispielsweise der Änderung von Speicherinhalten oder Ausgabeoperationen.

Entwicklung

In frühen imperativen Programmiersprachen (zum Beispiel frühe BASIC- und FORTRAN-Varianten) gab es nur das Konzept des parameterlosen Unterprogramms, welches über Sprunganweisungen aufgerufen wurde und ausschließlich über globale Variablen mit dem Hauptprogramm wechselwirken konnte.

Mit dem Aufkommen der strukturierten Programmierung entwickelte sich das Konzept der Prozedur mit Aufrufparametern, die zunächst überwiegend als Referenzparameter übergeben wurden (call-by-reference), das heißt eine Änderung des Parameters innerhalb der Prozedur ändert den zugehörigen Parameter an der Aufrufstelle der Prozedur. Die Einführung von expliziten Rückgabewerten von Prozeduren (respektive Funktionen) ermöglichte die Berechnung von Resultaten, ohne die Referenzparameter zu verändern.

In einem weiteren Schritt wurden Wertparameter zur Übergabe an Prozeduren eingeführt (call-by-value), um unerwünschte Rückwirkungen auf das Hauptprogramm weiter zu reduzieren.

Zur Vermeidung von Programmfehlern wurde in einigen Programmiersprachen wie zum Beispiel Pascal eine starke Typisierung von Parametern eingeführt: die tatsächlich verwendeten Parameter müssen hierbei relativ streng zuweisungskompatibel mit den formal deklarierten Parametern sein.

In Programmiersprachen wie Modula-2 können Prozedurvariablen aufgerufen oder als Parameter eingesetzt werden.

Schließlich wurden Prozeduren als objektbezogene Methoden oder Zugriffsfunktionen Bestandteil des objektorientierten Paradigmas, etwa in den Programmiersprachen Java und C++.

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:

  PROCEDURE Punkte_zeichnen(Anzahl:Integer);
  VAR
    i:Integer;
  BEGIN
    FOR i := 1 TO Anzahl DO
    BEGIN
      Write('.');
    END;
  END;

Beispiel eines Prozeduraufrufs in Pascal:

  Punkte_zeichnen(5);

BASIC

Realisierung einer Prozedur in einer modernen BASIC-Variante (Subroutine ohne Rückgabewert):

  Public Sub Punkte_zeichnen(anzahl As Integer)
    For i As Integer = 1 To anzahl
      Debug.print (".")
    Next i
  End Sub

Beispiel eines Methodenaufrufes in Basic:

  Call Punkte_zeichnen(5)

C

Realisierung einer Prozedur in C. Das Schlüsselwort void legt fest, dass die Funktion keinen Rückgabewert liefert:

  void Punkte_zeichnen(int anzahl) {
    for (int i = 0; i < anzahl; i++) {
      putchar('.');
    }
  }

Beispiel eines Funktionsaufrufs in C:

  Punkte_zeichnen(5);

Java

Realisierung einer Prozedur in Java (Methode ohne Rückgabewert):

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

Beispiel eines Methodenaufrufs in Java:

  Punkte_zeichnen(5);

Einzelnachweise

  1. Prozeduren-Funktionen-Methoden. Abgerufen am 20. September 2010 (PDF, Skript auf www.gdv.informatik.uni-frankfurt.de).
  2. Prozedurale Abstraktion, Funktionen. Abgerufen am 20. September 2010 (auf www.uni-koeln.de).
  3. FORTRAN77-Standard, Kap. 15. Abgerufen am 20. September 2010 (englisch).
  4. C99-Standard. Abgerufen am 12. September 2010 (PDF, englisch, nicht-normatives Arbeitsdokument).

Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Prozedur — Der Begriff Prozedur rsp. Prozedere oder Verfahrensweise bzw. Verfahrensordnung (vom lateinischen procedere ‚vorwärts gehen‘) bezeichnet: allgemein ein Verfahren (Begriffsklärung) oder einen Prozess Prozedur ist: in der Programmierung ein Stück… …   Deutsch Wikipedia

  • Methode (objektorientierte Programmierung) — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden… …   Deutsch Wikipedia

  • Aspekt-orientierte Programmierung — Die Artikel Aspektorientierte Programmierung und Cross Cutting Concern überschneiden sich thematisch. Hilf mit, die Artikel besser voneinander abzugrenzen oder zu vereinigen. Beteilige dich dazu an der Diskussion über diese Überschneidungen.… …   Deutsch Wikipedia

  • Methode (Programmierung) — Der Begriff Methode (Eng. method oder member function, zu deutsch auch Mitgliedsfunktion) wird in der Programmierung allgemein als Sammelbegriff sowie auch synonym unter anderem für Funktionen und Prozeduren verwendet. Speziell in der… …   Deutsch Wikipedia

  • Funktion (Programmierung) — Funktion (engl.: function) ist in der Informatik die Bezeichnung eines Programmkonstrukts. Unterscheidungsmerkmal einer Funktion im Vergleich zum ähnlichen Konstrukt der Prozedur ist es, dass die Funktion ein Resultat zurückliefert und deshalb im …   Deutsch Wikipedia

  • Polymorphie (Programmierung) — Polymorphie (griechisch, „Vielgestaltigkeit“) ist ein Konzept in Programmiersprachen, das die Fähigkeit eines Bezeichners beschreibt, abhängig von seiner Verwendung unterschiedliche Datentypen anzunehmen. Das Gegenteil der Polymorphie ist die… …   Deutsch Wikipedia

  • Objektorientierte Programmierung — Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee dabei ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem… …   Deutsch Wikipedia

  • Ereignis (Programmierung) — Ein Ereignis (engl. event) dient in der Softwaretechnik – bei Entwicklung nach dem ereignisorientieren Programmierparadigma – zur Steuerung des Programmflusses. Das Programm wird nicht linear durchlaufen, sondern es werden spezielle… …   Deutsch Wikipedia

  • Aspektorientierte Programmierung — (AOP) ist ein Programmierparadigma für die Objektorientierte Programmierung, um generische Funktionalitäten über mehrere Klassen hinweg zu verwenden (Cross Cutting Concern). Logische Aspekte eines Anwendungsprogramms werden dabei von der… …   Deutsch Wikipedia

  • Kapselung (objektorientierte Programmierung) — Die Objektorientierung, kurz OO, ist ein Ansatz zur Entwicklung von Software, der darauf beruht, die zu verarbeitenden Daten anhand ihrer Eigenschaften und der möglichen Operationen zu klassifizieren. Im Vergleich zu Ansätzen, bei denen… …   Deutsch Wikipedia