Laufzeitwerte in VBA
Der Wert einer Auswertung des Ausdrucks »VBA.Math.Rnd()« ist nicht bereits durch diesen Ausdruck bestimmt. Er kann bei jeder Auswertung anders sein.
- Direktbereich
? VBA.Math.Rnd()
0.7055475
? VBA.Math.Rnd()
0.533424
Die zur Laufzeit stattfindende Auswertung eines Funktionsaufrufs ist ein Vorgang (Geschehen, Ablauf), während der Funktionsaufrufausdruck ein Teil des Quelltextes ist.
Am Vorgang der Auswertung des Ausdrucks
- VBA.Math.Rnd()
ist noch besonders zu bemerken, daß es sich zwar um eine eindeutig bestimmte Funktion handelt, ihr Wert aber nicht bestimmt ist. Er kann bei jeder Ausführung der Funktion ein anderer sein. (Das heißt: Die Auswertung dieses Ausdrucks kann jedes Mal einen anderen Wert ergeben.)
Hierin unterscheidet sich das Programmieren von der Mathematik, wo ein Term wie ‹cos( 0 )› immer den gleichen Wert hat (also immer einen bereits durch diesen Term vollständig und eindeutig bestimmten Wert).
Man nennt Werte, die erst bei der Ausführung eines Programms ermittelt werden, Laufzeitwerte. Das bedeutet, daß nicht schon der Aufrufausdruck den Wert festlegt, sondern erst der Aufrufvorgang (also die Auswertung). Derselbe Aufrufausdruck kann bei zwei verschiedenen Aufrufvorgängen (wie oben), also zur Laufzeit, zwei verschiedenen Werte haben. Der Aufrufausdruck steht im Quelltext für den Laufzeitwert, der sich bei jeweils einem Aufrufvorgang ergibt.
Der Aufrufausdruck »java.lang.Math.random()« bezieht sich immer auf dieselbe Funktion, aber diese Funktion kann bei verschiedenen Ausführungen, verschiedene Werte für den Aufrufausdruck liefern. Durch einen Aufrufausdruck kann also ein erst beim Programmablauf festgelegter Laufzeitwert angegeben werden, während ein Literal immer denselben Wert hat.
Dynamische und statische Eigenschaften
Etwas das zum Laufzeitgeschehen gehört, insbesondere etwas, das erst während des Programmablaufs festgelegt wird, nennt man auch dynamisch.
Etwas das zum Quelltext gehört, insbesondere etwas, das schon durch den Quelltext festgelegt ist, nennt man auch statisch.
Der Typ eines Ausdrucks ist statisch. Er ist bereits durch den Quelltext festgelegt. Dadurch können Typfehler schon während der Compilierung erkannt und gemeldet werden, so daß ein Programmierer sie erkennen kann, bevor ein Programm an Kunden ausgeliefert wird. Dazu sagt man auch, VBA habe ein statisches Typsystem.
Der Wert eines Ausdrucks hingegen ist dynamisch. Es ist möglich, daß er erst zur Laufzeit festgelegt wird. Dadurch kann ein Programm flexibler an die Umstände während seiner Ausführung angepaßt werden. Andererseits ist es dadurch möglich, daß Fehler, die nur bei bestimmten Werten auftreten, vom Programmierer nicht bemerkt werden, weil dieser nicht alle möglichen Werte durchprobieren kann.