Ada Programming/Operators

From Wikibooks, the open-content textbooks collection

Jump to: navigation, search

Ada Lovelace 1838.jpg

Contents


[edit] Standard operators

Ada allows operator overloading for all standard operators and so the following summaries can only describe the suggested standard operations for each operator. It is quite possible to misuse any standard operator to perform something unusual.

Each operator is either a keyword or a delimiter -- hence all operator pages are redirects to the appropiate keyword or delimiter.

Operators have arguments which in the RM are called Left and Right for binary operators, Right for unary operators (indicating the position with respect to the operator symbol).

The list is sorted from lowest precedence to highest precedence.

[edit] Logical operators

and 
and x \land y, (also keyword and)
or 
or x \lor y, (also keyword or)
xor 
exclusive or (x \land \bar{y}) \lor (\bar{x} \land y), (also keyword xor)

[edit] Relational operators

/= 
Not Equal x \ne y, (also special character /=)
= 
Equal x = y, (also special character =)
< 
Less than x < y, (also special character <)
<= 
Less than or equal to (x \le y), (also special character <=)
> 
Greater than (x > y), (also special character >)
>= 
Greater than or equal to (x \ge y), (also special character >=)

[edit] Binary adding operators

+ 
Add x + y, (also special character +)
- 
Subtract x - y, (also special character -)
& 
Concatenate , x & y, (also special character &)

[edit] Unary adding operators

+ 
Plus sign + x, (also special character +)
- 
Minus sign - x, (also special character -)

[edit] Multiplying operator

* 
Multiply, x \times y, (also special character *)
/ 
Divide x / y, (also special character /)
mod 
modulus (also keyword mod)
rem 
remainder (also keyword rem)

[edit] Highest precedence operator

** 
Power xy, (also special character **)
not 
logical not \lnot x, (also keyword not)
abs 
absolute value | x | (also keyword abs)

[edit] Short-circuit control forms

These are not operators and thus cannot be overloaded.

and then 
e.g. if Y /= 0 and then X/Y > Limit then ...
or else 
e.g. if Ptr = null or else Ptr.I = 0 then ...

[edit] Membership tests

The Membership Tests also cannot be overloaded because they are not operators.

in 
element of, var \in type, e.g. if I in Positive then, (also keyword in)
not in 
not element of, var \notin type, e.g. if I not in Positive then, (also keywords not in)

[edit] Range membership test

if Today not in Tuesday .. Thursday then
   ...

[edit] Subtype membership test

Is_Non_Negative := X in Natural;

[edit] Class membership test

exit when Object in Circle'Class;

[edit] See also

[edit] Wikibook

[edit] Ada 95 Reference Manual

[edit] Ada 2005 Reference Manual

[edit] Ada Quality and Style Guide


Ada Operators
and and then > + abs &
or or else >= - mod
xor = < * rem in
not /= <= ** / not in
In other languages