Parameter – (deutsch) auch Übergabewerte genannt – sind in der Informatik Variablen, durch die ein Computerprogramm (oft ein Unterprogramm) auf die Verarbeitung bestimmter Werte „eingestellt“ werden kann. Parameter sind also programmextern gesetzte Einflussfaktoren; sie werden insbesondere beim Aufruf von Unterprogrammen verwendet, um diesen ‚mitzuteilen‘, welche Daten/Werte sie verarbeiten sollen und ggf. wie.
Durch Parametrisierung können Programme in ihrer Anwendung flexibilisiert werden, ohne dass das Programm dazu neu erstellt oder geändert werden muss. Welche Sachverhalte eingestellt werden können, muss bei der Erstellung des Programms (als Anforderung) festgelegt werden. Parameter können z. B. bestimmte Grenzwerte/Auswahlbedingungen (für Beträge, ein Datum oder ähnliches) oder zu verwendende Texte sein oder auch das „Was“ und das „Wie“ der Verarbeitung steuern (z. B. Prüfung X vornehmen – ja/nein).
Begrifflich wird unterschieden zwischen „formalen Parametern“ (= als Teil der Funktionsdefinition im Programmcode; Bsp.: <Funktionsname>( <Par1>, <Par2>, ..) ) und „tatsächlichen Parametern“, auch „Argumente“ genannt (= der jeweilige Wert für Par1 oder Par2 bei einzelnen Funktionsaufrufen).
Wird beim Aufruf des (Unter-)Programms nicht für jeden Parameter ein Argument übergeben, kann dieses eine beim Erstellen des Programms festgelegte Standardannahme verwenden oder (je nach Implementierung) die Verarbeitung wegen fehlender Parameter abbrechen.
Zweck von Parametern
mini|Prinzip der Parametrisierung
Parametrisierung ist ein Aspekt der Softwarearchitektur: So implementierte Software kann den Qualitätskriterien für Software nach ISO/IEC 9126 vor allem in den Punkten Anpassbarkeit und Modifizierbarkeit entsprechen, unterstützt aber auch die Anforderungen Austauschbarkeit, Bedienbarkeit und andere. Durch Parametrisierung können Programmänderungen für im Voraus erwartbare Situationen vermieden und damit Aufwand und Fehlerrisiken (durch Programmänderungen) minimiert werden. Für Programmeinsätze in vielen unterschiedlichen Umgebungen (Mandantenfähigkeit) ist die Parametrisierung unabdingbare Voraussetzung. Vor allem bei Systemprogrammen wird sie deshalb in der Regel sehr umfassend praktiziert (mindestens über Konfigurationsparameter). In der modularen Programmierung sind die Schnittstellen zwischen den einzelnen Modulen implementierungsimmanente Parameter. Sie sind Bestandteile der Signatur von Funktionen, Methoden und Prozeduren und somit ein wesentliches Kommunikationsmedium zwischen aufrufendem Programm und aufgerufenem Unterprogramm, Informationen können in beide Richtungen fließen. Im weiteren Sinn sind auch Makros Subroutinen: Für sie legt der Programmierer im Quelltext Parameter fest und bestimmt damit die Verarbeitungsdetails für das Makro.
Parameter sind aus Sicht des Systembegriffs Inputdaten; sie unterscheiden sich jedoch von normalen Eingabedaten z. B. wie folgt: Parameterdaten gehören nicht zum eigentlichen Verarbeitungszweck des Programms, sondern sie sollen – soweit dies bei der Implementierung berücksichtigt wurde – das Programm auf individuelle Werte/Informationen und/oder mögliche Varianten der Verarbeitung einstellen. Parameterdaten sind in der Regel eindimensional, d. h., es gibt keine Objektmengen (wie z. B. in einer Kunden- oder Produktdatei), sondern meist nur die zu einer konkreten Situation gehörenden Angaben, oft nur in Form eines einzelnen Datenfeldes. Sie werden vom Programm in der Regel nicht einfach gelesen wie andere Dateien, sondern häufig über spezielle Mechanismen (des Betriebssystems oder der Programmiersprache) interpretiert, insbesondere bei Verwendung als Unterprogramm-Parameter. Außer bei Unterprogrammen werden sie meist durch die für den technischen Ablauf des Programms verantwortlichen Benutzer, Nutzer oder Betreiber von Computern vorgegeben, z. B. Mitarbeiter des Rechenzentrums, und bleiben in diesen Fällen oft über längere Zeit unverändert.
Unterschiedliche Parameter-Begriffe
Parameter werden in unterschiedlichen Funktionen in der Informatik verwendet:
als Installationsparameter bei der Installation einer Software als Konfigurationsparameter, die das Verhalten der Software steuern als Laufzeitparameter, um die Software zur Laufzeit beeinflussen zu können. als Schnittstelle zwischen aufrufenden Programmen und aufgerufenen Unterprogrammen; siehe unten.
Bei Verwendung mehrerer Parameter ist es wichtig, die einzelnen Parameter identifizieren und unterscheiden zu können. Hierzu gibt es zwei Erkennungsmethoden:
Positionsparameter werden bei der Übergabe anhand ihrer Position zugewiesen. Beispiel: Der dritte Parameter ist die Startzeit. Wenn die Parameterwerte keine feste Länge haben, müssen Positionsparameter durch ein Trennzeichen getrennt werden. Als Trennzeichen wird z. B. das Semikolon (siehe CSV-Datei) oder der senkrechte Strich verwendet. Nicht vorzugebende Argumente werden hierbei in der Regel nur durch ihr Trennzeichen gekennzeichnet, was zu Stringfolgen wie 300;ABC;;;XYZ (dritter und vierter Parameter nicht verwendet) führt.
Schlüsselwortparameter werden bei der Übergabe mit einem eindeutigen Schlüsselwort gekennzeichnet und sind somit unabhängig von ihrer Position identifizierbar. Beispiel: startzeit=13:30. Auch bei Schlüsselwortparametern ist ein Trennzeichen erforderlich. Schlüsselwortparameter zeichnen sich gegenüber Positionsparametern meist dadurch aus, dass sie auch weggelassen werden können. Ob leere Parameter erlaubt sind und wie dies zu behandeln ist, z. B. leere Zeichenkette oder Standardannahme (englisch default argument), ist durch das Programm zu behandeln. Ebenso muss für beide Varianten festgelegt/vereinbart sein, in welchem Format sie anzugeben sind; im Beispiel: „hh:mm“, jeweils 2 Stellen, getrennt durch einen Doppelpunkt.
Weiterhin lassen sich Parameter unterscheiden nach: Quelle der Parameter Intern = von Programm zu (Unter-)Programm wirksam; Extern = von außen, z. B. durch Benutzer gesetzte Parameter Stabilität/Änderungshäufigkeit Wird der Parameter häufig oder fast immer neu gesetzt oder wird er selten verändert? Art/Typ der Parameter Variablen wie Betragsfelder (z. B. Grenzwerte), Zeitangaben (Tagesdatum), Textkonstanten und so weiter oder funktional wirkende Anweisungen wie „J/N“ o. ä. (für ‚nur fehlerhafte Daten auflisten‘, ‚nur protokollieren, nicht speichern‘) Richtung des Informationsflusses Aufrufparameter (in Richtung Programm/Unterprogramm) oder Rückgabeparameter (in Richtung aufrufendes Programm; nur bei Unterprogrammen); auch bidirektional ist möglich (Aufruf/Rückgabe)
Beispiele für Parameter
Mehrwertsteuersätze in Prozent (bei betriebswirtschaftlichen Anwendungen) Sollen in Listen nur Summen- oder auch Einzelzeilen ausgegeben werden? (steuert den Detaillierungsgrad von Benutzermedien) Bezeichnung des Software-Eigentümers (i. Z. mit Mandantenfähigkeit, in Formularköpfen sichtbar) Kreditbetrag, Zinssatz, Tilgungsbetrag, Tilgungsperiode (zur Berechnung eines Tilgungsplans) Kontonummer als Aufrufparameter an das Unterprogramm 'Prüfziffernberechnung’, Prüfziffer als Rückgabewert
In weitestem Sinn sind auch Computerbefehle (in allen Programmiersprachen und auch in Maschinensprache) Parameter: Sie enthalten einen Funktionscode plus Adressen, Längen und so weiter für die zu verarbeitenden Daten. Die Angaben werden vom Steuerwerk des Computers interpretiert und decodiert und entsprechend ausgeführt.
Ein konkretes Beispiel für die Anwendung von Parametern:
Als Teil einer Anwendung zur Verwaltung von Rechnungen soll ein Programm entstehen, das für die Benutzer Rechnungen in einer Liste ausgibt. Als fachliche Vorgabe wurde festgelegt, dass in dieser Liste alle Rechnungen ausgewiesen werden, die noch nicht bezahlt sind und die älter als 1 Monat sind, berechnet zum Zeitpunkt des Programmlaufs. Ohne Parametrisierung würde das Programm also verarbeiten: Lese Rechnungen; verarbeite nur Rechnungen mit Status = „offen“ und Rechnungsdatum < (heute ./. 1 Monat) Eine identische Lösung mit Parametern könnte hierzu die Parameter „Rechnungsdatum älter als“, „offen_JN“ vorsehen. Hierbei müsste das Programm die Parameter nach dem Start prüfen und gegebenenfalls zur Verwendung vorbearbeiten. In der eigentlichen Verarbeitung würden dann keine Konstanten oder fix codierten Befehle (wie vor) verwendet, sondern die gesetzten Parameterwerte. Für die Benutzer ergäben sich damit folgende weiter gehenden Möglichkeiten: Das Alter der Rechnung könnte variabel bestimmt werden; die Liste könnte gegebenenfalls auch erledigte Rechnungen oder alle Rechnungen unabhängig vom Status zeigen. Weiter gehend könnte z. B. der Parameter „ab Betrag = X“ vorgesehen werden oder auch die Festlegung, ob nur Rechnungen mit höheren oder nur Rechnungen mit niedrigeren Rechnungsbeträgen als X oder alle Rechnungen unabhängig von der Betragshöhe aufzulisten sind. Rechnungen mit Bagatellbeträgen könnten so z. B. ausgeschlossen oder in einer getrennten Liste angefordert werden. Je nach verwendetem Datenbanksystem können bestimmte Parameter bereits in das Lesekommando für die Rechnungsdaten eingestellt werden, wodurch das DBMS nur entsprechende Rechnungen bereitstellt. Alternativ müsste das Programm die Auswahl nach dem Lesen selbst vornehmen.
Medien zur Parameterübergabe
Ist das Programm ein Unterprogramm, so werden der (oder auch mehrere Parameter) bei dessen Definition formal festgelegt (formaler Parameter) und (vom Hauptprogramm) beim Aufruf des Unterprogramms für jeweils genau einen Aufruf auf einen konkreten Wert gesetzt (tatsächlicher Parameter). Kommandozeilenparameter werden im Aufrufkommando, meist im Anschluss an den Code für die auszuführende Funktion, übergeben. Beispiel: RENAME <alter Dateiname, neuer Dateiname>. In diese Kategorie gehören auch die Parameter, die bei Programmaufrufen über eine Job-Control-Sprache (bei Großrechnerprogrammen z. B. OPC) in den Anweisungen eingestellt werden, z. B. das Tagesdatum. Parameter können auch in speziellen Parameterdateien enthalten sein. Ihr Inhalt wird in diesem Fall von einer Steuerungskomponente des Programms zum Ausführungszeitpunkt, gegebenenfalls bei Programmstart interpretiert. Beispiele hierfür sind Einträge in sog. Registrierungsdatenbanken (in der Regel für Dienstprogramme benutzt), aber auch in betrieblichen bzw. aufgabenspezifischen Datenbanken, Dateien oder Tabellenverwaltungssystemen.
Je nach Medium werden Parameter mit unterschiedlichen Verfahren erfasst, externe Parameter häufig mithilfe von Standard- oder individuellen Editoren. Parameter für Dialogprogramme können, wenn dies im Programm vorgesehen ist, vom Benutzer direkt über Bildschirm und Tastatur eingegeben werden.
Parameter bei Unterprogrammen Eine essentielle Bedeutung haben Parameter in Verbindung mit der Verwendung von Unterprogrammen. Diese verarbeiten Daten und liefern Werte zurück, die meist zu den sie aufrufenden Programmen gehören. Um einem Unterprogramm (das die Daten des rufenden Programms grundsätzlich nicht 'kennt') die Teilmenge an Daten mitzuteilen, die es verarbeiten muss, verwendet man beim Aufruf des Unterprogramms bestimmte Techniken, die in höheren Programmiersprachen durch eine sogenannte formale Parameterliste abgebildet werden. Dieser Ausdruck wurde bereits in den 1960er Jahren für die damals als Lehrbeispiel entstandene Sprache ALGOL benutzt und ist noch heute üblich. Die Begriffe Parameter oder Argument werden in diesem Kontext oft synonym verwendet, wobei sich „Parameter“ genau genommen auf die Funktionsdefinition bezieht, „Argument“ hingegen auf den tatsächlichen Aufruf. Den Unterprogrammen wird beim Aufruf über die tatsächliche Parameterliste (genauer: Argumentliste) bestimmte Werte übergeben, mit denen sie arbeiten können. Die Unterprogramme liefern in der Regel Rückgabewerte zurück.