Skip to content

Opérateurs

Les opérateurs combinent des valeurs au sein d'expressions. NeoObjectPascal propose des opérateurs arithmétiques, de concaténation, de comparaison, booléens, unaires ainsi que l'opérateur pipe.

Arithmétiques

Les quatre opérateurs arithmétiques sont +, -, * et / :

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

L'opérateur / réalise la division. Lorsque les opérandes produisent un résultat fractionnaire, celui-ci est de type Real.

Division par zéro

Diviser par zéro lève une erreur à l'exécution. Vous pouvez la capturer avec try/catch — voir Gestion des erreurs.

Concaténation de chaînes

L'opérateur + concatène également les chaînes. Si l'un des côtés est une String, le résultat est l'assemblage des textes :

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

Comparaison

Les opérateurs de comparaison renvoient un Boolean :

OpérateurSignification
=égal à
<>différent de
<inférieur à
>supérieur à
<=inférieur ou égal
>=supérieur ou égal
npas
begin
    WriteLn(5 = 5);
    WriteLn(5 <> 3);
    WriteLn(2 < 10);
    WriteLn(10 >= 10);
end.
Saída
 true true true true 

L'égalité est =, l'affectation est :=

L'égalité utilise un unique signe égal (=). L'affectation utilise :=. Et « différent de » s'écrit <>, non !=.

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

Booléens

Combinez des conditions avec and, or et 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 

Unaires

Le - unaire nie un nombre et le not nie un booléen :

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

L'opérateur pipe |>

L'opérateur |> passe la valeur de gauche comme premier argument de la fonction à droite. Il enchaîne les transformations de manière lisible :

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 

Ici 10 |> dobrar produit 20, et 20 |> incrementar produit 21. Pour en savoir plus, voir Programmation fonctionnelle.

Table de priorité

De la priorité la plus élevée à la plus faible (les opérateurs de même niveau s'évaluent de gauche à droite) :

NiveauOpérateurs
1a[i] (index), appels
2*, /
3+, -
4=, <>, <, >, <=, >=
5and
6or
7|> (pipe)
8not, - unaires

Utilisez des parenthèses chaque fois que vous souhaitez rendre l'intention explicite, comme dans (a > 5 and b > 5) or admin.

Ensuite, utilisez les opérateurs au sein des décisions et des boucles dans Structures de contrôle.