Une façon d'obtenir un type structuré est de rassembler en une seule variable des éléments différents. Par exemple un nombre complexe représente sa partie réelle et sa partie imaginaire. Une date, c'est trois informations, à savoir le jour, le mois et l'année.
Un est une structure qui consiste en un nombre fixe de composants appelés champs. Ces composants (à la différence des tableaux) n'ont pas besoin d'être du même type, il faudra donc pour chaque composante définir son identificateur et son type.
:
type enr=record S1 : T1;
S2 : T2;
Sn : Tn;
end;
program P;
type complexe = record reelle : real;
imaginaire : real;
end;
var z : complexe;
function modu(z:complexe):real;
begin
modu:=sqrt(sqr(z.reelle)+sqr(z.imaginaire));
end;
procedure saisie(var z : complexe);
begin
writeln('entrez la partie reelle');
readln(z.reelle);
writeln('entrez la partie imaginaire');
readln(z.imaginaire);
end;
begin
saisie(z);
writeln('Le module du nombre complexe entre est ',modu(z));
end.
(Remarque : la déclaration du type complexe pouvait aussi s'écrire:
type complexe = record reelle, imaginaire : real; end;)
Un des champs du record peut lui-même être un objet de type
record.
program E;
type etudiant = record
nom, section : string;
moyenne : real;
date : record
jour : 1..31;
mois : 1..12;
annee : integer;
end;
end;
var etud : etudiant;
procedure entree(var e : etudiant);
begin
writeln('entrez le nom de l etudiant');
readln(e.nom);
writeln('entrez sa section');
readln(e.section);
writeln('sa moyenne');
readln(e.moyenne);
writeln('sa date de naissance->');
writeln(' jour');
readln(e.date.jour);
writeln(' mois');
readln(e.date.mois);
writeln(' annee');
readln(e.date.annee);
end;
procedure affiche(e : etudiant);
begin
writeln(e.nom);
writeln(e.section);
writeln('Ne le ',e.date.jour, e.date.mois, e.date.annee);
end;
begin
entree(etud);
affiche(etud);
end.
On peut combiner enregistrements et tableaux.
program promo;
const n=120;
type etudiant=record
nom, section:string;
moyenne : real;
date : record
jour : 1..31;
mois : 1..12;
annee: integer;
end;
end;
type Filiere=array[1..n] of etudiant;
var MIASMASS2 : Filiere;
etud : etudiant;
procedure entree(var e : etudiant);
begin
writeln('entrez le nom de l''''etudiant');
readln(e.nom);
writeln('entrez sa section');
readln(e.section);
writeln('sa moyenne');
readln(e.moyenne);
writeln('sa date de naissance->');
writeln(' jour?');
readln(e.date.jour);
writeln(' mois');
readln(e.date.mois);
writeln(' annee');
readln(e.date.annee);
end;
procedure saisie(var T : Filiere);
var i : integer;
begin
for i:=1 to n do
entree(T[i]);
end;
procedure plusjeune(T:Filiere; var E:etudiant);
var i : integer;
begin
E :=T[1];
for i:=2 to n do
if T[i].date.annee>E.date.annee then E:=T[i]
else if T[i].date.annee=E.date.annee then
if T[i].date.mois>E.date.mois then E:=T[i]
else if T[i].date.mois=E.date.mois then
if T[i].date.jour>E.date.jour then E:=T[i];
end;
procedure affiche(e : etudiant);
begin
writeln(e.nom);
writeln(e.section);
writeln('Ne le ',e.date.jour, ', ', e.date.mois, ', ', e.date.annee);
end;
begin
saisie(MIASMASS2);
plusjeune(MIASMASS2, etud);
affiche(etud);
end.