Tipi Ordinali

Nella precedente lezione abbiamo introdotto le variabili e come esse possono essere dichiarate e usate in Object Pascal. Nel realizzare il programma abbiamo implicitamente utilizzato uno dei tipi di dati più semplici messi a disposizione da parte del linguaggio: Integer o tipo intero.

A partire da questa lezione scenderò maggiormente nel dettaglio nel descrivere i tipi di dato e quali sono le operazioni che è possibile effettuare su di essi. I primi tipi di dato che prenderemo in esame sono i tipi ordinali di cui i tipi interi sono un esempio.

Definizione

I tipi ordinali sono categorie di tipi per cui è definito un ordine. In pratica, se x e y sono due variabili dello stesso tipo ordinale, è sempre possibile stabilire se x è minore di y, ossia se ha senso l'espressione x < y.

In Object Pascal esistono tre tipi ordinali bult-in:

  • I tipi interi
  • il tipo Char
  • il tipo Boolean

In questa lezione ci occuperemo dei tipi interi.

Tipi Interi

Ogni linguaggio di programmazione che si rispetti permette allo sviluppatore di usare tipi numerici interi. Parlo al plurale in quanto, spesso, esistono diversi tipi di intero a seconda di come i numeri sono internamente rappresentati. Nel dettaglio, ciò che cambia è il numero di bit utilizzati e la presenza o meno del segno.

L'Object Pascal supporta un ampio spettro di tipi interi, riportati nella tabella seguente.

Da notare che oltre al nome, questi tipi hanno un alias, un nome alternativo che può essere usato al posto del nome vero e proprio. Questi alias sono più semplici da ricordare perchè presentano nel nome sia il numero di bit usati (ad es. Int16 per un intero a 16 bit e Int32 per un intero a 32), sia se la rappresentazione prevede la presenza del segno o meno (un intero senza segno è indicato da una U anteposta al nome che sta per Unsigned ossia senza segno).

Dimensione Con Segno Nome Alias Valore Minimo Valore Massimo
8 Bit No Byte UInt8 0 255
8 Bit Si ShortInt Int8 -128 127
16 Bit No Word UInt16 0 65,535
16 Bit Si SmallInt Int16 -32,768 32,767
32 Bit No Cardinal UInt32 0 4,294,967,295
32 Bit Si Integer Int32 -2,147,483,648 2,147,483,647
64 Bit No UInt64 0 2^{64}
64 Bit Si Int64 -2^{63} 2^{63} - 1
Tabella 1: Tipi interi in Delphi e range di rappresentazione

Procedure standard per interi

Object Pascal fornisce tutta una serie di routine standard built-in per lavorare sui tipi interi:

program StandardRoutines;

var
    x: Integer;
begin
    Write('Inserisci un numero: ');
    ReadLn(x);

    WriteLn('Dec(x) = ', Dec(x));
    WriteLn('Inc(x) = ', Inc(x));
    WriteLn('Odd(x) = ', Odd(x));
end.