3.3.3.8 Algorithme pour la fonction recursive tarrgts ():
Cet algorithme crée, pour chaque type
d'opérateurs, toutes les combinaisons d'instances en tenant compte des
nombres de cet opérateur dans le circuit et en bibliothèque.
t_arrgts ( Variables :ch :pointeur sur caractère ;
p, pos : entier ;
ptr1 : variable qui pointe sur un élément de
type
COMB_ TYP_OP ;
ptr11 : variable qui pointe sur un élément de type
INSTANCE ;) : Variables : c, c1 : caractère ;
ch11, ch12 : variables qui pointent sur des chaîne de
caractères;
ch1 [5] : chaîne de caractères;
j, k, l : entier ;
DEBUT
Si (p==0)
Alors {
num := num+1 ;
Allocate (ptr1) ;// Allocation de l'espace mémoire pour le
pointeur ptr1 ; head_instance := 0 ;
ptr1-)next := 0 ;
//Faire appel a la fonction inserer2 ()
inserer2 (ptr1) ;
Pour (l:=0 ; svg_chaine [l] ? `\0' ; l++)
Faire {
Allocate (ptr11) ; /*Allocation de l'espace mémoire pour
le pointeur ptr11*/
ptr11-)next :=0 ;
ptr11-)nom_fichier := contenu de typ_op ;
ch_tmp [0] := svg_chaine [l] ;
ch_tmp [1] := `\0' ;
ptr11-)nom_fichier = contenu de ch_tmp ;
inserer3 (ptr11); }
Ffaire
ptr1-)head := head_instance ;
return ;
}
Fsi
ch11:=ch ;
Tant que non fin de la chaine de caractères ch11
Faire {Lire de cette chaîne un caractère et le
mettre dans c ;
Pour (j:=p ; j>0 ; j:=j-1)
Faire {
Pour (k :=j, l :=pos ; k>0, k :=k-1)
Faire svg_chaine [l++] := c ;
Ffaire
svg_chaine [l] := `\0' ;
l :=0 ;
ch12 := adresse de chaine [0] ;
Tant que non fin de la chaîne de caractères ch12
Faire {
Lire de cette chaîne un caractère et le mettre dans
c1 ; Si (c1 ? c)
Alors ch1[l++] := c1 ;
Fsi
Ffaire
ch1[l] := '\0' ;
// Faire appel a la fonction récursive t_arrgts ()
t_arrgts ( ch1, p-j, pos+j, ptr1, ptr11) ;
}
Ffaire
}
Ffaire
}
FIN
Ffaire
3.3.3.9 Algorithme pour la fonction inserer () :
Cette fonction permet d'insérer dans une liste un type
d'opérateur utilisé dans le circuit.
DEBUT
Si (head_operateurs ? 0)
Alors {
ptr-)next := head_operateurs ; head_operateurs-)prev := ptr ;
}
Fsi
head _operateurs := ptr ;
FIN
3.3.3.10 Algorithme pour la focntion inserer2 () :
Cette fonction permet d'insérer dans une liste un
élément qui correspond à une combinaison d'instances.
DEBUT
Si (head_comb_typ_op ? 0)
Alors {
ptr1-)next := head_comb_typ_op ;
}
Fsi
head _comb_typ_op := ptr1 ;
FIN
3.3.3.11 Algorithme pour la focntion inserer3 () :
Cette fonction permet d'insérer une combinaison
d'instances d'un type d'opérateur donné.
DEBUT
Si (head_instance ? 0) Alors {
ptr11-)next := head_instance ;
}
Fsi
head _instance := ptr11 ;
FIN
3.3.3.12 Algorithme pour la fonction inserer4 () :
Cette fonction permet d'insérer dans une liste une
configuration (combinaison de combinaisons d'instances.
DEBUT
Si (head_comb_ops ? 0)
Alors {
ptr_svg-)next := head_comb_ops ; head_comb_ops-)prev := ptr_svg ;
}
Fsi
head _comb_ops := ptr_svg ;
FIN
|