Skip to content

Operatoren

Operatoren kombinieren Werte in Ausdrücken. NeoObjectPascal hat arithmetische Operatoren, Verkettungs-, Vergleichs-, boolesche, unäre Operatoren sowie den Pipe-Operator.

Arithmetische Operatoren

Die vier arithmetischen Operatoren sind +, -, * und /:

npas
begin
    WriteLn(7 + 3);
    WriteLn(7 - 3);
    WriteLn(7 * 3);
    WriteLn(10 / 4);
end.
Saída
 10 4 21 2.5 

Der Operator / ist die Division. Wenn die Operanden ein gebrochenes Ergebnis erzeugen, ist es Real.

Division durch Null

Die Division durch Null löst einen Fehler zur Laufzeit aus. Sie können ihn mit try/catch abfangen — siehe Fehlerbehandlung.

String-Verkettung

Der Operator + verkettet auch Strings. Wenn eine der Seiten ein String ist, ist das Ergebnis die Verbindung der Texte:

npas
begin
    var nome: String;
    nome := "Ada";
    WriteLn("Olá, " + nome);
end.
Saída
 Olá, Ada 

Vergleich

Die Vergleichsoperatoren geben einen Boolean zurück:

OperatorBedeutung
=gleich
<>ungleich
<kleiner als
>größer als
<=kleiner oder gleich
>=größer oder gleich
npas
begin
    WriteLn(5 = 5);
    WriteLn(5 <> 3);
    WriteLn(2 < 10);
    WriteLn(10 >= 10);
end.
Saída
 true true true true 

Gleichheit ist =, Zuweisung ist :=

Die Gleichheit verwendet ein einzelnes Gleichheitszeichen (=). Die Zuweisung verwendet :=. Und „ungleich" ist <>, nicht !=.

npas
if idade = 18 then ...   // comparação
idade := 18;             // atribuição

Boolesche Operatoren

Kombinieren Sie Bedingungen mit and, or und not:

npas
var a: Integer;
var b: Integer;
var admin: Boolean;

begin
    a := 10;
    b := 20;
    admin := false;

    if a > 0 and b > 0 then
        WriteLn("Ambos positivos");

    if not admin then
        WriteLn("Não é administrador");

    if (a > 5 and b > 5) or admin then
        WriteLn("Condição composta verdadeira");
end.
Saída
 Ambos positivos Não é administrador Condição composta verdadeira 

Unäre Operatoren

Das unäre - negiert eine Zahl und not negiert einen booleschen Wert:

npas
begin
    var x: Integer;
    x := 7;
    WriteLn(0 - x);   // negação por subtração
    WriteLn(not true);
end.
Saída
 -7 false 

Der Pipe-Operator |>

Der Operator |> übergibt den Wert von links als erstes Argument der Funktion auf der rechten Seite. Er verkettet Transformationen auf lesbare Weise:

npas
function dobrar(n: Integer): Integer
begin
    return n * 2;
end;

function incrementar(n: Integer): Integer
begin
    return n + 1;
end;

begin
    WriteLn(10 |> dobrar |> incrementar);
end.
Saída
 21 

Hier ergibt 10 |> dobrar den Wert 20, und 20 |> incrementar ergibt 21. Mehr dazu unter Funktionale Programmierung.

Vorrangtabelle

Vom höchsten zum niedrigsten Vorrang (Operatoren auf derselben Ebene werden von links nach rechts ausgewertet):

EbeneOperatoren
1a[i] (Index), Aufrufe
2*, /
3+, -
4=, <>, <, >, <=, >=
5and
6or
7|> (Pipe)
8unär not, -

Verwenden Sie Klammern immer dann, wenn Sie die Absicht explizit machen möchten, wie in (a > 5 and b > 5) or admin.

Als Nächstes verwenden Sie Operatoren innerhalb von Entscheidungen und Schleifen in Kontrollstrukturen.