Sign in Join
Wiki copytemporary

Const/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Const/de

OldNewLine
1+\
2+Zurück zu den [[Data type/de|Datentypen]].\
3+Zurück zu den [[Reserved words/de|reservierten Wörtern]].\
4+\
5+\
6+=const=
7+
8+## Allgemeines zu Konstanten
9+
10+Mit dem Schlüsselwort **const** beginnt die Deklaration der Konstanten.\
11+Es gibt zwei Arten von Konstanten:\
12+* untypisierte Konstanten\
13+* typisierte Konstanten\
14+\
15+==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.\
16+Für untypisierte Konstanten können einfache Datentypen verwendet werden.\
17+\
18+Beispieldeklaration untypisierter Konstanten:
19+
20+``` pascal
21+ const
22+ IntegerZahl = 210; // Konstante vom Datentyp Integer
23+ FliesskommaZahl = 2.1; // Konstante vom Datentyp Fliesskomma
24+ TextString = 'Änderung'; // Konstante vom Datentyp String
25+ Buchstabe = 'F'; // Konstante vom Datentyp String und vom Datentyp Char
26+```
27+
28+\
29+
30+## Typisierte Konstanten
31+
32+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.\
33+Im Gegensatz zu untypisierten Konstanten kann der Wert einer typisierten Konstanten zur Laufzeit des Programms geändert werden.\
34+Damit bietet unter Pascal die typisierte Konstante eine ähnliche Funktionalität, wie es in anderen Programmiersprachen der Befehl <b>static</b> bietet.\
35+\
36+Beispieldeklaration typisierter Konstanten:
37+
38+``` pascal
39+ const
40+ Steuersatz: Single = 18.0;
41+
42+ // Konstante Array aus 6 Buchstaben.
43+ Alpha: array[1..6] of Char = ('A', 'B', 'C', 'D', 'E', 'F');
44+
45+ // Andere Variante für Char.
46+ Ziffer: array[0..5] of char = '123456';
47+
48+ // Als record.
49+ rec: record
50+ x, y, z: integer;
51+ end
52+ = (x: 123; y: 456; z: 789);
53+
54+ // Verschachtelt
55+ rec2: record
56+ x, y, z: integer;
57+ f: record
58+ a, b: single;
59+ end;
60+ c: array[0..5] of char;
61+ end
62+ = (x: 123; y: 456; z: 789;
63+ f: (a: 1.2; b: 3.4);
64+ c: '123456');
65+```
66+
67+## Verwendung **function**/**procedure**-Kopf
68+
69+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.
70+
71+Dies könnte man auch mit [[Var/de|var]] machen, aber dann wäre es nicht möglich eine Konstante der function/procedure zu übergeben.
72+
73+Dafür kann die Variable in der function/procedure **nicht** geändert werden.
74+
75+``` pascal
76+procedure Ausgabe(const s :String);
77+begin
78+ WriteLn(s);
79+end;
80+
81+var
82+ s1: string;
83+
84+begin
85+ s1 := 'Ein String';
86+ Ausgabe(s1);
87+ Ausgabe('Hello World !'); // Auch als Konstante möglich.
88+end.
89+```
90+
91+---
92+*From the Free Pascal wiki, page "Const/de", as it stood on 2020-02-12 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history