Record (informatica)
In informatica, un record (noto anche come struttura)[1] è un tipo di dato strutturato che comprende diversi elementi (detti campi o membri) di tipo eterogeneo. A differenza degli array, nei record il numero di campi è usualmente stabilito nella definizione del tipo e i campi hanno un nome. I record sono impiegati tipicamente nell'implementazione delle strutture dati.
Nei linguaggi di programmazione orientata agli oggetti, un oggetto è un record esteso grazie all'aggiunta di procedure e funzioni atte a manipolare i dati in esso immagazzinati; molti linguaggi OOP conservano comunque i tipi record (che spesso sono implementati come casi particolari di oggetti, ad esempio in C++), per questioni di retrocompatibilità o per consentire l'implementazione di strutture plain old data (POD).
Esempi
Ada
In Ada i record vengono dichiarati con la keyword record, seguita da un elenco separato da punto e virgola dei nomi dei campi, per i quali viene specificato il tipo e facoltativamente un valore predefinito di inizializzazione. Le variabili di tipo strutturato possono essere inizializzate con una comprehension, e si accede ai campi con l'operatore punto.
type Libro is record Titolo: String(1..100) := ""; Editore: String(1..100) := ""; Autore: String(1..100) := ""; Integer: Anno_Pubblicazione := 0; Positive: Numero_Pagine := 1; end record
C
In C i record vengono chiamati strutture (struct) e vengono dichiarati con la keyword struct, seguita da un elenco tra parentesi graffe dei nomi dei campi preceduti dal tipo e separati da punto e virgola (analogamente a delle dichiarazioni di variabili). L'inserimento del nome del tipo (nel caso dell'esempio, Libro) è facoltativo e se si omette il tipo viene dichiarato anonimamente. Tra la graffa chiusa e il punto e virgola possono essere inseriti gli identificatori di variabili dichiarate con quel tipo. Se il tipo non è anonimo vi si può fare riferimento in seguito (ad esempio nelle dichiarazioni) includendo la keyword struct. L'inizializzazione avviene con un letterale composto, i cui elementi seguono l'ordine della dichiarazione. Si accede ai campi con l'operatore punto, o con l'operatore freccia nel caso di un puntatore a variabile di tipo struct (->
).
/* dichiarazione tipo strutturato */ struct Libro { char titolo[100]; char editore[100]; char autore[100]; int anno_pubblicazione; unsigned int numero_pagine; } divina_commedia, decameron; /* variabili di tipo struct Libro */ /* altra variabile di tipo struct Libro, con inizializzazione */ struct Libro canzoniere = {"Canzoniere", "Vindelino da Spira", "Francesco Petrarca", 1470, 257u}; struct Libro *puntatore = &canzoniere; canzoniere.titolo == puntatore->titolo; /* accesso ai membri */
C++
In C++ i record ereditano la sintassi del C estendendola, per cui le struct di un programma C generalmente sono valide anche in C++ ma non è valido in generale il contrario. Nelle struct C++ è infatti possibile utilizzare gli stessi membri di una classe, come costruttori e metodi, e la differenza rispetto al costrutto class è nel fatto che per i membri di una classe il modificatore di accesso predefinito è private, mentre nelle struct è public.[2]
Note
- ^ How to Design Programs.
- ^ Stroustrup, pp. 202 sgg.
Bibliografia
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt e Shriram Krishnamurthi, How to Design Programs, MIT Press, 2001.
- Bjarne Stroustrup, The C++ Programming Language, 4ª ed., Addison-Wesley, 2013.
Altri progetti
Altri progetti
- Wikizionario
Wikizionario contiene il lemma di dizionario «record»
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)