# Ada/Tipi

Ada
Copertina Tutti i moduli · Sviluppo
* BasiAda/Basi
* Trovare e installare AdaAda/Installare
* Sviluppo di un programma in AdaAda/Sviluppare un programma
* VariabiliAda/Variabili
* TipiAda/Tipi
* Strutture di controllo
* Operazioni matematiche
* Lavorare con Ada su piattaforma LinuxAda/Platform/Linux
Modifica il sommario

## I tipi in Ada

Il sistema di tipizzazione di Ada si riassume in 4 principi:
* Tipizzazione stretta: i tipi di dati sono incompatibili fra loro. Ci sono comunque varie metodologie per convertire fra tipi di dato;
* Tipizzazione statica: il type checking avviene in fase di compilazione e questo consente al complilatore di individuare errori nell'uso dei tipi di dato;
* Astrazione: types represent the real world or the problem at hand; not how the computer represents the data internally. There are ways to specify exactly how a type must be represented at the bit level, but we will defer that discussion to another chapter.
* Equivalenza nei nomi: all'opposto di quella strutturale usata in altri linguaggi, la tipizzazione in Ada è basata sull'equivalenza dei nomi dei tipi di dato. Due tipi sono compatibili solamente se hanno lo stesso nome o la stessa radice. Non è sufficiente che abbiano la stessa rappresentazione interna. Il programmatore può dichiarare due tipi di intero che hanno lo stesso range e mantenere i due tipi di dato incompatibili, così come due record aventi campi identici eppure non compatibili fra loro.
Ada consente di dichiarare dei 'sottotipi di un tipo di dato che sono dei tipi di dato derivati da quello specificato. I tipi ed i sottotipi sono compatibili fra loro.

## Tipi di dato predefiniti

Sebbene Ada fornisca diversi tipi di dato predefiniti è pratica comune quella dei programmatori di definirsi i propri tipi di dato specifici. I tipi di dato predefiniti, forniti nella libreria standard del linguaggio, sono

### Integer

    La dimensione di un intero dipende dalla piattaforma ma in ogni caso copre un intervallo minimo di $-2^{15}+1$ .. $+2^{15}-1$ (RM 3.5.4 (21) (Annotated)). Lo standard definisce, per il tipo Integer, due sottotipi che sono Natural e Positive che rappresentano rispettivamente i numeri naturali (non negativi) ed i positivi (maggiori di zero);

### Float

    Ada fornisce una implementazione molto debole dei numeri a virgola mobile. Il programmatore è chiamato a definirsi un suo tupo a virgola mobile specificandone la precisione e l'intervallo.

### Duration

    Si tratta di un tipo di dato a virgola fissa usato per i calcoli relativi al tempo. Rappresenta il tempo sotto forma di secondi.

### Character

    I caratteri sono rappresentati in Ada come enumerazioni. I caratteri predefiniti sono ad 8 bit e chiamati Character e presenti dalla versione Ada83, a 16 bit e chiamati Wide_Character e presenti dalla versione Ada95 ed infine a 32 bit e chiamati Wide_Wide_Character e presenti da Ada2005.

### String

    Le stringhe sono degli array di Character. La libreria standard del linguaggio contiene moduli per la gestione di vari formati di stringhe.

### Boolean

    Poiché Ada è un linguaggio a tipizzazione stretta, il booleano è rappresentato come enumerazione di False e True.