Typregeln von Operatoren
Eine Typregel ist nicht mit einer Typanforderung gleichzusetzen: Eine Typanforderung legt fest, was von einem Programm verlangt wird, damit es überhaupt als korrekt gilt. Eine Typregel kommt erst zur Geltung, nachdem alle Typanforderungen schon erfüllt sind. Die Typregel legt dann die Typen bestimmtern Ausdrücke fest.
Typen von Ausdrücken
Jeder Ausdruck hat einen Typ, der (zusätzlich zu den Regeln der Syntax) Regeln dafür festlegt, an welchen Stellen eines Programms jener Ausdruck verwendet werden kann.
Typen
Nicht nur Literale, sondern auch Operatorausdrücke haben einen Typ.
Jeder Ausdruck hat einen Typ (=Datentyp), welcher schon durch den Ausdruck selber bestimmt ist.
Der Typ eines Ausdrucks ist also immer bereits durch den Quelltext festgelegt. Man kann ihn immer aus dem Quelltext ablesen, ohne daß man das Programm starten muß.
(Der Wert eines Ausdrucks ist hingegen nicht immer durch den Quelltext festgelegt. Manchmal muß man ein Programm erst laufen lassen, um einen Wert zu ermitteln.)
Regeln für den Typ des gesamten Ausdrucks
Ein mit einem Minuszeichen gebildeter Operatorausdruck hat denselben Typ wie der Ausdruck hinter dem Minuszeichen (falls dieser ›int‹ oder ›double‹ ist). Dafür schreiben wir symbolisch auch kurz:
- Typregeln
- int = int
- double = double
Man sieht, daß die zuvor behandelte Signatur hier nun verwendet wurde, um die Typregeln zu schreiben: Ein Ausdruck mit der Signatur „-int“ hat den Typ ›int‹, Ein Ausdruck mit der Signatur „-double“ hat den Typ ›double‹.
Der Ausdruck »-4« hat beispielsweise die Signatur „-int“ und daher den Typ ›int‹.
Der Ausdruck »-2.3« hat die Signatur „-double“ und daher den Typ ›double‹.
Der Wertebereich des Datentyps ›int‹
Der Wertebereich des Datentyps ›int‹ umfaßt die Werte von «-2_147_483_648» bis «2_147_483_647».
Die Bedeutung eines Operators ⃗
Die Bedeutung eines Operators wird dadurch angegeben, daß gesagt wird, wie der Typ und der Wert eines aus diesem Operator und seinen Operanden bestehenden Ausdrucks ermittelt werden.
Der Typ eines solchen Ausdrucks ist bereits durch den Quelltext bestimmt und gehört daher zur Quelltextsemantik, also der Semantik, welche Aussagen über einen solchen Ausdruck macht, die an Hand des Quelltextes gemacht werden können.
Um den Wert eines Ausdrucks zu ermitteln, ist es in manchen Fällen nötig, den Ausdruck auszuwerten, was erst beim Ablauf eines Programms geschieht. Daher gehören die Regeln zur Ermittlung des Wertes eines Ausdrucks zur Laufzeitsemantik.
Die Bedeutung eines Vorzeichenoperators ergibt sich aus den schon genannten Typregeln und daraus, daß der Vorzeichenoperator »-« das Vorzeichen seines Operanden verändert, aber den Betrag (den Abstand von Null) des Operanden unverändert läßt, während der Vorzeichenoperator »+« den Wert seines Operanden als Ergebnis hat.
Erklärungen von Sprachelementen ⃗
Die Erklärung eines Sprachelements einer Programmiersprache besteht normalerweise aus den folgenden Teilen:
- Syntax
Die Syntax gibt an einfache Regeln für den Aufbau eines Sprachelements an.
z.B. „Sie ißt Eis.“ (korrekt), „Ißt Eis sie.“ (falsch), Regel: „Sprachelement Satz = Subjekt → Prädikat → Objekt“. - Weitere Anforderung
Manchmal sind neben den Regeln der Syntax noch weitere Anforderungen zu erfüllen.
z.B. „Sie existiert.“ (korrekt), „Sie existiert Eis.“ (falsch), Regel: „Das Verb ‚existieren‘ ist intransitiv.“. - Typanforderungen
In machen Fällen können an bestimmten Stellen des Quelltextes nur Ausdrücke bestimmter Typen verwendet werden.
z.B. „Sie ißt Eis.“ (korrekt), „Sie ißt Neutralität.“ (falsch). Regel: „Man kann eine Abstraktion nicht essen.“ - Typregeln
Die Typregeln sagen, welchen Typ ein Sprachelement hat.
z.B. Das „Rathaus Schöneberg“ ist ein Rathaus, Regel: „Bei einer engen Apposition bestimmt der vordere Teil den Typ.“ - Semantik
Die Semantik eines Sprachelements, was ein Sprachelement bedeutet.
Beispiel: Kuchen – „größeres, in einer Backform gebackenes Gebäck aus Mehl, Fett, Zucker, Eiern und anderen Zutaten“.
Typanforderungen
Übungsfragen
? Typergebnisse
Welchen Datentyp haben die folgenden Ausdrücke jeweils?
A »-2«
B »-2.0«
- Typregeln
- int = int
- double = double