• Aucun résultat trouvé

L’environnement de programmation de l’application

N/A
N/A
Protected

Academic year: 2021

Partager " L’environnement de programmation de l’application"

Copied!
1
0
0

Texte intégral

(1)

Annexe

(2)

*

L’environnement de programmation de l’application

L ’environnement de programmation que nous avons utilisé permet le développement facile de notre application. L’interface utilisateur peut être rapidement réalisée puisque l’environnement offre un ensemble de composants visuels qui simplifient la programmation de l’interface, tel que les boutons, les menus, les boites de dialogues, les zones d’éditions.

Aussi, cet environnement permet le développement d’applications multi-threads qui sont des applications qui contiennent plusieurs chemins d’exécution simultanés. Cet environnement offre des moyens pour réaliser la coordination et la synchronisation de plusieurs threads.

Nous présentons, dans ce qui suit, quelques aspects de réalisation de notre application

* L’interface

La classe de la forme principale de l’interface est programmée comme suit :

Type

TForm1 = class(TForm) MainMenu1: TMainMenu;

PVC1: TMenuItem;

Ouvrir1: TMenuItem;

Nouveau1: TMenuItem;

Enregistrer1: TMenuItem;

N1: TMenuItem;

N2: TMenuItem;

Quitter1: TMenuItem;

MultiAgents1: TMenuItem;

Executer1: TMenuItem;

Aide1: TMenuItem;

Apropos1: TMenuItem;

SG1: TStringGrid;

Panel1: TPanel;

Label1: TLabel;

Edit1: TEdit;

UD1: TUpDown;

BitBtn1: TBitBtn;

Label2: TLabel;

UD2: TUpDown;

Edit2: TEdit;

Label3: TLabel;

Edit3: TEdit;

UpDown1: TUpDown;

Button1: TButton;

SaveDialog1: TSaveDialog;

OpenDialog1: TOpenDialog;

procedure Edit1Change(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

procedure UD2Click(Sender: TObject; Button: TUDBtnType);

procedure SG1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);

procedure Executer1Click(Sender: TObject);

(3)

procedure Nouveau1Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Quitter1Click(Sender: TObject);

procedure Apropos1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Enregistrer1Click(Sender: TObject);

procedure Ouvrir1Click(Sender: TObject);

end;

Le code de la procédure de remplissage aléatoire de la matrice d’incidence, qui représente le graphe du problème du voyageur de commerce, est le suivant :

procedure TForm1.BitBtn1Click(Sender: TObject);

Var i,j:integer;

begin

button1.Enabled:= true;

For i:=1 to ud1.position do For j:=1 to ud1.position do mat[i,j]:=0;

Randomize;

For i:=1 to UD1.Position do For j:=i+1 to UD1.Position do begin

SG1.Cells[i,j]:=IntToStr(Random(1000)+1);mat[i,j]:=strtoint(SG1.Cells[i,j]);

SG1.Cells[j,i]:=SG1.Cells[i,j];

mat[j,i]:=mat[i,j];

end;

end;

* La classe Agent de Recherche

TAgentR = Class(TThread) Private

Candidats : Tliste ; S : Tetat;

Cout1 : réel ; successeurs : tsucs ;

Procedure Execute; override;

Procedure initialiser (var s1 :Tetat ;var cout ,nbre_v :integer );

Function different_but (s1 :Tetat): boolean;

Procedure generer_succs(s1 :Tetat ; suc :Tsuccesseurs);

Procedure minimum(s1 :Tetat);

Function visiter ( x: integer):boolean;

Procedure Emission(m :Tmessage) ; Procedure Reception (m :Tmessage) end;

(4)

Par exemple, le code de la procédure Minimum détermine le successeur ayant l’estimation minimale est le suivant :

Procedure TAgentR.Minimum(var s1 :Tetat);

Var dmin,i,num_su : integer;

begin num_su:=0;

dmin:=10000;

For i:=1 to nbre_villes do begin

if (successeurs[i].distance<dmin) then

if (successeurs[i].distance>0)and not visiter(successeurs[i].num_ville) then begin

dmin:=succsesseurs[i].distance;

num_su:= succsesseurs[i].num_ville;

end;

end;

indice:=indice+1;

s1[indice]:=num_su;

cout1:=cout1+mat[s1[indice-1]+1,num_su+1];

end;

- La déclaration d’une instance Agent_Recherche de la classe précédente peut être effectuée comme suit : Var Agent_Recherche : TagentR ;

- Le lancement d’exécution d’un agent Agent_Recherche est effectué comme suit : Agent_Recherche := TagentR.create(false) ;

- Le nombre maximal d’agents de recherche est 30 agents. Pour cela, on utilise la déclaration suivante :

Var liste_agents_Recherche : Array[1..30] of TagentR ;

* La classe Agent Coordinateur Type

TAgCoord = Class(TThread) Private

Liste_prop :Tlisteprop ; Liste_min,Lite_max : Tliste ;

Procedure Reception_prop(m :Tmessage);

Procedure Evaluation_prop(m : Tmessage);

Procedure Envoyer(m :Tmessage);

Procedure Execute; override;

end;

(5)

- La déclaration d’une instance de la classe TagCoord est la suivante : Var Agent_Coordinateur : TagCoord ;

- Le lancement d’exécution de l’agent Coordinateur est effectué comme suit : Agent_Coordinateur := TagCoord.create(false) ;

Références

Documents relatifs

Exercice 4 : La combustion complète de 0.35 g d’un composé A de formule brute C x H y a donné 0,45 g d’eau. Déduire celui du carbone.. 2/ a- Sachant que la masse molaire de A est

marge brute – remise – prix d’achat net – prix de vente hors taxe – coût d’achat prix de vente toute taxe comprise – prix d’achat net – frais d’achat – prix

Le soumissionnaire remet, comme pièce constitutive de son offre, un document par lequel il marque son engagement à mettre en œuvre

* Détermination de la graduation 100 : on plonge le réservoir du thermomètre dans de l’eau en ébullition sous la pression atmosphérique normale.. Le liquide dans le capillaire

Si le vendeur était de mauvaise foi (c’est-à-dire s’il connaissait les vices de la chose) il devra, en plus du remboursement du prix, verser des dommages et intérêts à

- Avoir suivi une formation pratique avec un enseignant expert de l’école de conduite (20 heures minimum). - Bénéficier d’une évaluation favorable de la part de son enseignant de

Regrouper les valeurs dans le tableau ci-dessous ; les résultats donnés précédemment correspondent à la classe A, les valeurs déjà inscrites correspondent

Je suis un entier égal au produit de six nombres premiers distincts. La somme de mon inverse et des inverses de mes six facteurs premiers est égale