Prozeduren und Variablen


Wie benutzt man Variablen?

Variablen müssen, im Gegensatz zu vielen anderen Programmiersprachen, in PostScript nicht vorab deklariert werden. Die Deklaration von Variablen ist nur bei Arrays, Dictionaries und evtl. bei Strings angebracht. Für Variablen von numerischem oder boole'schem Typ gibt es gar keine Möglichkeit Variablen explizit zu deklarieren; die Deklaration geschieht bei diesen Typen immer implizit durch die Zuweisung eines Wertes.

Deklarationen für Arrays und Strings sehen folgendermaßen aus: (s.a. dict-Operator)

   /Feld 10 array def     %10-elementiges Feld; Indizierung von 0 bis 9

   /Wort 20 string def    %String aus 20 Zeichen bestehend

Wertzuweisungen beginnen immer mit einem Slash, worauf der Name der Variablen folgt (ohne blank dazwischen) danach steht der Wert, der der Variablen zugewiesen werden soll und danach folgt der Operator def.
Der Variablen die_antwort wird hier also der Wert 42 zugewiesen. Ab diesem Zeitpunkt kann im Programm die Variable benutzt werden. Der Aufruf besteht einfach im Nennen des Namens, ohne den Slash (hier 'die_antwort').


Wie benutzt man Prozeduren?

Definitionen von Prozeduren sind de facto nichts anderes als Wertzuweisungen bei Variablen. Dem Prozedurnamen wird dabei als Wert eine Sequenz von Objekten zugewiesen, welche innerhalb von geschweiften Klammern steht.
Hier wird eine Prozedur mit dem Namen 'inch' definiert. Was beim Aufruf der Prozedur geschieht ist folgendes: taucht der Name 'inch' im Programm auf, so wird er ersetzt (d.h. vom Stack genommen) durch das, was in den Klammern steht. D.h. 'inch' wird vom Stack genommen und durch '72 mul' ersetzt. Steht im Programm also z.B.
so wird dies ersetzt durch:
und dies wiederum wird ersetzt durch:
Hierzu muß man wissen, daß 1 inch (= 2.54 cm) 72 Punkten entspricht. Was man mit der Prozedur 'inch' also erreicht ist, daß man einen Wert in inch angeben kann und dieser durch den entsprechenden Wert in Punkten ersetzt wird. Das PostScript Koordinatensystem basiert auf der Länge Punkt. Da ein Mensch (der englische Maße gewöhnt ist) aber i.d.R. mit einem inch mehr anfangen kann als mit 72 Punkten ist diese kleine Prozedur hilfreich, wenn man grafische Objekte positionieren möchte. Ebenso könnte natürlich auch 'cm' definiert werden:

Prozeduren mit Operanden

Definition:

   /mittelwert
   { /wert2 exch def         % obersten Wert vom Stack holen
     /wert1 exch def         % 'vorderen' Wert vom Stack holen

     /ergebnis wert1 wert2 add 2 div def    % Berechnung

     ergebnis                % Ergebnis der Berechnung auf den Stack legen
   } def
Aufruf: Ergebnis: Bemerkungen: Beim Gebrauch von Operanden für Prozeduren ist auf folgendes zu achten:

a) die richtige Reihenfolge der Operanden:
b) falls die Prozedur ein Ergebnis zurückliefern soll, muß das Ergebnis auf den Stack gelegt werden.




Verwendete Operatoren: array, string, dict, def


© Holger Gehringer, Dezember 1998