dato
dato in termini generali, indica ciò che è conosciuto, ancor prima che si avvii una attività di elaborazione.
☐ Nel caso di un problema, un dato è un valore noto di una grandezza; valore che, in relazione con altri dati, permette di ricavare i valori non noti di altre grandezze. L’attività di calcolo sia manuale che automatico consiste nell’elaborazione di dati per ricavare successivamente nuovi dati fino a giungere ai valori ricercati.
☐ In informatica, il termine dato è utilizzato per indicare qualsiasi informazione acquisita, elaborata, memorizzata o emessa da un elaboratore elettronico sotto forma di sequenza di bit.
I dati possono essere organizzati, ossia catalogati a seconda delle loro proprietà, e sono normalmente immessi in un computer, immagazzinati, elaborati e trasmessi all’esterno di esso secondo le seguenti fasi:
• la raccolta (o acquisizione) dei dati, che consiste nell’operazione preliminare di semplice collezione, spesso senza una dettagliata specificazione dei dati stessi. Questa fase può essere effettuata dall’operatore umano, immettendo i dati da tastiera, oppure direttamente dall’elaboratore, attraverso appositi trasduttori e sensori;
• la classificazione dei dati, che prevede la lettura dei dati raccolti e la loro selezione per un eventuale utilizzo successivo. Questa fase consiste in un controllo formale che porta a un’ulteriore distinzione:
a) i dati grezzi, trattabili dall’elaboratore così come sono stati acquisiti; per esempio è un dato grezzo la temperatura dell’atmosfera rilevata da un sensore in un determinato punto del territorio e poi trasmessa all’elaboratore;
b) i dati non riconducibili a tipi di dati standard, che consistono in due categorie: gli oggetti non basati su linguaggi inerenti, come le immagini grafiche e i file multimediali in genere; gli oggetti testuali, basati su un linguaggio scritto come i documenti di testo;
c) i dati riconducibili a qualche tipo di dato (vedi oltre) e quindi classificabili come elementi ordinati di un insieme, la cui struttura d’ordine rende più efficiente l’algoritmo che li utilizza, nell’elaborazione eseguita da un computer. La struttura complessiva dei dati è legata al tipo di dato che meglio descrive le grandezze coinvolte dal problema in esame.
Occorre tenere conto del fatto che un automa deve associare a ogni dato da elaborare una corrispondente rappresentazione fisica e a ogni operazione o funzione una corrispondente trasformazione di tali rappresentazioni. In questo modo, all’operare tra i dati corrisponde la trasformazione delle loro rappresentazioni. Per questo motivo i dati sono classificati in tipi di dato. Un tipo di dato è costituito dall’insieme dei valori che una variabile può assumere nell’ambito di un programma cui sono connesse le operazioni che in tale insieme si possono effettuare. I tipi di dato si differenziano in base alla loro composizione e alla natura effettiva dei dati. In base alla loro composizione si distingue tra tipi di dato semplici, composti da singoli elementi, e tipi di dato strutturati, che hanno più componenti.
I tipi di dato semplici possono distinguersi in due classi:
• tipi di dato numerici, che comprendono, per esempio, gli interi o i reali (che in alcuni linguaggi di programmazione sono rispettivamente indicati con integer e real), nei quali sono possibili, entro certi limiti, le usuali operazioni aritmetiche;
• tipi di dato non numerici, che comprendono:
a) l’insieme dei caratteri alfanumerici (tipo di dato indicato in alcuni linguaggi di programmazione con char), nel quale sono possibili confronti e ordinamenti su base alfabetica, ma non operazioni aritmetiche;
b) il tipo boolean, che può assumere soltanto i due valori 0 o 1 (interpretabili rispettivamente come falso o vero), cui naturalmente appartengono le variabili booleane e nel quale sono ammesse le operazioni logiche del calcolo proposizionale (and, or, not ecc.).
I tipi di dato strutturati si distinguono in:
• array (o vettori e matrici): i suoi elementi sono formati da un numero finito di componenti ordinate, tutte dello stesso tipo di dato. In questo tipo di dato sono ammesse operazioni componente per componente compatibili col tipo di dato di cui si compongono (per esempio, addizione di vettori con componenti di tipo semplice numerico). Se in particolare le componenti sono di tipo char, si ha il tipo di dato «stringa» (spesso indicato con string[n], dove n indica il numero massimo di caratteri alfanumerici di cui è composto). Nel tipo di dato «stringa» sono ammesse operazioni di riordinamento (per esempio alfabetico) o di concatenazione (giustapposizione), ma non le operazioni aritmetiche;
• record: i suoi elementi sono formati da un numero finito di componenti ordinate (detti campi del record), che possono anche essere di tipo diverso.
A seconda della flessibilità del linguaggio di programmazione è anche possibile definire altri tipi di dato, ma in ogni caso è opportuno o necessario definire, nella parte dichiarativa di un algoritmo, le modalità della loro → implementazione e cioè le modalità della loro rappresentazione nonché le operazioni, funzioni o procedure che a essi possono riferirsi. Va infatti tenuto presente che ogni tipo di dato ha una sua particolare rappresentazione fisica nell’elaboratore e quindi gli va riservato un proprio spazio fisico di memoria che, per quanto grande sia, ha comunque limiti di finitezza che condizionano la possibilità di rappresentare compiutamente alcuni oggetti matematici. In particolare:
• ogni tipo di dato è un insieme necessariamente finito, perché finito è lo spazio per la sua rappresentazione nell’automa. Per tale motivo, anche il tipo di dato integer non implementa esattamente l’insieme infinito Z dei numeri interi, ma soltanto una sua parte propria e finita, oltre la quale si va in una situazione di overflow nella quale svaniscono anche le più elementari proprietà dell’aritmetica (è per esempio possibile che la somma di due numeri interi positivi travalichi le possibilità di rappresentazione dell’elaboratore e quindi, differentemente dagli assiomi dell’aritmetica, essa non sia possibile nell’aritmetica della macchina);
• per la rappresentazione di ciascun elemento di un tipo di dato è disponibile soltanto uno spazio finito, cioè un numero finito di celle di memoria; non sono quindi possibili rappresentazioni esatte di numeri decimali periodici o irrazionali ed è necessario operare con loro approssimazioni. I tipi di dato con cui opera un elaboratore sono quindi essenzialmente discreti e le caratteristiche di densità o di continuità degli insiemi dei numeri razionali o reali irrimediabilmente si perdono, obbligando così alla predisposizione di metodi numerici che tengano conto di tale difficoltà.