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 - 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;