Abbildungsausdrücke
In einer Programmiersprache könnte ein Aufruf "gegenzahl( 4 )" möglich sein, der das Aufrufbare "gegenzahl" mit dem Argument "4" aufruft und der einen Wert notiert, nämlich die Gegenzahl von 4 (also −4).
Ein Aufruf, der einen Wert hat, ist ein Ausdruck oder Aufrufausdruck.
Ein Aufrufausdruck dessen Wert nur durch den Aufruf (als das Aufrufbare und den Wert des Argumentes) eindeutig bestimmt ist, ähnelt einem mathematischen Term, der den Wert einer Abbildung für ein Argument notiert und spielt als Abbildungsausdruck oder Abbildungsaufruf eine bedeutende Rolle. Er ist die Entsprechung des in der Mathematik wichtigen Abbildungsterms in einer formalen Sprache.
Man nennt das Aufrufbare dann auch eine Abbildung und den Aufruf nennt man auch die Anwendung der Abbildung. Falls der Aufruf ein Argument hat, so spricht man auch von der Anwendung der Abbildung auf ihr Argument.
Der Wert eines Abbildungsausdrucks ist also jedesmal der gleiche ist, wenn der Aufruf (das Aufrufbare und der Wert des Arguments) gleich sind.
Die Anwendung einer Abbildung notiert einen Wert der nur durch den Aufruf (das Aufrufbare und den Wert eines eventuell vorhandenen Arguments) bestimmt ist. Ein solcher Abbildungsaufruf hat keine anderen Auswirkungen, sondern notiert nur einen Wert.
Beispielsweise wäre "gegenzahl( 4 )" ein Abbildungsaufruf, denn erstens notiert dieser Aufruf einen Wert und zweitens ist dieser Wert durch den Text "gegenzahl( 4 )" (also das Aufrufbare "gegenzahl" und den Wert des Arguments "4") eindeutig bestimmt, es ist nämlich der gleiche Wert, der auch durch den Ausdruck "-4" notiert wird.
Der Ausdruck "gegenzahl( 4 )" ist also immer −4, egal wann und wo er verwendet wird, wenn "gegenzahl" die beschriebene Abbildung ist.
Abbildungsaufrufe ohne Argumente
Eine Abbildung muß nicht unbedingt ein Argument akzeptieren. Der Wert eines Abbildungsaufrufs ohne Argument muß dann aber durch den Aufruf (in diesem Fall durch das Aufrufbare) alleine eindeutig festgelegt sein und ist somit immer gleich (konstant, unveränderlich). Beispielsweise könnte "vier()" ein Abbildungsaufruf sein, wenn der Wert dieses Aufrufs als "4" definiert ist. Da man dann aber statt "vier()" auch gleich "4" schreiben könnte, ist die Verwendung solcher Aufrufe selten.
Ein Gegenbeispiel
Ein Aufruf "random()", der eine Pseudozufallszahl ergibt, ist kein Abbildungsaufruf, denn der Wert dieses Aufrufes ist nicht durch den Text des Aufrufs "random()" (also das Aufrufbare "random") festgelegt. Dieser Aufruf zeigt, daß in manchen formalen Sprachen Ausdrücke möglich sind, die einem mathematischen Abbildungsterm äußerlich ähneln, aber diesem doch nicht ganz entsprechen.
Kompaßdiagramme
Der Wert eines Abbildungsausdrucks mit einem Argument wird auch als Wert der Abbildung für den durch das gegebene Argument bestimmten Wert bezeichnet. Die Abbildung, die einer ganzen Zahl ihre Gegenzahl zuordnet, nennen wir in diesem Text "gegenzahl". Im Kompassdiagramm wird eine Abbildung als Rechteck dargestellt, auf dessen linker Seite der Argumentwert „hineingeht“ und auf dessen rechter Seite ein Ergebniswert „herauskommt“.
Die Abbildung "gegenzahl" [Kompassdiagramm].----------------.
Ganzzahl | gegenzahl | Ganzzahl
------------->| |-------------->
'----------------' Gegenzahl
Das Kompaßdiagramm veranschaulicht auch die Bezeichnung „Abbildung“: Der Argumentwert wird durch die Abbildung eben auf etwas „abgebildet“, so wie eine Projektion eines Filmes diesen auf das projizierte Bild abbildet.
Eine Abbildung, die kein Argument akzeptiert, läßt sich ebenfalls im Kompaßdiagramm darstellen.
Die Abbildung "vier" [Kompassdiagramm].----------------.
| vier | Ganzzahl
| |-------------->
'----------------' Vier
Pfeilschreibweise
Die Abbildung "gegenzahl" soll nicht nur der Zahl 4 die Zahl −4 zuordnen, sondern auch der Zahl 5 die Zahl −5 u.s.w.. Die Zahl 4 war hier nur ein Beispiel. Man kann dies allgemein so schreiben, daß die Abbildung "gegenzahl" der Zahl x die Zahl −x zuordnen soll, wenn man unter x irgendeine beliebige Zahl versteht. Das schreibt man in der Mathematik auch mit Hilfe eines Pfeiles, dessen Grundlinie an dem der Spitze entgegengesetzten Ende einen kleinen Querstrich hat.
gegenzahl: x ↦ −x
Tabellendarstellung
Man kann die Abbildung "gegenzahl" auch durch eine Tabelle beschreiben. Allerdings lassen sich nicht immer alle möglichen Paare von Argumentwert und Abbildungswert angeben, so daß die folgende Tabelle nur einige Beispiele enthält und daher keine vollständige Definition der Abbildung ist.
Die Abbildung "gegenzahl" [Tabelle]Argument, Abbildungswert
-2, 2,
-1, 1,
0, 0,
1, -1,
2, -2,
3, -3,
Komplexe Ausdrücke
Ein Abbildungsaufruf ist ein Ausdruck und kann als solcher auch wieder Teil eines anderen Ausdrucks sein. Man kann das auch so formulieren: Überall, wo ein Numeral stehen darf, kann man statt dessen auch einen Abbildungsaufruf "f (x )" schreiben.
1 + 51 ---.
| .------------.
'--->| + |
| |---> 6
.--->| |
| '------------'
5 ---'1 + gegenzahl( 5 )1 ---.
| .------------.
'--->| + |
| |---> -4
.------------. .--->| |
| gegenzahl | | '------------'
5 --->| |---> -5 ---'
| |
'------------'
Übungsfrage Welche Werte haben die zuletzt geschriebenen Ausdrücke?
Das Argument einer Abbildung kann ebenfalls ein beliebiger Ausdruck sein.
gegenzahl( 5 ).------------.
| gegenzahl |
5 --->| |---> -5
| |
'------------'gegenzahl( 1 + 5 )1 ---.
| .------------. .------------.
'--->| + | | gegenzahl |
| |---> 6 --->| |---> -6
.--->| | | |
| '------------' '------------'
5 ---'
Durch wiederholte Anwendung dieses Prinzips können beliebig komplizierte Ausdrücke aufgebaut werden.
gegenzahl( 5 + 1 )+ 11 --.
| .-----------.
'-->| + |
1 --. | |--> -5
| .-----------. .-----------. .-->| |
'-->| + | | gegenzahl | | '-----------'
| |--> 6 -->| |--> -6 --'
.-->| | | |
| '-----------' '-----------'
5 --'
Es ist auch möglich, daß eine Abbildung selber wieder bei der Berechnung ihres Argumentes verwendet wird.
Ausdruecke (Beispiele)gegenzahl( gegenzahl( 4 ))
gegenzahl( gegenzahl( 4 ) + 1 )
gegenzahl( gegenzahl( 4 ) * gegenzahl( 4 ))
Übungsfrage Welche Werte haben die zuletzt geschriebenen Ausdrücke?
Man beachte, daß die Schreibweise mit dem Anwendungsoperator in gewissem Sinne der Richtung der Wertermittlung entgegengesetzt ist. Um den Wert des Ausdrucks "f( g( x ))" zu ermitteln, muß zuerst der Wert des innersten Arguments "x" ermittelt werden, dann kann der Wert von des Ausdrucks "g(x)" ermittelt werden und erst danach kann schließlich der Wert des Ausdrucks "f( g( x ))" ermittelt werden.
Datentypen und Abbildungen
Zu einer Abbildung mit einem Parameter ist in vielen formalen Sprachen jeweils ein Datentyp für den Abbildungswert und ein Datentyp für den Parameter festgelegt. So könnte man beispielsweise in einer Programmiersprache eine Abbildung "gegenzahl" verwenden, die ganze Zahlen auf ganze Zahlen abbildet.
Die Abbildung "gegenzahl" [Kompassdiagramm].----------------.
Parameter | gegenzahl | Abbildungswert
------------->| |--------------->
Ganzzahl '----------------' Ganzzahl
Damit ist der Ausdruck "gegenzahl( 4 )" korrekt, während der Ausdruck "gegenzahl( 1.2 )" fehlerhaft wäre, da "1.2" kein Ausdruck vom Typ "Ganzzahl" ist (In einigen formalen Sprachen erfolgt allerdings in solch einem Fall eine automatische Umwandlung des Datentyps des Arguments in den Datentyp des Parameters.). Ein Programmierer, der eine Abbildung richtig verwenden will, muß also den Typ ihres Parameters und den Typ ihres Ergebnisses kennen.
Man kann den Typ der Abbildung "gegenzahl" symbolisch auch als "Ganzzahl( Ganzzahl )" schreiben, wobei das erste "Ganzzahl" dafür steht, daß das Ergebnis der Abbildung vom Typ "Ganzzahl" ist und das zweite "Ganzzahl" dafür, daß der Parameter vom Typ "Ganzzahl" ist.
Der Betrag (als Beispiel einer Abbildung)
In vielen Programmiersprache gibt es beispielsweise eine Abbildung zur Berechnung des Betrages einer Zahl. Der Name dieser Abbildung stammt oft von der englischen Bezeichnung der Betragsfunktion “absolute value ”, abgekürzt als “abs ”.
Der Betrag einer Zahl ist der Abstand dieser Zahl von der Zahl Null.
Die Zahlen, deren Abstand zu Null gleich 4 ist, sind +4 und -4.
4 4
|<------------->|<------------->|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-4 0 +4
Die Standardfunktion zur Berechnung des Betrages ergibt den Betrag des Argumentwertes, also den Abstand des Argumentwertes zur Zahl Null. Dies ist der Argumentwert selber, falls der Argumentwert positiv ist oder seine Gegenzahl, falls er negativ ist.
Übungsfrage Wenn x und y zwei Zahlen sind, wie kann man dann mithilfe von Grundrechenarten und der Betragsfunktion deren Abstand (also ihre Entfernung) schreiben? Hinweis: Der Abstand ist immer eine nichtnegative Zahl.
Zusatzfrage Kann der Abstand auch nur mit den Grundrechenarten geschrieben werden?
Zusatzaufgaben
Wenn die folgenden Abbildungen so definiert sind, wie in der Mathematik allgemein üblich, welchen Wert haben dann die folgenden Ausdrücke?
Ausdrückesin( 0 )
cos( 0 )
log( 1 )
Schreiben Sie Ausdrücke für: „der Sinus von 0“, „der Sinus des Cosinuses von 0“ und „der Sinus des Sinuses von 0“!
Wenn man diese drei Abbildungen in einer Programmiersprache anbietet, welchen Typ sollten sie dann haben?
Welchen Typ könnte eine Abbildung haben, die eine Zahl so rundet, daß sie keine Nachkommastellen mehr hat?
Die Abbildung "positive" soll angeben, ob das Argument eine positive Zahl ist. Welcher Datentyp wäre passend für das Ergebnis dieser Abbildung?
Wenn x ein Winkel in Grad ist (d.h. ein rechter Winkel sind z.B. 90) und die Abbildung "sin" aber ein Argument in der Einheit Radiant erwartet (d.h. sin( π/2 ) = 1), welcher Ausdruck ist dann der Sinus des Winkels x ? D.h., wenn x z.B. gleich 90 ist, dann soll gelten sin( … x … )= 1.
Anmerkungen
Richard Dedekind (1831–1916) benutzte in einem Entwurf von „Was sind und was sollen die Zahlen?“ (1888) zunächst die Schreibweise "x |f " für die Anwendung der Abbildung "f " auf das Argument "x ". Hier kann man noch deutlicher als bei der Klammerschreibweise "f (x )" erkennen, daß die Abbildungsanwendung ein Operator ist (hier "|"). Es ist überraschend, wie die Schreibweise "x |f |g " dann an die Schreibweise der UNIX -shell erinnert. Die Schreibweise "f (x )" geht wohl auf Leonhard Euler (1707–1783) zurück.
In der Mathematik bezeichnet man Abbildungen auch als „Funktionen“. (Die genauen Definitionen unterscheiden sich von Autor zu Autor.) In diesem Text wird die Verwendung des Begriffes „Funktion“ für „Abbildung“ vermieden, da in einigen Programmiersprachen Aufrufbares als „Funktion“ bezeichnet wird, auch wenn es sich dabei gar nicht um eine Abbildung handelt. Daher könnte die Verwendung des Begriffes „Funktion“ in Zusammenhang mit solchen Programmiersprachen zu Mißverständnissen führen, so daß in diesem Text das Wort „Abbildung“ verwendet wird, um sich auf den mathematischen Begriff zu beziehen.