PlusPedia wird derzeit technisch modernisiert. Aktuell laufen Wartungsarbeiten. Für etwaige Unannehmlichkeiten bitten wir um Entschuldigung; es sind aber alle Artikel zugänglich und Sie können PlusPedia genauso nutzen wie immer.

Neue User bitte dringend diese Hinweise lesen:

Anmeldung - E-Mail-Adresse Neue Benutzer benötigen ab sofort eine gültige Email-Adresse. Wenn keine Email ankommt, meldet Euch bitte unter NewU25@PlusPedia.de.

Hinweis zur Passwortsicherheit:
Bitte nutzen Sie Ihr PlusPedia-Passwort nur bei PlusPedia.
Wenn Sie Ihr PlusPedia-Passwort andernorts nutzen, ändern Sie es bitte DORT bis unsere Modernisierung abgeschlossen ist.
Überall wo es sensibel, sollte man generell immer unterschiedliche Passworte verwenden! Das gilt hier und im gesamten Internet.
Aus Gründen der Sicherheit (PlusPedia hatte bis 24.07.2025 kein SSL | https://)

Bei PlusPedia sind Sie sicher: – Wir verarbeiten keine personenbezogenen Daten, erlauben umfassend anonyme Mitarbeit und erfüllen die Datenschutz-Grundverordnung (DSGVO) vollumfänglich. Es haftet der Vorsitzende des Trägervereins.

PlusPedia blüht wieder auf als freundliches deutsches Lexikon.
Wir haben auf die neue Version 1.43.3 aktualisiert.
Wir haben SSL aktiviert.
Hier geht es zu den aktuellen Aktuelle Ereignissen

Unterprogramm

Aus PlusPedia
Zur Navigation springen Zur Suche springen

Ein Unterprogramm löst im idealen Fall selbstständig eine Teillösung eines größeren Problems.

Vorzüge von Unterprogrammen

  • Eine bessere Strukturierung von Programmen (Richtwert: eine Seite pro Modul)
  • Abstraktion (wie etwas zu machen ist, ist in diesem Moment nicht wichtig, sondern nur was man als Eingabeparameter hat und was man als Ausgabe erwartet)
  • Modularisierung
  • Bei mehrfacher Verwendung von Code
    • zum Einsparen von (Programm-)Speicherplatz.
    • Code kann damit kompakt gehalten.
    • Wiederverwendung.


Umsetzung

  • Eine Folge von Anweisungen wird unter einem Namen zusammengefasst und wird zur Routine, Prozedur, Unterprogramm, Funktionen.
  • Es können Parameter an diese Routinen übergeben werden.
  • Bei Funktionen wird ein Rückgabewert generiert.


Parameterübergabe

  • Argumente einer Funktion nennt man Parameter.
  • Es gibt formale Parameter - diese werden durch den aktuellen Parameter ersetzt.
    • X = Sum(3) hier wäre die 3 der aktuelle Parameter;
      • In der Unterroutine Sum(x) wird dem x die 3 zugeordnet.
      • x ist der formale Parameter.
      • Der aktuelle Parameter kann eine Variable sein.
    • Die Wertrückgabe ist der berechnete Wert.
    • Der Compiler stellt beim Compilieren (bei der Übersetzung) eine Typverletzung fest.
    • Interpreter stellen die Verletzung zur Laufzeit fest.

Parameterübergabe-Mechanismus

  • Call by Value
    • Bei einer Wertübergabe wird der konkrete Inhalt einer Variable oder eines Literals in den formalen Parameter kopiert. Der Wert kann geändert werden, hat aber keine Auswirkung auf den aktuellen Parameter.
  • Call by Reference
    • Bei einer Referenz wird nicht der Wert selbst übergeben sondern die Speicheradresse. Literale und Konstanten können so nicht übergeben werden. Mit diesem Mechanismus können die übergebenen Parameter modifiziert werden.
  • (Call by Name)
    • Veraltet.

Parameterbenamung

Parameter können innerhlab einer Funktion beliebig genannt werden. Die Funktionen sind in einem eigenen Referenzraum.

Unterschied zwischen Funktion und Prozedur

  • Eine Prozedur führt eine Aktion aus
    • Hier sind Call-By-Reference-Parameter eventuell sinnvoll, um Werte aus der Prozedur nach draußen zu geben.
  • Eine Funktion berechnet einen Wert
    • Eine Funktion funktionert gut mit Call-By-Value-Parametern.


Praktische Umsetzung

In Python

In Python stehen die Definitionen der Unterroutinen am Anfang (bzw. vor dem Aufruf)


def add(iX,iY):
....return iX+iY
#enddef

(Punkte sind Leerzeichen)


add(3,4) liefert als Ergebnis 7

Default-Paramter

def foo(x, y, z = 42):

Return-Anweisung

  • Gibt den Wert aus der Funktion zurück.
  • Wird kein Wert angegeben oder wird die Return-Anweisung weggelassen, so wird das Objekt None zurückgegeben.
  • Mehrere Anweisungen können mit einem Tupel zurückgegeben werden.

Namensräume

  • In Python hat jedes Unterprogramm seinen eigenen Namensraum (lokaler Namensraum)
  • Der Interpreter schaut erst in den lokalen Namensbereich nach und sucht dann im globalen Namensraum.
Globale Variablen

a=42
def foo():
....a = 13; #lokal definert
#enddf

foo();
a;
42

a=42
def foo():
....global a;
....a = 13;
#enddf

foo();
a;
13;

Links und Quellen

Siehe auch

Weblinks

Quellen

Literatur

Einzelnachweise


Andere Lexika