|
Un record (che chiameremo sempre struttura) è un tipo nuovo di variabile, definito dal programmatore. Non è altro che linsieme di più tipi diversi e reimpostati. In una struttura ci sono più variabili diverse, chiamate campi, che sono accessibili con loperatore . (punto). Vediamo un esempio:
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 lespressione:
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 letà: );
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 ununica 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: questultimo possiede al proprio interno un campo di tipo tipo1. Per accedere ad ogni singolo campo si possono usare anche più di un punto.
Lindicazione 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 lelemento 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.
|
|