Inhaltsverzeichnis

2.4 Anweisungen und Ausdrücke

Nun haben Sie endlich das Rüstzeug beisammen, um sich dem Anweisungsteil des Programmes zuzuwenden. Der Anweisungsteil besteht aus einer (wie Sie gesehen hatten eventuell sogar leeren) Folge von Anweisungen zwischen den Wortsymbolen BEGIN und END.

PROGRAM ANWEISUNGSFOLGE(INPUT,OUTPUT);
BEGIN
  WRITE('Diese Texte ');
  WRITE('werden in ');
  WRITE('der Reihenfolge ');
  WRITE('ihres Auftretens ');
  WRITE('gedruckt.')
END.

In diesem Beispiel besteht jede Anweisung aus einem Befehl (genauer gesagt Prozeduraufruf) zur Ausgabe einer Stringkonstanten. Wenn Sie dieses Programm übersetzen und starten, sehen Sie, daß die Ausgaben in der Reihenfolge, in der sie im Programm genannt werden, ausgeführt werden. Die Anweisungen des Anweisungsteils sind voneinander durch Semikola getrennt. Vor dem Wortsymbol END kann das Semikolon entfallen.

In diesem Abschnitt wird die elementarste Form der Anweisung, die Zuweisung vorgestellt. Dabei wird einer (deklarierten!) Variablen links vom Zuweisungsoperator »:=« das Ergebnis der Berechnung des Ausdruckes auf der rechten Seite zugewiesen.

PROGRAM ZUWEISUNGEN(OUTPUT);
  VAR A,B,R: REAL;
BEGIN
  A:= 0; B:= 1.023; 
  B:= B+1;
  R:= (23.7 + B * A) / (A - B * B * B)
END.

Da eine Zuweisung den alten Wert einer Variablen überschriebt, benötigt man zum Vertauschen der Werte der Variablen A und B eine Hilfsvariable H:

H:= A; A:= B; B:= H

Die Zuweisungen A:=B; B:=A alleine haben nämlich zur Folge, daß zunächst die Variable A den Wert der Variablen B erhält, und anschließend dieser Wert wieder der Variablen B zugewiesen wird.

(23.7 + B * A) / (A - B * B * B)
A+1
A
0

sind jeweils Ausdrücke. Im allgemeinen enthalten Ausdrücke mehrere Operanden (z.B. Variablen, Konstanten) und Operatoren (wie +, -, OR, =). Die Struktur eines Ausdruckes in Pascal kann recht komplex werden und wird formal durch das Syntaxdiagramm AUSDRUCK im Anhang A beschrieben.

Ein Ausdruck wird dort schrittweise in einfache Ausdrücke, Terme, Faktoren und schließlich Konstanten und Variablen zerlegt. Dabei drücken die hierarchischen Bildungsregeln für Ausdrücke gleich- zeitig die Bindungsregeln der Operatoren aus. Die Regeln für Aus- drücke ähneln den Regeln in der Mathematik oder in BASIC und FORTRAN. Daher genügt es, auf die Besonderheiten von Pascal hinzu- weisen:

  1. Operatoren dürfen nicht direkt aufeinanderfolgen. Man schreibt also A + (-B) und nicht A + -B.
  2. Die Multiplikationsoperatoren *, /, DIV, MOD und AND binden stärker als die Additionsoperatoren +, - und OR. In Pascal gilt also auch »Punkt- vor Strichrechnung«. Der Operator NOT bindet stärker als die Mulitplikationsoperatoren und wirkt daher wie ein Vorzeichen.

    Die Additionsoperatoren binden stärker als die Vergleichs- operatoren =, <>, >=, <=, >, <, IN.

    A / 3 + Z  entspricht
    (A / 3) + Z 
    NOT (X>7) OR (Y<3) AND (X=Y)  entspricht
    (NOT (X>7)) OR ((Y<3) AND (X=Y))
    
  3. Es gibt kein Operationssymbol zum Potenzieren. Der Pfeil »^« hat eine völlig andere Bedeutung.
  4. Eine Folge von Operatoren gleicher Priorität wird von links nach rechts ausgewertet:

    A * B * C  entspricht  (A * B) * C
    A - B - C  entspricht  (A - B) - C
    
  5. Im Zweifelsfall sollte man die Priorität mit Klammern unter- streichen:

    (A * B) - (C * D)stattA * B - C * D 

  6. Wie in BASIC stehen auch arithmetische Standardfunktionen zur Verfügung, z.B. SIN, COS, SQRT. Im Augenblick können Sie diese Funktionen naiv verwenden. Alle arithmetischen Funktionen sind in der Dokumentation in Abschnitt 4.4.4.6 mit ihrer Bedeutung aufgelistet.
Die Operatoren werden später noch detaillierter behandelt. Dort finden Sie auch weitere Beispiele und Hinweise über die zulässigen Typen für die einzelnen Operationen. Schließlich ist es einsichtig, daß es z.B. sinnlos ist, zwei Zeichen zu addieren:

'A' + 'B' * 'C'

Solche semantischen Regeln lassen sich natürlich nicht mit den Syntaxdiagrammen erfassen.

Inhaltsverzeichnis