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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
| program pjLexiqueDUMAST;
// ------------------------------------------------------------------------------//
// Cette application permet de gérer un lexique de termes. //
// Il est souhaitable de trouver un thème. Exemple : Informatique ou Médical //
// On travaille avec un vecteur en mémoire centrale et pour assurer la pérénité //
// des données, on les enregistre dans un fichier lorsqu'on quitte l'application.//
//-------------------------------------------------------------------------------//
{$APPTYPE CONSOLE}
uses
SysUtils;
Const
cheminFichier = 'FichierLexique.dta';
TYPE
mot20 = string[20];
mot255 = String[255];
Elementstd = record
terme : mot20;
definition : mot255;
End;
TabElement = array[1..100] of Elementstd;
FichierElement = file of Elementstd;
var
Lexique : TabElement;
FileLexique : FichierElement;
NbMots : integer;
vchoix : integer;
libterme : mot20;
//Cette procédure permet de générer le vecteur à partir du fichier de sauvegarde
Procedure ChargerLexique(out Lexique : TabElement; out NbMots : integer);
Var
vinterm : Elementstd;
i : integer;
begin
AssignFile(FileLexique, cheminFichier); //assignation de la variable au fichier physique
{$I-} //directive de compilation pour intercepter une erreur d'entrée sortie
Reset(FileLexique); //ouverture du fichier en lecture-écriture
{$I+}
if IOResult = 0 then //test de la variable système IOResult (Input Output Result)
begin
writeln('Le fichier lexique a été ouvert avec succès !!');
//le fichier est ouvert en lecture-écriture. (on est placé au début du fichier)
I := 0;
While (not eof(FileLexique)) AND (I < 100) do //boucle de parcours du fichier jusqu'à la fin du fichier
//on s'assure dans la condition qu'on ne dépasse pas la capacité du vecteur.
begin
Read(FileLexique,vinterm); //on prend l'enregistrement qu'on recopie dans la variable intermédiaire.
i := i + 1;
Lexique[i] := vinterm; //on met la variable intermédiaire dans le tableau
end;
Nbmots := i;
end
else
begin
writeln('Le fichier lexique n''existe pas ! Le lexique sera vide');
//Puisque le fichier n'existe pas on le crée avec Rewrite.
//Il sera créé avec aucun enregistrement pour l'instant
Rewrite(FileLexique);
Nbmots := 0;
end;
end;
// Cette procédure sauvegarde le vecteur Lexique dans le fichier
procedure SauvegarderLexique (const Lexique : TabElement; const NbMots : integer);
Var
i : integer;
vinterm : elementstd;
begin
REWRITE(FileLexique); //ouverture du fichier en écriture. Attention! Danger! On recrée le fichier.
//Donc s'il contenait des informations, elles sont détruites.
I := 1;
While I <= Nbmots Do //boucle pour traiter tous les enregistrements du vecteur.
begin
vinterm := Lexique[I]; //copie de la cellule dans la variable intermédiaire
write(FileLexique, vinterm); //copie de la variable intermédiaire dans le fichier
I := I + 1;
end;
end;
procedure AjouterDefinition (var Lexique : TabElement; var Nbmots : Integer);
Var
vrep : char;
begin
vrep := 'o';
While (vrep = 'o') and (Nbmots < 100) DO
begin
Writeln('Indiquez le terme a definir : ');
Readln(Lexique[Nbmots + 1].terme);
Writeln('Indiquez la definition de ce terme : ');
Readln(Lexique[Nbmots + 1].definition);
Nbmots := Nbmots + 1;
SauvegarderLexique (Lexique, NbMots);
Writeln('');
Writeln('');
Writeln('Voulez vous saisir un autre terme ainsi que sa definiton ? o/n ');
Readln(vrep);
end;
end;
procedure Listedefinition (const Lexique : TabElement; const Nbmots : Integer);
Var
vi : integer;
begin
vi := 1;
While vi <= Nbmots DO
begin
Writeln(Lexique[vi].terme,' ---> ' , Lexique[vi].definition);
Writeln('');
Writeln('');
vi := vi + 1;
end;
end;
procedure RechercheDefinition (const Lexique : TabElement; const Nbmots : Integer; const libterme : mot20);
Var
vi : integer;
begin
vi :=1;
While vi <= Nbmots DO
begin
If (libterme = Lexique[vi].terme) Then
begin
Writeln(Lexique[vi].definition);
end;
vi := vi+1;
end;
end;
procedure RechercheMot (const Lexique : TabElement; const Nbmots : Integer; const motRecherche : mot20);
var
vi : Integer;
vlex : elementstd;
vt : Integer;
begin
vi := 1;
while vi <= Nbmots do
begin
vlex := Lexique[vi];
vt := Pos(AnsiLowerCase(motRecherche), AnsiLowerCase(vlex.definition));
if vt <> 0 then
begin
Writeln(vlex.terme, ' ---> ' , vlex.definition);
end;
vi := vi + 1;
end;
end;
//-------------------------- Début du programme principal ----------------------//
begin
ChargerLexique(Lexique, NbMots);
Vchoix := 0;
While Vchoix <> 5 DO
begin
Writeln('');
Writeln(' Bienvenue dans le lexique ');
Writeln('-----------------------------------------------');
Writeln('');
Writeln('1) Saisie d"une nouvelle definition dans le lexique ' );
Writeln('2) Liste de toutes les définitions enregistrées' );
Writeln('3) Rechercher dans les noms des éléments du lexique');
Writeln('4) Rechercher dans les définitions des éléments du lexique');
Writeln('');
Writeln('Indiquez votre choix :');
Readln(Vchoix);
Writeln('');
case Vchoix of
1: begin
AjouterDefinition(Lexique, Nbmots);
end;
2: begin
Listedefinition(Lexique, Nbmots);
end;
3: begin
Writeln('Veuillez saisir un terme dont vous ne connaissez pas la definition');
Readln(libterme);
Writeln('');
RechercheDefinition(Lexique, Nbmots, libterme);
end;
4: begin
Writeln('Veuillez saisir un mot contenu dans la definition recherchée');
Readln(libterme);
Writeln('');
RechercheMot(Lexique, Nbmots, libterme);
end;
end;
Readln;
end. |
Partager