Un record (che chiameremo sempre struttura) è un tipo nuovo di variabile, definito dal programmatore. Non è altro che l’insieme di più tipi diversi e reimpostati. In una struttura ci sono più variabili diverse, chiamate campi, che sono accessibili con l’operatore ‘.’ (punto). Vediamo un esempio:
Questa dichiarazione rende accessibile il tipo ‘persona’ come tipo di dato, nel quale ci sono 4 campi, eta, nome, cognome e professione. La riga persona=record definisce il nome della struttura. Quindi, per dichiarare una struttura si usa l’espressione:
type
<nome>=record
<campo1>:<tipo>;
<campo2>:<tipo>;
...
end;
Ora vediamo come si usa sul piano pratico, prendendo sempre le struttura persona, definita in precedenza:
Per accedere ad un qualsiasi campo di dati di una struttura si usa il punto.
Nondimeno, ci possono essere anche array e altre strutture in un’unica struttura, ad esempio:
Si sono dichiarate due strutture, tipo1 e tipo2: quest’ultimo possiede al proprio interno un campo di tipo tipo1. Per accedere ad ogni singolo campo si possono usare anche più di un punto.
L’indicazione di un indice di un array è da specificare sempre vicino alla variabile di cui è indice, ad esempio:
b.t[2] (*E’ sbagliato, perché, per indicare l’elemento 2 di b si deve scrivere*)
b[2].t
Piccola nota finale: la funzione chr(x:byte) resituisce il carattere numero x in base alle tabelle ASCII.
type persona=record eta:byte; nome:string[40]; cognome:string[50]; professione:string[55]; end;
Questa dichiarazione rende accessibile il tipo ‘persona’ come tipo di dato, nel quale ci sono 4 campi, eta, nome, cognome e professione. La riga persona=record definisce il nome della struttura. Quindi, per dichiarare una struttura si usa l’espressione:
type
<nome>=record
<campo1>:<tipo>;
<campo2>:<tipo>;
...
end;
Ora vediamo come si usa sul piano pratico, prendendo sempre le struttura persona, definita in precedenza:
Program Esempio6; Uses Crt; type persona=record eta:byte; nome:string[40]; cognome:string[50]; professione:string[55]; end; Var qualcuno:persona; begin clrscr; writeln(‘Inserire il nome e il cognome della persona.’); readln(qualcuno.nome,qualcuno.cognome); write(‘Inserire l’’età: ‘); readln(qualcuno.eta); write(‘e la professione: ‘); readln(qualcuno.professione); write(qualcuno.nome,’ ‘,qualcuno.cognome,’ ha ‘,qualcuno.eta); writeln(‘anni e fa il ‘,qualcuno.professione); readln end.
Per accedere ad un qualsiasi campo di dati di una struttura si usa il punto.
Nondimeno, ci possono essere anche array e altre strutture in un’unica struttura, ad esempio:
(*...*) type tipo1=record vettore:array[1..29] of char; n:array[1..99,2..98] of byte; t:text; end; type tipo2=record esempio:tipo1; stringa:string[167]; vettore:array[1..10] of char; end; Var a:tipo2; b:array[1..56] of tipo1; (*...*) write(a.esempio.vettore[3]); a.vettore[3]:=chr(a.esempio.n[76,23]); read(b[45].n[3,78]); (*...*)
Si sono dichiarate due strutture, tipo1 e tipo2: quest’ultimo possiede al proprio interno un campo di tipo tipo1. Per accedere ad ogni singolo campo si possono usare anche più di un punto.
L’indicazione di un indice di un array è da specificare sempre vicino alla variabile di cui è indice, ad esempio:
b.t[2] (*E’ sbagliato, perché, per indicare l’elemento 2 di b si deve scrivere*)
b[2].t
Piccola nota finale: la funzione chr(x:byte) resituisce il carattere numero x in base alle tabelle ASCII.
A cura di: Il Totem