3.3.3.7 Algorithme pour créer les différentes
listes :
Cet algorithme, avec l'appel d'autres procédures,
permet de créer les différentes listes nécessaires pour le
traitement. Ces listes sont déterminées en considérant,
pour chaque type d'opérateur utilisé dans le circuit, toutes les
combinaisons possibles en se basant sur le nombre d'instances de cet
opérateur qui sont présentes en bibliothèque ainsi que sur
le nombre d'instances utilisées. Dans tous nos algorithmes, nous avons
utilisé les variables suivantes :
- la variable ptr permet de parcourir la liste de tous les
opérateurs utilisés dans le circuit.
- la variable ptr1 permet de parcourir la liste des combinaisons
possibles pour un type d'opérateurs donné.
- la variable ptr11 permet d'accéder aux fichiers
contenant les caractéristiques des instances qui constituent une
combinaison donnée d'instances de même type.
Variables : chaine [20], svg_chaine [20], typ_op[20] :
chaîne de caractères; num : entier;
ch_tmp[2] : chaîne de caractères;
/* Variables externes :
Début
head_operateurs variable qui pointe sur un élément
de type OPERATEURS ; head_comb_typ_op variable qui pointe sur un
élément de type COMB_TYP_OP;
head_instance variable qui pointe sur un élément de
type INSTANCE; head_comb_ops variable qui pointe sur un élément
de type COMB_OPS; Fin Déclaration des variables externes */
void inserer(OPERATEURS *);
void inserer2(COMB_TYP_OP *);
void inserer3(INSTANCE *);
create_lists ():
Variables : ptr : variable qui pointe sur un
élément de type OPERATEURS ; ptr1 : variable qui pointe un
élément de type COMB_TYP_OP ; ptr11 : variable qui pointe sur un
élément de type INSTANCE ; fp : Pointeur de Fichier ;
ch : pointeur sur une chaîne de caractères;
temp [2] : chaîne de caractères ;
c : caractère ;
i : entier ;
nb_instances_bibl, nb_instances_systm : entier ;
DEBUT
Si ( Erreur d'ouverture du fichier DONNEES)
Alors Afficher (`'Erreur d'ouverture du fichier DONNEES») ;
exit ;
Fsi
Tant que non fin du fichier DONNEES
Faire {
Lire le type d'opération ; // typ_op
Lire le nombre d'instances dans la bibliothèque ; Lire le
nombre d'instances dans le système
Si (nb_instances_systm ? 0)
Alors {
Allocate (ptr) ;// Allocation de l'espace mémoire pour le
pointeur ptr head_comb_typ:=0 ;
ptr-)operateur := contenu de la chaîne typ_op ; ptr-)next
:= 0 ;
ptr-)prev := 0 ;
ch :=adresse de chaine[0] ;
Pour (i :=1 jusqu'à nb_instances_bibl)
Faire {
temp := i ;
*ch++ := temp[0] ;
}
Ffaire
*ch := `\0' ;
ch:= adresse chaine[0] ;
num :=0 ;
//Faire appel a la fonction récursive t_arrgts () t_arrgts
(ch, nb_instances_systm, 0, ptr1, ptr11) ; ptr-)head := head_comb_typ_op ;
inserer (ptr) ;
Fsi
}
FIN
Ffaire
LSHIFT
COMP
ADD
COMP6
COMP6
COMP6
ptr11
COMP1
COMP1
COMP1
ptr1
LSHIFT1
LSHIFT2
ptr11
LSHIFT7
ptr1
...
ptr
ADD1
ADD1
ptr11
ptr1
ADD4
ADD4
ADD1
ADD2
Figure 3.1 : Schéma des différentes listes
chaînées.
|