Difference between revisions of "Const/de"
(const in parameter list is an optimization _hint_) |
m (Fixed syntax highlighting) |
||
(One intermediate revision by one other user not shown) | |||
Line 18: | Line 18: | ||
<br> | <br> | ||
Beispieldeklaration untypisierter Konstanten: | Beispieldeklaration untypisierter Konstanten: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
const | const | ||
IntegerZahl = 210; // Konstante vom Datentyp Integer | IntegerZahl = 210; // Konstante vom Datentyp Integer | ||
Line 33: | Line 33: | ||
<br> | <br> | ||
Beispieldeklaration typisierter Konstanten: | Beispieldeklaration typisierter Konstanten: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
const | const | ||
Steuersatz: Single = 18.0; | Steuersatz: Single = 18.0; | ||
Line 61: | Line 61: | ||
c: '123456'); | c: '123456'); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
==Verwendung '''function'''/'''procedure'''-Kopf== | ==Verwendung '''function'''/'''procedure'''-Kopf== | ||
Line 71: | Line 68: | ||
Dafür kann die Variable in der function/procedure '''nicht''' geändert werden. | Dafür kann die Variable in der function/procedure '''nicht''' geändert werden. | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure Ausgabe(const s :String); | procedure Ausgabe(const s :String); | ||
begin | begin | ||
Line 82: | Line 79: | ||
begin | begin | ||
s1 := 'Ein String'; | s1 := 'Ein String'; | ||
− | + | Ausgabe(s1); | |
− | + | Ausgabe('Hello World !'); // Auch als Konstante möglich. | |
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 02:13, 12 February 2020
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
中文(中国大陆) (zh_CN) │
Zurück zu den Datentypen.
Zurück zu den reservierten Wörtern.
const
Allgemeines zu Konstanten
Mit dem Schlüsselwort const beginnt die Deklaration der Konstanten.
Es gibt zwei Arten von Konstanten:
- untypisierte Konstanten
- typisierte Konstanten
Unypisierte Konstanten
Einer untypisierten Konstanten kann nur einmal und zwar zum Zeitpunkt ihrer Deklaration (Bekanntmachung, Erstellung) ein Wert zugewiesen werden. Dieser Wert kann während der Laufzeit des Programmes nicht mehr geändert werden.
Für untypisierte Konstanten können einfache Datentypen verwendet werden.
Beispieldeklaration untypisierter Konstanten:
const
IntegerZahl = 210; // Konstante vom Datentyp Integer
FliesskommaZahl = 2.1; // Konstante vom Datentyp Fliesskomma
TextString = 'Änderung'; // Konstante vom Datentyp String
Buchstabe = 'F'; // Konstante vom Datentyp String und vom Datentyp Char
Typisierte Konstanten
Bei typisierten Konstanten wird der Konstanten ein bestimmter Datentyp zugewiesen. Damit ist es möglich neben einfachen Datentypen, einer typisierten Konstanten z.B. auch Records und Arrays zuzuweisen.
Im Gegensatz zu untypisierten Konstanten kann der Wert einer typisierten Konstanten zur Laufzeit des Programms geändert werden.
Damit bietet unter Pascal die typisierte Konstante eine ähnliche Funktionalität, wie es in anderen Programmiersprachen der Befehl static bietet.
Beispieldeklaration typisierter Konstanten:
const
Steuersatz: Single = 18.0;
// Konstante Array aus 6 Buchstaben.
Alpha: array[1..6] of Char = ('A', 'B', 'C', 'D', 'E', 'F');
// Andere Variante für Char.
Ziffer: array[0..5] of char = '123456';
// Als record.
rec: record
x, y, z: integer;
end
= (x: 123; y: 456; z: 789);
// Verschachtelt
rec2: record
x, y, z: integer;
f: record
a, b: single;
end;
c: array[0..5] of char;
end
= (x: 123; y: 456; z: 789;
f: (a: 1.2; b: 3.4);
c: '123456');
Verwendung function/procedure-Kopf
Wird const im function/procedure-Kopf verwendet, dann wird (regelmäßig, nicht zwingend) nur ein Zeiger der Variable übergeben. Bei dem Beispiel mit dem String, würde es ohne const den ganzen String bei der Übergabe kopieren.
Dies könnte man auch mit var machen, aber dann wäre es nicht möglich eine Konstante der function/procedure zu übergeben.
Dafür kann die Variable in der function/procedure nicht geändert werden.
procedure Ausgabe(const s :String);
begin
WriteLn(s);
end;
var
s1: string;
begin
s1 := 'Ein String';
Ausgabe(s1);
Ausgabe('Hello World !'); // Auch als Konstante möglich.
end.