Peter Lorenz English smaller fonts Simulation und Animation

3.7. Variablen

Im Abschnitt 3.1 sind die sogenannten Ampervariablen eingeführt worden. Sie entsprechen den Variablen in verbreiteten Programmiersprachen wie C oder Pascal. Der ungewöhnliche Name Ampervariable wurde deshalb gewählt, weil es in früheren GPSS-Versionen bereits ein Variablenkonzept gab, so dass der Name Variable schon anders belegt war.
Dieses alte, ursprüngliche Variablenkonzept ist der Gegenstand dieses Abschnittes. Variablen sind vergleichbar mit den Formelfunktionen in Basic: Es sind Ausdrücke oder Formeln mit einem Namen. Wenn man sie aufruft, erhält man einen aktuellen Wert. Diese Variablen sind im modernen GPSS/H fast überflüssig geworden: Man darf Ausdrücke ja fast überall hinschreiben, wo man sie braucht. Bei mehrfachem Auftreten eines Ausdruckes empfehlen sich allerdings die alten Variablen nach wie vor aus Abkürzungsgründen.

3.7.1.Integer-Variablen (VARIABLE)   Return

Mit Hilfe von Integer-Variablen, die man auch einfach nur Variablen nennt, können häufig benutzte Integer-Ausdrücke definiert, mit einem Namen versehen und danach durch Aufruf des NSA Vj berechnet werden. Eine Variable wird mit Hilfe der VARIABLE - Anweisung definiert, die das folgende Format besitzt:
label VARIABLE integer_ausdruck

Den aktuellen Wert einer Variablen liefert das Numerische Standardattribut Vj. Hier steht j für die Nummer oder den Namen der Variablen, der als label der VARIABLE-Anweisung angegeben wurde. Beim Aufruf dieses Attributs wird der integer_ausdruck aus der VARIABLE-Anweisung von links nach rechts ausgewertet, wobei Multiplikation, Division und Modulodivision den Vorrang gegenüber der Addition und Subtraktion haben. Um sich über diese Standardvorgänge hinwegzusetzen, können Klammern verwendet werden.

Alle Terme im Ausdruck werden als Integer behandelt, und alle arithmetischen Operationen werden mit Integerarithmetik ausgeführt. Wurde eine Gleitkomma - Konstante oder ein SNA, das einen Gleitkommawert hat, in einer VARIABLE-Definition verwendet, wird der entsprechende Wert durch Abschneiden in den Typ Integer umgewandelt. Bei der Division wird der Rest, falls einer vorhanden ist, verworfen und nur der Quotient behalten.

Die Division durch Null ist so definiert, dass sie das Ergebnis Null liefert. Für jeden Block oder jede Steueranweisung, deren Ausführung zu einer versuchten Division durch Null führt, wird jeweils beim ersten Versuch eine Warnmeldung ausgegeben.
Bei der Modulodivision wird der absolute Wert des Dividenden durch den absoluten Wert des Divisors geteilt, wobei der Quotient verworfen und der Rest behalten wird.

Das Endergebnis eines in einer VARIABLE-Anweisung verwendeten Ausdrucks wird als Gleitkomma - Wert zurückgegeben. Es wird in den Typ Gleitkomma umgewandelt, weil man den Aufruf einer Integer-Variablen nicht vom Aufruf einer Real-Variablen unterscheiden kann. (Beide werden mit dem SNA Vj aufgerufen.) Da eine Real-Variable den Typ Gleitkomma verlangt, ist diese Umwandlung aus Gründen der Kompatibilität notwendig.

Beispiele zur Berechnung von Ausdrücken, die in VARIABLE-Anweisungen verwendet werden, findet man im  Abschnitt 3.2.1.

3.7.2. Real-Variablen (FVARIABLE) Return

Mit Real-Variablen lassen sich häufig benutzte Gleitkomma-Ausdrücke berechnen. Eine Real-Variable muß mit einer FVARIABLE-Anweisung definiert werden, welche das folgende Format hat: 
  • label FVARIABLE  real_ausdruck
  • Den aktuellen Wert einer Real-Variablen liefert das Numerische Standardattribut Vj. Hier steht j für die Nummer oder den Namen der Variablen, der als label der FVARIABLE-Anweisung angegeben wurde. SNA von Integer- und Real-Variablen stimmen also überein! Beim Aufruf wird der Ausdruck, der in der FVARIABLE-Anweisung definiert wurde, von links nach rechts ausgewertet, wobei Multiplikation, Division und Modulodivision den Vorrang gegenüber der Addition und Subtraktion haben. Um sich über diese Standardvorgänge hinwegzusetzen, können Klammern verwendet werden. Bei einer Addition, Subtraktion oder Multiplikation in einer FVARIABLEN wird, falls einer der beiden Operanden vom Typ Gleitkomma ist, der andere Operand, wenn notwendig, ebenfalls in diesen Typ umgewandelt. Beide Operanden eines Divisionsoperators werden, wenn notwendig, in den Typ Gleitkomma umgewandelt, und die Division wird immer als Gleitkommaoperation ausgeführt.  
    Die Division durch Null ist so definiert, dass sie das Ergebnis Null liefert. 
    Bei der Modulodivision wird der absolute Wert des Dividenden durch den absoluten Wert des Divisors geteilt, wobei der Quotient verworfen und der Rest behalten wird. Falls hierbei entweder der Dividend oder der Divisor vom Typ Gleitkomma ist, wird die Modulodivision als Gleitkommaoperation ausgeführt. 3.25@2.75 ergibt z.B. den Wert 1.50

     

    3.7.3.  Boolesche Variablen (BVARIABLE) Return

    Mit Booleschen Variablen kann man logische Ausdrücke berechnen. Eine Boolesche Variable wird mit Hilfe der BVARIABLE-Anweisung definiert, welche das folgende Format hat:

  • label BVARIABLE  logischer_ausdruck
  • Die Boolesche Variable, deren Name oder Nummer durch label festgelegt ist, wird durch den Wert von logischer_ausdruck definiert. Den aktuellen Wert einer Booleschen Variablen liefert das Logische Standardattribut BVj. Hier steht j für die Nummer oder den Namen der Variablen, der als label der BVARIABLE-Anweisung angegeben wurde. Der Wert ist 1, falls der Ausdruck wahr ist, und sonst 0. 

    Die Regeln, nach denen BVARIABLE- Ausdrücke berechnet werden, findet man im Abschnitt 3.2.

    Kontrollfragen über Variablen   Return

    1. Erklären Sie die VARIABLE-Definitionsanweisung!
    2. Wie unterscheiden sich VARIABLE und FVARIABLE-Anweisung?
    3. Wie wird in Variablen die Division durch Null behandelt?
    4. Wie ruft man die Werte von Variablen auf?
    SAHome previous next up Englishsmaller fonts Top Line
    Last Modified Fri 05-27-11 06:54 GMT Valid CSS!

    Comments please to:pelosim@yahoo.com