Programmiersprache Pascal

Arithmetische Operatoren

Pascal verfügt über die folgenden binären arithmetischen Operatoren:
  +     Addition
  -     Subtraktion
  *     Multiplikation
  /     reellwertige Division
  DIV   ganzzahlige Division
  MOD   Modulo
+ - * / sind auf ganzzahlige und reelle Operanden anwendbar.
DIV und MOD können nur für ganzzahlige Operanden benutzt werden.

Das Ergebnis der Operation ist

Laut Standard ist
  i MOD k
nur zulässig, wenn k > 0 ist.
Es gilt dann
  i = (i DIV k )*k + (i MOD k)         i >= 0, k > 0
Die Gültigkeit dieser Beziehung ist nicht garantiert, wenn die Voraussetzungen i >= 0 und k > 0 nicht erfüllt sind.

Beispiel:

                  i   k    i MOD k    (i DIV k )*k + (i MOD k)
  ------------------------------------------------------------
                  5   2
  Turbo Pascal             1          5
  Pascal ++                1          5
  Gnu Pascal               1          5
  XL Pascal                1          5
  ------------------------------------------------------------
                  5  -2
  Turbo Pascal             1          5
  Pascal ++                1          5
  Gnu Pascal               1          3       !!
  XL Pascal                *          *       Programmabbruch
  ------------------------------------------------------------
                 -5  -2
  Turbo Pascal             1         -5
  Pascal ++                1         -5
  Gnu Pascal               1         -5
  XL Pascal                *          *       Programmabbruch
In Extended Pascal sind die Operatoren + - * / auch auf Werte mit dem Datentyp COMPLEX (komplexe Zahlen) anwendbar.


Fehlerquellen:

Tückische Fehler können vor allem bei der Division ganzer Zahlen auftreten !
Beispiel:

  PROGRAM division(OUTPUT);
  VAR m, n, k : INTEGER;
      x : REAL;
  BEGIN
    m := 1; n := 2;

{   k := m / n;         Writeln(k);      !! nicht erlaubt !!  }
    x := m / n;         Writeln(x);      { liefert  0.500000  } 
    x := m DIV n;       Writeln(x);      { liefert  0.000000  } 

    x := Round(m/n);    Writeln(x);      { liefert  1.000000  }
    x := Trunc(m/n);    Writeln(x);      { liefert  0.000000  }
  END.
Das Ergebnis der Division zweier ganzer Zahlen ist eine ganze Zahl !
Mindestens einer der Operanden muß vor Ausführung der Division in eine Gleitkommazahl überführt werden !

Achtung - Mehrfachverwendung von Operatorsymbolen:

  +   Addition         Identität          Vereinigung     Verkettung
      (binär)          (unär)             (binär)         (binär)
  -   Subtraktion      Vorzeichenwechsel  Differenz
      (binär)          (unär)             (binär)
  *   Multiplikation                      Durchschnitt
      (binär)                             (binär)


P. Böhme, 01.10.1996