Lezioni di Informatica
"Una volta che abbiate conosciuto il volo, camminerete sulla terra guardando il cielo" [ L. da Vinci ]
Informazioni sul Sito
N. visitatori  000064763  dal 21/01/2007  |   e-mail: ksoft64camera@gmail.com   
Cerca nel sito
Documenti collegati alla pagina
Dati strutturati

Un dato strutturato è composto da più dati semplici quindi può anche occupare più zone distinte della memoria sebbene sia unificato in quanto viene dichiarato con un nome unico.

In basic, come in molti altri linguaggi ad alto livello, troviamo diversi tipi di strutture.
Fondamentalmente distinguiamo:

Visual basic aggiunge alcune strutture particolari come:

  • vettore di controlli video
  • list box
  • combo box

Il vettore

Il vettore è un dato strutturato con un indice che identifica ogni elemento memorizzato in esso.

Si può fare l'esempio dell'insieme dei cognomi degli studenti di una classe.
Si dichiara:

dim cognome (1 to 30) as string*20

Questa struttura occuperà, in memoria RAM, 30x20 celle, ovvero 600 byte. Per inserire i dati nella struttura si fa riferimento a un indice, ovvero un numero intero che, in questo caso, può andare da 1 a 30.
Allora per riferirci al 5° cognome inserito in modo da assegnarlo ad una casella di testo di nome text1 si scriverà:

text1.text=cognome(5)


La matrice

Prima di dare una definizione partiamo dallo stesso esempio fatto nel caso del vettore.
Supponiamo che, oltre al cognome, vogliamo memorizzare anche il nome e diamo al nome la stessa dimensione del cognome. Potremmo dichiarare 2 vettori anzichè uno. In questo caso è, però, più utile dichiarare una sola struttura con 2 dimensioni, ovvero una matrice.
Una matrice può essere dunque considerata come una struttura con più indici che raggruppa dati dello stesso tipo e della stessa dimensione.

Si dichiara:

dim cognome_e_nome (1 to 30, 1 to 2) as string*20

Questa struttura occuperà, in memoria RAM, 30 x 20 x 2 celle, ovvero 1200 byte. Per inserire i dati nella struttura si fa riferimento a 2 indici.
Allora per riferirci al 5° cognome inserito in modo da assegnarlo ad una casella di testo di nome text1 si scriverà:

text1.text=cognome_e_nome (5 , 1)

Per riferirci al quinto nome inserito in modo da assegnarlo ad una casella di testo di nome text1 si scriverà:
text1.text=cognome_e_nome (5 , 2)


Il record

Il record è un dato strutturato composto di uno o più campi che possono contenere informazioni di diverso tipo.
Si può fare l'esempio di una scheda informativa relativa a un libro di una biblioteca o ad una scheda anagrafica.
Nel primo caso potremmo avere le seguenti informazioni: codice libro, autore, titolo, editore, prezzo, numero pagine.
Nel secondo caso avremmo: Cognome, Nome, indirizzo, luogo di nascita, data di nascita.
Dagli esempi fatti si capisce che il record raggruppa con un solo identificatore informazioni di tipo misto. Tali informazioni potranno essere utilizzate per essere inserite in un vettore o in un file.
Per strutturare un tipo record si procede così:

type anagrafe

Cognome as string*40
Nome as string*40
Indirizzo as string*60
luogo_nascita as string*40
data_nascita as date
end type

t1.text=cognome_e_nome (5 , 2)

L'array di record

Un array di record non è altro che un vettore, ovvero una variabile strutturata, che contiene record e risiede in memoria RAM per il tempo necessario alle varie elaborazioni.

Esempio:
immaginiamo di voler mettere in ordine un file secondo un certo criterio.

Visto che la memoria RAM ha un accesso rapidissimo e quindi l'elaborazione di ordinamento sarebbe molto più veloce, è consigliabile:

  1. collocare nella memoria RAM, in un array di record, l'intero file (se questo non ha dimensioni notevoli)
  2. ordinare l'array di record (ad es. con il metodo bubble sort)
  3. trasferire l'array di record ordinato nel file


Il file

Il file è un insieme di informazioni strutturate memorizzate su un supporto esterno (hard disk, floppy, cd ...).

Distinguiamo diverse tipologie di files:
  • files di testo, composti da una sequenza di caratteri alfanumerici privi di formato
  • files di comandi, ovvero sequenze di istruzioni (programmi)
  • files multimediali (.gif, .jpg, .wav, mpg,...) che possono essere letti solo con appositi programmi
  • files di record

I files di record sono quelli di cui parleremo. Più precisamente tratteremo i files con record a lunghezza fissa o determinata. Possiamo dunque dire che questi file sono come degli schedari di informazioni e che ogni record è una scheda. Si può fare l'esempio di uno schedario di biblioteca dove ogni scheda raccoglie varie informazioni su ogni libro (autori, titolo, prezzo ...). Queste informazioni vengono raccolte in campi che hanno una dimensione massima prefissata.

Operazioni sui files
Le principali operazioni da svolgere sui file sono: apertura, aggiunta dati, modifica dati, lettura, ordinamento, selezione.
Nella tabella seguente sono riepilogate le istruzioni principali in basic. Le istruzioni sono relative ai files ad accesso casuale (RANDOM):

ISTRUZIONE BREVE SPIEGAZIONE ESEMPIO
OPEN file_fisico FOR Random AS #buffer LEN= lunghezza_record Con l'istruzione OPEN si consente l'accesso al file. Per file_fisico si intende il nome che il file ha sul supporto fisico (es. "mia_cartella\dati.mio"; il buffer è l'area di memoria RAM nella quale viene collocato il singolo record letto dal supporto o da scrivere sul supporto; la lunghezza_record è data dalla somma in byte relativa all'insieme dei campi del record OPEN "archivi\dati.mio" FOR Random AS #1 LEN=100
GET#buffer, posizione, variabile_record Con l'istruzione GET si legge il record fisico che si trova in una certa posizione nel file e si trasferiscono tutte le informazioni nell'area buffer GET#1, 3, rec
PUT#buffer, posizione, variabile_record Con l'istruzione PUT si trasferiscono le informazioni accumulate nell'area buffer sul record fisico in una certa posizione del file. PUT#1, 3, rec

Osservazioni e approfondimenti:


Nei files ad accesso casuale è necessario dichiarare la lunghezza del record all'apertura in quanto il sistema ha bisogno di un'unità di misura con la quale spostarsi immediatamente nelle varie posizioni. Ad esempio, se voglio leggere il record n. 4 e la lunghezza del record è 50 il sistema si sposterà dall'inizio del file di 50 x 4 = 200 byte.