Übersicht

CONST

Befehl aus der Gruppe: PASCAL-Sprachreferenz

Das Schlüsselwort CONST wird im Definitions-Bereich genutzt und kennzeichnet den Beginn der Definition der Konstante(n).


Syntax (CONST)

CONST

<Konstanten-Definition>

<Konstanten-Definition>

...

Nach dem Schlüsselwort CONST folgt die Liste der Konstanten-Definitionen. Die Liste kann minimal 0 und maximal 9999 Elemente enthalten. Bei der Anzahl diesen Elementen zählen die Konstanten und Variablen zusammen.


Syntax (<Konstanten-Definition>)

<Konstanten-Definition>

<einzelne Konstante> | <Konstanten-Array>

In der <Konstanten-Definition> können entweder eine <einzelne Konstante> oder ein <Konstanten-Array> definiert werden.


Syntax (<einzelne Konstante>)

<einzelne Konstante>

<Name der Konstante> : <Typ der Konstante> = <Konstanten-Term> ;


Die <einzelne Konstante> besteht aus dem <Namen der Konstante>. Der Name muss mit einem Buchstaben beginnen und muss eindeutig sein (darf noch nicht vorher in einer anderen Deklaration genutzt worden sein).

Danach folgt das Zeichen : und der <Typ der Konstante>.

Als <Typ der Konstante> sind folgende Typen möglich:

Danach folgt das Zeichen = der <Konstanten-Term> und das Zeichen ; .


Syntax (<Konstanten-Term>)

<Konstanten-Term>

<Konstanten-Wert oder Konstanten-Bezeichner> ( <Operator> <Konstanten-Wert oder Konstanten-Bezeichner> )


<Operator> -> + - * /


Im einfachsten Fall wird mit dem <Konstanten-Term> ein Konstanten-Wert (z.B. 50) definiert. Der Wertebereich des Konstanten-Wertes muss dem gewählten Typ entsprechen (z.B. bei Byte von 0..255).

Es kann auch ein Konstanten-Bezeichner angegeben werden. Das ist eine Konstante, die vorher bereits definiert wurde. Wichtig ist, dass der Typ des Konstanten-Bezeichners mit dem aktuell definierten Typ übereinstimmt.

Der <Konstanten-Term> kann aber auch etwas komplexer sein. Unter Umständen ist es sinnvoll, während der Definition einer Konstante gleich eine kleine Berechnung durchzuführen (z.B. wenn der Teiler eines Timers in Abhängigkeit von der vorher definierten Prozessortaktfrequenz berechnet werden soll). Dann folgt nach dem <Konstanten-Wert oder Konstanten-Bezeichner> ein <Operator> (+ - * /).

Die Länge des Terms ist auf maximal 50 Elemente (Wert, Operator, Bezeichner) begrenzt.


Achtung!!!

Mathematische Vorrangregeln (Punktrechnung geht vor Strichrechnung) werden an dieser Stelle nicht beachtet. In diesem Fall müssen Zwischenkonstanten gebildet werden.

Das folgende Beispiel:

TestKonstante : DWord = 20 + 40 * 4;

ergibt 3200. Das ist falsch und muss folgendermaßen definiert werden:

TestKonstante1 : DWord = 40 * 4;

TestKonstante : DWord = 20 + TestKonstante1;

ergibt 180 (das ist richtig).


Hinweis: Die eigentliche Berechnung des <Konstanten-Terms> erfolgt innerhalb des Compilers mit einer Variablen mit einem sehr großen Wertebereich (LongInt). Erst beim Ergebnis wird geprüft, ob der Ziel-Wertebereich eingehalten wird. So ist folgende Definition möglich:

Prozessortakt : Word = 20000;

Faktor : Word = Prozessortakt * 100 / 12345;

Auch wenn der Wetebereich der Word-Konstante "Faktor" (max. 65535) während der Berechnung (genauer nach der Multiplikation mit 100) kurzzeitig überschritten wird, ist das Ergebnis wieder im Wetebereich des Typs Word. Damit ist die Berechnung ohne Compilerfehler möglich.


Beispiel (einzelne Konstante)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROGRAM test_const;
 
DEVICE = mega8;
 
CONST
 
  c_byte : Word = 50;
  d_byte : Word = c_byte;
  e_byte : Word = 20000*7/5;
  xb : Boolean = false;
  f_byte : dWord = %101 * $40;
 
  Prozessortakt : Word = 20000;
  Faktor : Word = Prozessortakt * 100 / 12345;
 
BEGIN
 
END test_const.

siehe auch

PROGRAM



Übersicht