5. Sprachelemente / Operatoren
 
zurück

5.6 Ein- und zweistellige Additionsoperatoren, Multiplikationsoperatoren und höchstvorrangige Operatoren


Zweistellige Additionsoperatoren (+ und -)

Die zweistelligen Additionsoperatoren + und - sind für alle numerischen Typen definiert.

Die Typen des linken und des rechten Operanden müssen einen gemeinsamen übergeordneten Typ haben. Wenn unterschiedliche Typen addiert oder subtrahiert werden sollen, muß einer der Operanden konvertiert werden.

Beispiele:

A: Float;
B: Integer;
C: Positive;
...
C := 20;
B := 5 - C;
A := 0.7 + Float (B);

Der Verkettungsoperator & (Konkatenation) ist für alle eindimensionalen Reihungstypen mit nicht limitierten Komponenten definiert. Es lassen sich Reihungen mit Reihungen, Reihungen mit Komponenten, Komponenten mit Reihungen und Komponenten mit Komponenten zu neuen Reihungen verknüpfen.

Mit diesem Operator können z. B. Zeichenketten und einzelne Zeichen in beliebiger Reihenfolge verknüpft werden. Das Ergebnis ist immer eine Zeichenkette.

Beispiele:

subtype Kurze_Zeichenkette is String (1 .. 13);
subtype Lange_Zeichenkette is String (1 .. 32);
K1 : Kurze_Zeichenkette := "abcdefghijklm";
K2 : Kurze_Zeichenkette := "nopqrstuvwxyz";
L : Lange_Zeichenkette;
...
L := "--" & '>' & K1 & K2 & '<' & "--";
-- L ist jetzt -->abcdefghijklmnopqrstuvwxyz<--


Einstellige Additionsoperatoren

Die einstelligen Additionsoperatoren + und - sind für alle numerischen Typen definiert und bestimmen das Vorzeichen des nachfolgenden Ausdrucks.

Beispiel:

-5
+5.1
-2.4E3
-(-5) -- entspricht +5


Multiplikationsoperatoren (*, /, mod, rem)

Für ganzzahlige Typen sind alle Multiplikationsoperatoren definiert, für reelle Typen nur Multiplikation und Division.

Ganzzahlige Typen und reelle Typen können auch gemischt verwendet werden. Ein ganzzahliger Wert kann allerdings nicht durch einen reellen Wert dividiert werden, hierzu muß der ganzzahlige Wert erst in einen reellen Wert konvertiert werden.

Bei der Verwendung zweier Festpunkttypen sollte eine explizite oder implizite Typkonvertierung durchgeführt werden (z. B. durch Zuweisung an einen reellen Typen), da sonst auf eine feste Anzahl an Nachkommastellen gerundet wird.

Beispiele:

0.5 * 2.0 -- bleibt reeller Typ, Ergebnis 1.0
0.5 / 2.0 -- reeller Typ, Ergebnis 0.25
4 * 1.5 -- reeller Typ, Ergebnis 6.0
1 / 5 -- bleibt Integer-Typ, Ergebnis 0
(-13) mod 5 -- Integer-Typ, Ergebnis 2 (Rest von -13 / 5)
(-13) rem 5 -- Integer-Typ, Ergebnis -3 (Rest von -13 / 5)


"mod"und "rem"liefern den Rest der Division und sind für positive Operanden identisch.

Höchstvorrangige Operatoren (**, not, abs)

Abs und not sind einstellige Operatoren, die jeweils vor einem Operanden stehen.

Der Operator abs ist für alle numerischen Typen definiert. Als Ergebnis erhält man immer das positive Abbild des Wertes. Der Typ des Wertes bleibt gleich.


Beispiele:

abs 5 -- ganzzahliger Typ, Ergebnis 5
abs -3 -- ganzzahliger Typ, Ergebnis 3

Der Operator not ist für alle Booleschen Typen und alle modularen Typen sowie für eindimensionale Reihungen, deren Komponenten aus Booleschen Typen bestehen, definiert.

Für modulare Typen entspricht dieses dem bitweisen Gegenteil des Wertes. Bei einer Reihung wird für jede Komponente ein logisch negierter Wert in die Zielreihung geschrieben. Der Typ des Wertes bleibt gleich.

Beispiele:

not (True, False, True) -- Reihungstyp, Ergebnis (False, True, False)
not 2#0101_1111# -- modularer Typ, Ergebnis 2#1010_0000#

Der Exponentiationsoperator ** ist für alle ganzzahligen Typen und reelle Typen definiert.

Beim Einsatz von ganzzahligen Typen muß der Exponent vom Typ Natural sein, bei reellen Typen können Werte vom Typ Integer als Exponent verwendet werden. Der Ergebniswert hat den gleichen Typ wie die Basis. Bei Verwendung negativer Exponenten erhält man den Kehrwert des Wertes, den man beim positiven Exponenten erhalten würde.


Beispiele:

5 ** 2 -- ganzzahliger Typ, Ergebnis 25
5.0 ** -2 -- reeller Typ, Ergebnis 0.04, entspricht 1 / 5.0 ** 2



 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.