Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida Pascal - Il tipo derivato record

Guida Pascal

Capitolo 12° - Il tipo derivato record

<< Precedente Prossimo >>
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.
<< Precedente Prossimo >>
A proposito dell'autore

Programmatore e analista .NET 2005/2008/2010 (in particolare C# e VB.NET), anche nell'implementazione Mono per Linux. Conoscenze approfondite di Pascal, PHP, XML, HTML 4.01/5, CSS 2.1/3, Javascript (e jQuery). Conoscenze buone di C, LUA, GML, Ruby, XNA, AJAX e Assembly 68000. Competenze basilari di C++, SQL, Hlsl, Java.