Checkmark on Circle.png

Unterprogramm

Aus KGS-Wiki

Um ein Programm modular gestalten zu können, ist es sinnvoll, Programmteile in Unterprogramme auszugliedern. Diese Unterprogramme werden unterteilt in Prozeduren, Funktionen und Methoden, die unterschiedlich definiert werden, wobei diese Definitionen nicht immer einheitlich verwendet werden.

Sinn und Zweck von Unterprogrammen ist es, Programmteile, die mehrfach ausgeführt werden

Prozeduren

Eine Prozedur zeichnet sich im Gegensatz zu einer Funktion dadurch aus, dass sie eine bestimmte Abfolge von Anweisungen ausführt, ohne ein Ergebnis an den Aufrufenden zurückzugeben. Berechnungsergebnisse können aber über die übergebenen Parameter zurückgegeben werden.

Ein Beispiel ist die PHP-Prozedur sort, die ein übergebenes Array sortiert. Diese Prozedur erhält ein Array als Parameter übergeben und gibt keinen Ausgabewert zurück. Stattdessen wird das übergebene Array sortiert.

<?php

$fruits = ["Zitrone", "Orange", "Banane", "Apfel"];
sort($fruits);
// $fruits ist nun sortiert.
print_r($fruits);

?>

Dieses Programm erzeugt die Ausgabe

Array
(
    [0] => Apfel
    [1] => Banane
    [2] => Orange
    [3] => Zitrone
)

In einigen älteren Sprachen wie den ursprünglichen Definitionen von Pascal oder Fortran besteht nicht einmal eine Möglichkeit, Funktionen mit Ergebnis-Rückgabe zu definieren.

Funktionen

Eine Funktion zeichnet sich im Gegensatz zur Prozedur dadurch aus, dass sie das Ergebnis einer Berechnung zurückliefert. Funktionen sollten dabei frei von Seiteneffekten sein, d.h. unabhängig vom Zustand des Programms oder anderen äußeren Faktoren immer dieselben Ergebnisse zu denselben Eingaben liefern. Ein ganzes Programmierparadigma, die funktionale Programmierung, baut darauf auf, ganze Programme aus Funktionen aufzubauen.

Ein Beispiel hierfür ist die Python-Funktion sorted, die eine Liste als Parameter übergeben bekommt und die sortierte Liste als Ergebnis zurückgibt.

fruits = ["Zitrone", "Orange", "Banane", "Apfel"]
fruitz = sorted(fruits)

print(fruits)
print(fruitz)

Dieses Programm gibt zuerst die unsortierte und unveränderte Liste fruits und dann die sortierte Liste fruit aus.

["Zitrone", "Orange", "Banane", "Apfel"]
["Apfel", "Banane", "Orange", "Zitrone"]

Prinzipiell entsprechen Funktionen in der Informatik den Funktionen der Mathematik: als Zuweisung von Werten zu Berechnungen. Die Funktion kann in der Sprache Haskell fast genau so aufgeschrieben werden:

f x = x ^ 2

Methoden

Unterprogramme, die an ein bestimmtes Objekt gebunden sind, deren Abarbeitung und Ergebnis also vom Zustand dieses Objektes abhängt, werden als Methoden bezeichnet.

Ein Beispiel ist die Methode sort der Python-Klasse list, die das Listen-Objekt, auf dem sie aufgerufen wird, sortiert. Diese Methode erhält keine Parameter und gibt kein Ergebnis zurück, sondern sie verändert nur den Zustand des Objekts, auf dem sie aufgerufen wird.

fruits = ["Zitrone", "Orange", "Banane", "Apfel"]
fruits.sort()
print(fruits)

Dieses Programm erzeugt die Ausgabe

["Apfel", "Banane", "Orange", "Zitrone"]