|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 3840 (0xf00)
Types: TextFile
Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
└─⟦124ff5788⟧ »DATA«
└─⟦this⟧
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
└─⟦6f12a12be⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
package body Systexpertse4 is
-- les variables internes :
type Tcontexte is (Contexte0, Contexte1, Contexte2);
Contexte : Tcontexte := Contexte0;
-- les variables de l'application :
Couples : Tuplecollection.Object;
Coupleideal : Tuple.Object;
-- les fonctions necessaires pour les regles intra-fait :
function Caentre (R1, R2 : Reference) return Boolean is
begin
return (Boites.Taille (R1) > Briques.Taille (R2));
end Caentre;
function Apparier is new Tuplecollection.Join2 (Caentre);
function Ecartminimal (Lemeilleur, Unautre : Tuple.Object) return Boolean is
begin
return Boites.Taille (Tuple.First (Lemeilleur)) -
Briques.Taille (Tuple.Second (Lemeilleur)) <
Boites.Taille (Tuple.First (Unautre)) -
Briques.Taille (Tuple.Second (Unautre));
end Ecartminimal;
function Lemeilleurcouple is new Tuplecollection.Themost (Ecartminimal);
-- regles a utiliser dans le contexte 0 :
function Regle0 return Boolean is
begin
-- domaine d'application des regles 0:
-- si il existe des couples (brique, boite) dans les ensembles de boites et de
-- briques qui sont libres tel que la brique rentre dans la boite alors choisir
-- le couple le mieux adapte (le moins de place perdue) et mettre la brique
-- dans la boite
-- preparation de la condition
-- 1ere restriction : cherche les boites libres
-- cherche les briques libres
-- SI EXISTE BOITES <BO> LIBRES ...
Cboite := Lesboites;
-- SI EXISTE BRIQUES <BR> LIBRES ...
Cbrique := Lesbriques;
-- on essaye d'apparier 2 a 2
-- SI BOITE <BO> CONVIENT PHYSIQUEMENT AVEC BRIQUE <BR> ...
Couples := Apparier (Cboite, Cbrique, 2000);
-- evaluation de la condition :
-- (REGLE 0-A)
-- SI IL NE RESTE PLUS DE PAIRES <BO>,<BR> ALORS CHANGEMENT DE CONTEXTE
if Tuplecollection.Isnull (Couples) then
Contexte := Contexte1;
return (True);
end if;
-- REGLE 0-B
-- SI IL Y A DES PAIRES <BO>,<BR> ALORS CHERCHER LA MEILLEUR DE CES PAIRES ...
if not Tuplecollection.Isnull (Couples) then
Coupleideal := Lemeilleurcouple (Couples);
-- ET ATTRIBUER L'UN A L'AUTRE ...
Put_Line (" MEILLEUR COUPLE ACTUEL ");
Occuper (Tuple.First (Coupleideal));
Emballer (Tuple.Second (Coupleideal));
return (True);
end if;
-- REGLE 0-C ...
-- etc ... autres regles du contexte 0
return (False); -- fin des regles de REGLE0
end Regle0;
function Regle1 return Boolean is
begin
-- prepa conditions
-- REGLE 1-A
-- SI BUT NON ATTEINT ALORS CONTINUER VERS LE BUT
if not Butatteint then
Continuer;
return (True);
end if;
-- REGLE 1-B
-- SI BUT ATTEINT ALORS CALCULER LES RESULTATS GLOBAUX PUIS AFFICHER CELUI
-- QUI ETAIT RECHERCHE
if Butatteint then
Calculerfact;
Afficherfact;
return (False); -- fini
end if;
-- REGLE 1-C ...
return (False); -- fin des regles de REGLE 1
end Regle1;
-- MISE EN ROUTE DU MOTEUR DU S-E
procedure Enroute is
begin
-- creation des objets : REGLE 0
Boites.Enroute;
Briques.Enroute;
-- creation des objets : REGLE 1
Nombres.Enroute;
end Enroute;
-- ENTRETIENT DU MOTEUR DU S-E
function Continue return Boolean is
Resu : Boolean;
begin
case Contexte is
when Contexte0 =>
Resu := Regle0;
when Contexte1 =>
Resu := Regle1;
when others =>
Resu := False;
end case;
return (Resu);
end Continue;
end Systexpertse4;