real
real in molti linguaggi di programmazione, termine indicante un particolare tipo di dato numerico che definisce un sottoinsieme finito di Q, con cui opera l’elaboratore. Al di là del nome, che rimanda ai numeri reali, questo tipo di dato definisce numeri razionali, non essendo possibile la rappresentazione “concreta” di un numero infinito di cifre decimali, e tra i razionali soltanto quelli che, nella notazione decimale o esponenziale, siano esprimibili con un numero di cifre compatibile con i limiti di memoria dell’elaboratore. L’ambiente di calcolo del computer, quindi, “declassa” i reali a razionali finiti con un numero di cifre non superiori a un determinato limite. Ciò è dovuto, oltre che alla limitatezza della memoria, alla → aritmetica finita della macchina, che opera con insiemi discreti di numeri. I numeri di tipo real possono essere rappresentati:
• nell’usuale notazione decimale (utilizzata per i numeri con poche cifre) in cui si dispone di un numero massimo di cifre totali da suddividere tra parte intera e parte decimale;
• in notazione esponenziale, dove è possibile rappresentare separatamente un numero massimo di cifre significative per la mantissa e un numero massimo di cifre per la caratteristica.
Numeri irrazionali o razionali periodici, quali π, √(2), 0, 3̅, non sono di tipo real e, qualora presenti all’interno di un’espressione di calcolo, devono essere approssimati, adeguatamente al tipo di rappresentazione (decimale o esponenziale). Qualunque sia la rappresentazione, vi sono due limitazioni: una limitazione “ai bordi”, come accade per il tipo → integer; potendo rappresentare solo i numeri compresi tra un numero minimo (min) e un numero massimo (max) per non generare l’errore di overflow (→ aritmetica in virgola mobile o fissa); una limitazione “all’interno” causata dal limitato numero di cifre a disposizione, rispettivamente per la parte intera e per la parte decimale, o per mantissa e caratteristica.
Gli elementi real costituiscono perciò un sottoinsieme discreto dell’insieme {x ∈ Q, min < x < max}. Ogni elemento real rappresenta un intervallo numerico, costituito dai numeri reali che sono a esso approssimati; per esempio il numero real 3,67 presente nella memoria di un automa esecutore che disponga di soli tre posti per rappresentare numeri, è il rappresentante degli infiniti numeri reali maggiori o uguali a 3,665 e minori di 3,675. Nel tipo real sono definite le operazioni di addizione, sottrazione, moltiplicazione e divisione. Come per integer, anche per questo tipo di dato le proprietà delle operazioni non hanno validità generale, soprattutto quando si lavora vicino agli estremi dell’insieme numerico rappresentabile, laddove ci si colloca in situazioni di overflow. Funzioni definite in real, che associano univocamente a un numero di tipo real un altro numero di tipo real, sono:
• la funzione valore assoluto (indicata con abs), che a ogni numero real associa il suo valore assoluto;
• la funzione quadrato (sqr), che a ogni numero real associa il suo quadrato;
• la funzione radice quadrata (sqrt), che a ogni numero real non negativo associa la sua radice quadrata aritmetica approssimata.
Oltre a queste, è utile considerare altre due funzioni, che trasformano un numero real in un numero integer:
• la funzione → troncamento (trunc), che a un numero real associa il numero integer ottenuto eliminando le cifre dopo la virgola;
• la funzione → arrotondamento (round), che a un numero real associa il numero integer, ottenuto per arrotondamento per difetto o per eccesso, secondo le convenzioni usuali.