Operatori
Gli operatori combinano i valori nelle espressioni. NeoObjectPascal dispone di operatori aritmetici, di concatenazione, di confronto, booleani, unari e dell'operatore pipe.
Aritmetici
I quattro operatori aritmetici sono +, -, * e /:
begin
WriteLn(7 + 3);
WriteLn(7 - 3);
WriteLn(7 * 3);
WriteLn(10 / 4);
end.10 4 21 2.5
L'operatore / è la divisione. Quando gli operandi producono un risultato frazionario, esso è Real.
Divisione per zero
Dividere per zero genera un errore in fase di esecuzione. Puoi catturarlo con try/catch — vedi Gestione degli errori.
Concatenazione di stringhe
L'operatore + concatena anche le stringhe. Se uno dei due lati è una String, il risultato è l'unione dei testi:
begin
var nome: String;
nome := "Ada";
WriteLn("Olá, " + nome);
end.Olá, Ada
Confronto
Gli operatori di confronto restituiscono un Boolean:
| Operatore | Significato |
|---|---|
= | uguale a |
<> | diverso da |
< | minore di |
> | maggiore di |
<= | minore o uguale |
>= | maggiore o uguale |
begin
WriteLn(5 = 5);
WriteLn(5 <> 3);
WriteLn(2 < 10);
WriteLn(10 >= 10);
end.true true true true
L'uguaglianza è =, l'assegnazione è :=
L'uguaglianza usa un singolo segno di uguale (=). L'assegnazione usa :=. E "diverso da" è <>, non !=.
if idade = 18 then ... // comparação
idade := 18; // atribuiçãoBooleani
Combina le condizioni con and, or e not:
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.Ambos positivos Não é administrador Condição composta verdadeira
Unari
Il - unario nega un numero e il not nega un booleano:
begin
var x: Integer;
x := 7;
WriteLn(0 - x); // negação por subtração
WriteLn(not true);
end.-7 false
L'operatore pipe |>
L'operatore |> passa il valore di sinistra come primo argomento della funzione a destra. Concatena le trasformazioni in modo leggibile:
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.21
Qui 10 |> dobrar produce 20, e 20 |> incrementar produce 21. Scopri di più in Programmazione funzionale.
Tabella di precedenza
Dalla precedenza maggiore alla minore (gli operatori dello stesso livello vengono valutati da sinistra a destra):
| Livello | Operatori |
|---|---|
| 1 | a[i] (indice), chiamate |
| 2 | *, / |
| 3 | +, - |
| 4 | =, <>, <, >, <=, >= |
| 5 | and |
| 6 | or |
| 7 | |> (pipe) |
| 8 | unario not, - |
Usa le parentesi ogni volta che vuoi rendere esplicita l'intenzione, come in (a > 5 and b > 5) or admin.
Ora usa gli operatori all'interno di decisioni e cicli in Strutture di controllo.