1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
unit unibpj4 ;
{$mode objfpc}{$H+}
{$static off}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, graph, crt, LclIntf, LclType, windows;
type
{ TNomHello }
TNomHello = class(TForm)
Button2: TButton;
Button4: TButton;
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
PMaillon = ^Maillon ;
Maillon = record
Valeur : integer;
ValeurSuivante : Pmaillon
end;
var
x, y, Y1: integer;
NomHello: TNomHello;
Pilote : smallint;
Mode : smallint;
implementation
procedure TNomHello.Button2Click(Sender: TObject);
begin
Close;
end;
procedure ModeGraphique;
begin
Pilote := detect ;
Initgraph( Pilote, Mode,'');
If GRAPHRESULT <> GROK
Then HALT(1) ;
end;
procedure ListeChainee;
Const
CnbElem : Integer = 10 ;
Var
premier : Pmaillon ;
precedent : Pmaillon ;
actuel : Pmaillon ;
begin
ModeGraphique;
x := 200 ;
y := 0 ;
OutTextXY( x, y, 'Liste debut' );
new(premier); (* le 1er est particulier : si on le perd, on perd la liste *)
{ write('1ère valeur ? ');
readln(premier^.valeur); (* lecture de l'enregistrement VALEUR
de la variable d'adresse (pointée par) PREM *)
premier^.valeur := 15 ;
precedent:=premier;
for i:=2 to CnbElem do
begin
new(point); (* création d'une nouvelle variable *)
write(i,'ième valeur ? ');
readln(point^.valeur);
precedent^.suivant:=point; (* mise à jour du chaînage *)
precedent:=point (*se préparer pour la prochaine boucle*)
end;
precedent^.suivant:=NIL;
(* NIL signifie "rien" car 0 est un entier, non une adresse *)
point:=prem; (* heureusement, on se souvient du premier *)
for i:=1 to n do begin
writeln(point^.valeur);
point:=point^.suivant (* pour la prochaine boucle *)
end
}
end; {fin ListeChainee}
procedure TNomHello.Button4Click(Sender: TObject);
begin
Listechainee;
end;
procedure TNomHello.FormCreate(Sender: TObject);
begin
end;
initialization
{$I unibpj4.lrs}
end. |
Partager