Changes between Version 1 and Version 2 of 2010CaoTme3
- Timestamp:
- Mar 19, 2010, 6:57:41 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
2010CaoTme3
v1 v2 2 2 3 3 4 = Représentation d'une Structure Booléenne Multi-niveaux (EBM) = =4 = Représentation d'une Structure Booléenne Multi-niveaux (EBM) = 5 5 6 6 Les fichiers nécessaires à la réalisation de ce TME sont disponibles … … 38 38 __Principales méthodes de la classe {{{Ebm}}}:__ 39 39 * {{{litterals()}}} : retourne le nombre de littéraux de l'{{{EBM}}}. C'est à dire le nombre 40 41 * {{{support()}}} 42 43 40 de fois que des variables apparaissent dans l'expression. 41 * {{{support()}}} : retourne le support de l'{{{EBM}}} sous forme d'ensemble ({{{set<>}}}) 42 Le support est l'ensemble des variables nécessaire pour calculer la 43 valeur de l'expression. 44 44 * {{{support(std::ostream&)}}} : Affiche le support dans un flux, voir l'exemple d'éxécution 45 45 du programme de test fourni plus bas. 46 46 * {{{display(std::ostream&)}}} : Affiche l'{{{EBM}}} sous sa forme humainement lisible, en 47 48 * {{{eval()}} 49 50 {{{Low}}}, {{{High}}} et {{{Unknown}}} (cf. {{{CaoTypes.h}}}.51 * {{{parse()}}} 52 47 notation ''préfixée''. 48 * {{{eval()}}} : Calcule la valeur de l'expression booléenne. Le type de retour est un 49 {{{ValueType}}}, c'est à dire une variable pouvant prendre trois valeurs: 50 {{{Low}}}, {{{High}}} et {{{Unknown}}} (cf. {{{CaoTypes.h}}}). 51 * {{{parse()}}} : Une fonction statique transformant une chaîne de caractères en une 52 {{{EBM}}}. 53 53 54 54 … … 83 83 * {{{_name}}} : Le nom de la variable (par ex. {{{"a"}}}) 84 84 * {{{_value}}} : La valeur actuellement affectée à la variable 85 85 ({{{Low}}}, {{{High}}} ou {{{Unknown}}}). 86 86 * {{{_index}}} : Un index permettant d'identifier de façon unique la 87 variable. Cet index trouvera sont utilité dans le 88 TME suivant, présentant les {{{ROBDD}}}. 87 variable. Cet index trouvera sont utilité dans le TME suivant, présentant les {{{ROBDD}}}. 89 88 90 89 91 90 __Attributs ''statiques'' de la classe {{{EbmVar}}}:__ 92 91 * {{{_maxIndex}}} : Le compteur utilisé pour générer des index uniques 93 (mécanisme identique à celui utilisé pour les vecteurs 94 lors du TME1). 95 * {{{_byName}}} : Une table associative permettant de retrouver ''n'importe 96 quelle'' variable sachant son nom. 97 * {{{_byIndex}} : Une table associative permettant de retrouver ''n'importe 98 quelle'' variable sachant son index. 92 (mécanisme identique à celui utilisé pour les vecteurs lors du TME1). 93 * {{{_byName}}} : Une table associative permettant de retrouver ''n'importe 94 quelle'' variable sachant son nom. 95 * {{{_byIndex}}} : Une table associative permettant de retrouver ''n'importe 96 quelle'' variable sachant son index. 99 97 100 98 __Principales méthodes de la classe {{{EbmVar}}}:__ … … 103 101 * {{{getValue()}}} : accesseur retournant la valeur. 104 102 * {{{setValue()}}} : modificateur de la valeur. 105 * {{{get()}}} 106 103 * {{{get()}}} : deux surcharge différentes pour retrouver une variable 104 par son nom ou par son index. 107 105 108 106 … … 136 134 __Attributs de la classe {{{EbmExpr}}}:__ 137 135 * {{{_operator}}} : le type de l'opérateur (dans {{{CaoTypes.h}}}, parmis 138 136 {{{Not}}}, {{{And}}}, {{{Or}}} ou {{{Xor}}}). 139 137 * {{{_operands}}} : une liste de pointeurs vers les opérandes. 140 138 … … 143 141 * {{{getOperator()}}} : accesseur, retourne le type de l'opérateur. 144 142 * {{{getOperands()}}} : accesseur, retourne une référence sur la liste 145 des opérandes (pour éviter une copie inutile de 146 la liste). 147 * {{{Or()}}} : trois surcharges construisant une expression 148 {{{Or}}} entre ses {{{N}}} opérandes. Le but de ces 149 différentes fonctions est de cacher la construction 150 de la liste des opérandes et l'allocation de 151 l'{{{EbmExpr}}} résultante. Noter que cela implique 152 une construction ''bottom-up'' de l'{{{EBM}}} complète. 153 Voir l'exemple fourni. 143 des opérandes (pour éviter une copie inutile de la liste). 144 * {{{Or()}}} : trois surcharges construisant une expression {{{Or}}} entre ses 145 {{{N}}} opérandes. Le but de ces différentes fonctions est de cacher la construction 146 de la liste des opérandes et l'allocation de l'{{{EbmExpr}}} résultante. 147 Noter que cela implique une construction ''bottom-up'' de l'{{{EBM}}} complète. 148 Voir l'exemple fourni. 154 149 * {{{And()}}} et {{{Xor()}}} : idem. 155 150 … … 158 153 159 154 155 [[Image(Ebm-1.png)]] 156 [[Image(Ebm-2.png)]] 157 [[Image(Ebm-3.png)]] 158 [[Image(Ebm-4.png)]] 159 [[Image(Ebm-5.png)]] 160 161 160 162 == Fonctionnement de la fonction {{{getType()}}} == 161 163