par , 01/04/2020 à 09h20 (535 Affichages)
APL-AML est une
monographie fragmentée en plusieurs billets pour des raisons de volume.
Un billet
SYNOPSIS et un billet
SOMMAIRE agrègent
tous les billets du blog via des liens hypertextes.
■ ■ ■ SOMMAIRE DU BILLET ■ ■ ■
- Avant-propos
- Avertissements
Introduction
- La structure hiérarchisée du programme
- Les deux structures types : répétitive et alternative
- Les deux formes de hiérarchie : « simple » et « complexe »
- Les structures types hiérarchisées
- La réalisation d’un programme – liste d’instructions
- Initiation à la programmation
LA PROGRAMMATION RATIONNELLE
(Yves LEROY, Centre de formation CII - janvier 1971)
La structure d’un système de gestion doit être une expression de ses objectifs
§ ■ Avant-propos
Le document original de 141 pages est un support de cours distribué lors d’un stage LCP chez le constructeur CII en février 1971. Il faut donc le situer dans le contexte de l’époque où l’initiation informatique était assurée par des organismes de formations privés, par des formations chez le constructeur, par des cours par correspondance proposés par le Ministère des Finances et beaucoup par de l’autoformation. La première promotion de DUTiens n’est sortie qu’en juin 1971.
Dans le privé, le recrutement d’informaticiens se faisait sous forme de tests psychotechniques dits « IBM » suivis d’un entretien.
Dans l’administration, le recrutement se faisait en trois étapes :
- Des tests psychotechniques dits « PTT », ces tests se passaient collectivement dans une salle.
- Des tests psychotechniques individuels devant un psychologue.
- Un concours administratif avec les épreuves classiques + une épreuve informatique (écriture d’un programme COBOL).
Les tests psychotechniques ne pouvaient être passés qu’une seule fois et l’admission à concourir était conditionnée à la réussite de ces tests.
Ce document est donc un support pédagogique d’initiation pas seulement aux concepts LCP mais également à la programmation… évidemment dans le contexte informatique de l’époque.
Il est pédagogiquement organisé en deux parties parce qu’il est indispensable d’assimiler les contraintes internes avant de les situer dans leur cadre de référence :
- Le programme en lui-même : ses structures types et son organisation détaillée.
- Le programme dans son contexte : influence des entrées et des sorties, choix d'une solution, les phases de traitement.
Ces deux parties sont deux approches, deux éclairages des principes de construction du programme.
Afin de rendre la lecture du résumé ci-après plus adaptée au public averti d’aujourd’hui, les deux parties ont été synthétisées en une seule et les exercices commentés ont été occultés.
Un internaute (M. Tourneur) propose une version plus récente de ce document pédagogique avec un premier chapitre consacré aux Ensembles :
LCP
Ce support de cours, publié en l’état, a été entièrement réécrit et publié sous forme d’un billet de blog :
Logique de construction des programmes
§ ■ Avertissements
Ce texte se limite à la présentation de techniques en évitant d’employer une terminologie trop spécifique. Si le lecteur trouve un intérêt dans les principes présentés, il pourra les appliquer ou les développer quelque soit son secteur d’activité : informatique, gestion, mathématiques, sciences…
LA PROGRAMMATION RATIONNELLE
► La programmation rationnelle est la mise en forme d’un raisonnement. Avons-nous la possibilité de maitriser la forme de notre pensée ? Celle-ci galvaude au gré des problèmes qui nous sont posés. Au plus, pourrions-nous dire que le cheminement que suit notre raisonnement dépend de notre expérience – ou encore de nos connaissances, de notre culture, de nos ignorances, de nos incertitudes et de nos inquiétudes – en un mot de notre personnalité.
► Dans quelques années, il nous paraîtra bien surprenant de constater avec quelle médiocrité de moyens l’informatique s’est développée au cours de ses première décades d’existence. Nous disposons d’une machine extraordinaire, direz-vous ? Mais que représente-telle sans le programme de gestion qui l’anime ? Est-ce une voiture sans chauffeur, un violon sans composition ? Or ce programme n’a fait l’objet d’aucun investissement comparable à ceux dont disposent ces appareils électroniques et électromécaniques très sophistiqués.
► Certains techniciens de l’informatique vont jusqu’à propager l’idée que les qualités de la machine suppléeront la médiocrité du programme alors que celui-ci par la logique du traitement qu’il réalise intervient dans un domaine qui est propre à la gestion et à la direction de l’entreprise. On veut nous faire confondre le marteau avec le forgeron : la qualité du premier ne peut suppléer la médiocrité du second.
Les principes présentés dans ces pages sont inspirés de l’œuvre de J-D WARNIER . Les principes étudiés ne proviennent pas de subtiles sophistications. Présentés avec plus de rigueur, ils pourraient avoir force de loi. Nous pensons qu’ils peuvent être le point de départ d’une amélioration des programmes et de la gestion automatisée qui ait les objectifs suivants :
- Construire le programme sur des bases logiques plutôt que créer une œuvre artisanale.
- Faciliter la maintenance des programmes en les dépersonnalisant.
- Créer un langage logique de programmation, indépendant de l’outil utilisé, commun aux informaticiens.
- Faire du développement un ensemble cohérent.
► Le programme est semblable à une machine conçue pour réaliser un produit à partir d’une matière première. Si cet ensemble est conçu de façon rationnelle, on peut dire que :
- La définition des SORTIES détermine la nature des actions qui constituent le programme.
- L’agencement de ces actions, donc la structure du programme, subit l’organisation des ENTRÉES.
§ ■ Introduction
Le programme est une suite de séquences logiques d’instructions exécutées le même nombre de fois. Les séquences logiques sont liées entre-elles. Ces liaisons structurent le programme et permettent de l’animer. Le programme est en effet articulé selon une structure hiérarchisée pour réaliser des séquences logiques alternatives et des séquences logiques répétitives.
§ 01. La structure hiérarchisée du programme
Cette hiérarchie est obtenue en cherchant à partir d’un niveau, le niveau immédiatement inférieur. Pour savoir si l’on doit poursuivre la décomposition, on doit à chaque étape poser la question :
« Cet ensemble constitue-t-il une séquence logique ? »
- Si la réponse est non, l’ensemble analysé contient donc un sous-ensemble d’instructions exécutées un nombre différent que lui-même.
- Si la réponse est oui, la décomposition en sous-ensembles hiérarchisés est terminée.
Le programme est organisé en utilisant une représentation par des accolades. La pointe de chaque accolade désigne l’ensemble décrit à la droite de celle-ci. Cette technique permet, en particulier, de faire apparaître le nombre d’exécutions d’un ensemble. Contrairement à l’organigramme qui fait progresser de détail en détail, cette représentation assiste le raisonnement au niveau des ensembles.
On ne doit donc pas raisonner sur l’organigramme déduit de cette décomposition. L’organigramme permet de situer notre raisonnement au niveau des détails. Si celui-ci fait apparaître une anomalie, on doit se reporter à la représentation des accolades où l’on redresse l’erreur avant de revenir à l’organigramme. Construire le programme en utilisant seulement l’organigramme est un abandon du critère fondamental, commun aux principes, qui consiste à placer le raisonnement au niveau des ensembles.
Exemple de décomposition d’une saisie des notes à un concours :
1 2 3 4 5 6 7 8 9 10
|
┌ ┌ ┌ ┌
│ │ │ │
│ │ │ │ NOTE COEFFICIENTÉE
│ │ │ │ (0,1 fois)
PROGRAMME < CANDIDAT < ÉPREUVE < NOTE <
│ (n fois) │ (n fois) │ (n fois) │ NOTE / 20
│ │ │ │ (0,1 fois)
│ │ │ │
└ └ └ └ |
Le programme contient un ensemble répétitif NOTE qui lui-même contient un ensemble alternatif. Chacune des actions de l’alternative est exécutée ou n’est pas exécutée. Le symbole « (0,1) » signifie : est exécuté ou n’est pas exécuté. Il désigne une structure alternative.
Cette décomposition n’est pas encore représentative d’un programme. Incomplète, il faut prévoir d’autres ensembles exécutés autant de fois que le programme, c’est-dire une fois.
En décrivant ou en décomposant un ensemble, on doit lui adjoindre des sous-ensembles DÉBUT et FIN. L’ensemble avec ses sous-ensembles DÉBUT et FIN est souvent appelé « ensemble de référence » ou « référentiel ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Sigles :
D- = DÉBUT TRAITEMENT
F- = FIN TRAITEMENT
T- = TRAITEMENT
EC = Examen-Concours
EA = Épreuve d’Admissibilité/Admission
CEC = Candidatures Examen-Concours
CEA = Candidature Épreuve d’Admissibilité/Admission
┌ ┌ ┌ ┌
│D-PROG (1) │D-CEC (1) │D-CEA (1) │D-NOTE (1)
│ │ │ │
│ │ │ │ T-NOTE COEF (0,1 fois)
PROGRAMME < CANDIDAT < ÉPREUVE < NOTE <
│ (n fois) │ (n fois) │ (n fois) │ T_NOTE / 20 (0,1 fois)
│ │ │ │
│F-PROG (1) │F-CEC (1) │F-CEA (1) │F-NOTE (1)
└ └ └ └ |
Réalisation de l’organigramme
Il suffit de souligner les séquences logiques, c’est-à-dire les ensembles non décomposés pour en déduire l’organigramme. Pour simplifier la décomposition par les accolades, le symbole « (1) » qui signifie « une fois pour l’ensemble décomposé » ne sera plus utilisé, il sera implicite afin de donner plus de relief au « nombre de fois » d’exécution des ensembles qui établit une correspondance logique avec les données.
L’organigramme va permettre de situer notre raisonnement au niveau des détails. Si nous distinguons bien les séquences logiques et leurs ensembles de référence (PROGRAMME, CONCOURS, ÉPREUVES, NOTE COEF, NOTE / 20), nous voyons mal leur structure exprimée par la hiérarchie et le « nombre de fois ».
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
┌─────────────┐
│ D-PROG │
└──────┬──────┘
├──────────────────────┐
┌──────┴──────┐ │
│ D-CEC │ │
└──────┬──────┘ │
├───────────────────┐ │
┌──────┴──────┐ │ │
│ D-CEA │ │ │
└──────┬──────┘ │ │
┌─────────◊─────────┐ │ │
┌──────┴──────┐ ┌──────┴──────┐ │ │
│ T-NOTE COEF │ │ T-NOTE / 20 │ │ │
└─────┬───────┘ └─────┬───────┘ │ │
└──────────┬────────┘ │ │
┌──────┴──────┐ │ │
│ F-CEA │ │ │
└──────┬──────┘ │ │
◊───────────────────┘ │
┌──────┴──────┐ │
│ F-CEC │ │
└──────┬──────┘ │
◊──────────────────────┘
┌──────┴──────┐
│ F-PROG │
└─────────────┘ |
Le rôle des DÉBUTS et FINS apparait dans cette représentation du programme : ils permettent d’imbriquer les ensembles et de représenter leur structure hiérarchique.
Les deux actions de l’alternative sont sur un même niveau car au moment du traitement, l’une ou l’autre sera exécutée à un même moment précis.
Le programme est un ensemble d’actions, les conditions « ◊ » ne servent qu’à les lier entre elles. Nos habitudes tendent à nous faire programmer des conditions au lieu d’actions et à compliquer inutilement le programme. Le programmeur est davantage préoccupé par l’obtention rapide des résultats que par la structure du programme.
NB : La décomposition s’arrête au niveau des traitements d’ensembles et ne descend pas jusqu’aux instructions programmées dans la séquence logique.
§ 02. Les deux structures types : répétitive et alternative
- Pour représenter la structure répétitive dans l’organigramme, on place un branchement conditionnel à la fin de l’ensemble répétitif.
1 2 3 4 5 6 7 8 9 10 11 12
|
┌─────────────┐
│ D-PROG │
└──────┬──────┘
├──────────┐
┌──────┴──────┐ │
│ T-ARTICLE │ │
└──────┬──────┘ │
◊──────────┘
┌──────┴──────┐
│ F-PROG │
└─────────────┘ |
- Pour réaliser une structure alternative, on doit programmer deux actions alors que seulement l’une d’entre elles est exécutée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
┌─────────────┐
│ D-PROG │
└──────┬──────┘
├───────────────────┐
┌──────┴──────┐ │
│ D-ARTICLE │ │
└──────┬──────┘ │
┌─────────◊─────────┐ │
┌──────┴──────┐ ┌──────┴──────┐ │
│ T-ARTICLE │ │ T-ARTICLE │ │
└─────┬───────┘ └─────┬───────┘ │
└──────────┬────────┘ │
┌──────┴──────┐ │
│ F-ARTICLE │ │
└──────┬──────┘ │
◊───────────────────┘
┌──────┴──────┐
│ F-PROG │
└─────────────┘ |
§ 03. Les deux formes de hiérarchie : « simple » et « complexe »
La hiérarchie simple : La hiérarchie simple décompose un ensemble qui ne contient qu’un seul sous-ensemble exécuté un nombre différent de fois.
La hiérarchie complexe : Dans la hiérarchie complexe, l’ensemble de référence décomposé comporte plus d’un sous-ensemble exécuté un nombre de fois différent que lui-même. Autrement dit, l’ensemble de référence est constitué d’étapes successives non complémentaires. Les actions successives sont alors séparées par des séquences logiques intermédiaires « INTER » cumulant les fonctions de FIN TRAITEMENT de la séquence logique précédente et DÉBUT TRAITEMENT de la séquence logique suivante.
§ 04. Les structures types hiérarchisées
C’est la combinaison des deux structures types (exemple théorique) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
┌─────────────┐
010 │ D-PROG │
└──────┬──────┘
├──────────────────────┐
┌──────┴──────┐ │
020 │ D-EC │ │
└──────┬──────┘ │
├───────────────────┐ │
┌──────┴──────┐ │ │
030 │ D-EA │ │ │
└──────┬──────┘ │ │
┌─────────◊─────────┐ │ │
┌──────┴──────┐ ┌──────┴──────┐ │ │
040 │ T-EA (XXX) │ 050 │ T-EA (YYY) │ │ │
└─────┬───────┘ └─────┬───────┘ │ │
└──────────┬────────┘ │ │
┌──────┴──────┐ │ │
060 │ F-EA │ │ │
└──────┬──────┘ │ │
◊───────────────────┘ │
┌──────┴──────┐ │
070 │ INTER │ │
└──────┬──────┘ │
├───────────────────┐ │
┌──────┴──────┐ │ │
080 │ T-XXX │ │ │
└──────┬──────┘ │ │
◊───────────────────┘ │
┌──────┴──────┐ │
090 │ INTER │ │
└──────┬──────┘ │
├───────────────────┐ │
┌──────┴──────┐ │ │
100 │ D-YYY │ │ │
└──────┬──────┘ │ │
┌─────────◊─────────┐ │ │
┌──────┴──────┐ ┌──────┴──────┐ │ │
110 │ T-YYY │ 120 │ T-YYY │ │ │
└─────┬───────┘ └─────┬───────┘ │ │
└──────────┬────────┘ │ │
┌──────┴──────┐ │ │
130 │ F-YYY │ │ │
└──────┬──────┘ │ │
◊───────────────────┘ │
┌──────┴──────┐ │
140 │ F-EC │ │
└──────┬──────┘ │
◊──────────────────────┘
┌──────┴──────┐
150 │ F-PROG │
└─────────────┘ |
Disposant des principes élémentaires de construction du programme en ensembles structurés et hiérarchisés de séquences logiques, il reste à les programmer.
§ 05. La réalisation du programme
Avant de programmer, il est nécessaire de repérer les séquences logiques en leur affectant un numéro.
La numérotation des séquences logiques se fait de haut en bas et de gauche à droite. Les branchements conditionnels se font donc de la gauche vers la droite.
Issue de son étude logique, la liste des instructions du programme est indépendante du langage et du moyen utilisé. Elle n’est donc pas remise en cause lors d’une évolution des moyens (ordinateur, langage, etc.), ce qui permet une certaine souplesse dans la politique des moyens informatiques de l’entreprise.
Construction du programme
Le programme n’existe que « par les entrées » et « pour les sorties ». Sous réserve que les entrées et les sorties d’un programme ont une structure hiérarchique compatible et cohérente, la hiérarchie des ensembles d’informations à traiter s’imposent au programme.
Principes qui gouvernent la construction du programme :
- Raisonner sur la base des actions et non sur celle des conditions.
- L’étude des sorties détermine la procédure, la nature des actions qui constituent le programme. Les actions sont définies pour la phase et pour chaque ensemble de traitement de la phase.
La phase, notion plus large de l’étape, est l’unité logique de programme.
- L’étude des entrées structure ces actions.
- Un raisonnement (un programme) est un ensemble d’actions structurées.
Les conditions ne doivent intervenir que pour réaliser la structure, c’est-à-dire les liaisons entre les actions.
- À une structure hiérarchisée des entrées correspond une structure hiérarchisée des traitements.
- À une structure répétitive ou alternative d’un ensemble d’informations à traiter correspond une structure répétitive ou alternative des traitements.
- À une structure complexe répétitive des données d’entrée correspond une structure complexe répétitive du programme.
- Dans les entrées du programme, les informations existant (0,1 fois) et ayant une influence sur la structure du programme provoquent la formation d’alternatives dans le programme.
- L’organisation en alternatives complexes est une solution de facilité et ne doit être utilisée que si les actions ne sont pas complémentaires. Structuré de cette façon, le programme doit solliciter systématiquement tous les branchements conditionnels et ceux-ci testent plusieurs fois les mêmes conditions.
Dans le cas où les actions ne sont pas complémentaires, cette organisation permet de programmer une seule fois chaque action et évite de faire appel à un sous-programme.
En résumé, le choix d’une solution s’oriente vers une organisation :
- Complexe, si les actions ne sont pas complémentaires
- Arborescente, si les actions sont complémentaires
- Si en cours de traitement, on crée des informations ayant une incidence sur la suite des opérations, on est en présence de phases et chaque phase constitue une étape.
La phase est une « unité logique de programme » où ENTRÉES, SORTIES et TRAITEMENT forment un ensemble cohérent.
- L’étude des informations à l’entrée d’une unité logique est suffisante pour orienter son organisation, pour définir sa structure. Sa construction peut être étudiée de façon rationnelle.
- L’étude des données en sortie de cette unité logique détermine les actions à prévoir, à concevoir.
L’ensemble des phases peut donc se hiérarchiser. Le choix d’une succession de phases peut se faire parmi plusieurs solutions propres à la logique du problème posé. Des tables de décision peuvent assister le raisonnement mais c’est souvent l’expérience qui oriente le choix.
- Toutes les données présentées dans une structure séquentielle doivent être traitées, même si ces données ne sont pas intéressantes. Le minimum de traitement d’une information (fichier séquentiel) est une lecture. La structure doit prévoir son emplacement.
§ 06. Initiation à la programmation
► Premier temps :
On dresse des listes d’instructions
- Les lectures
- Il y a autant de types d’ordres de lectures que de supports à l’entrée du programme.
- Dans le cas de plusieurs fichiers à traiter, ceux-ci ne se terminent pas tous au même moment, il faut prendre certaines précautions assurant qu’un fichier terminé ne fera plus l’objet d’un ordre de lecture
- La fin du fichier étant introduite par une lecture, il y a pour chaque fichier autant de lectures que d’articles + 1.
- Les lectures d’initialisation sont en DÉBUT de traitement et les lectures courantes en FIN de traitement des séquences logiques
- Les branchements
Il n’est pas toujours facile de décrire les actions et les textes administratifs ont une forme qui influence les solutions choisies d’une façon qui n’est pas toujours heureuse. Ces textes confondent « présentation des actions » et « présentation des conditions » et leur forme n’est adaptée ni à l’employé chargé de leur application, ni au destinataire qui les subit. Il faut se méfier de certains « et » qui sont en réalité des « ou » logiques.
Loi dite de « Morgan » : son application permet en particulier de vérifier si l’on n’a pas programmé un « et » au lieu d’un « ou ». Ce qui est admissible dans le langage courant ou dans un texte administratif ne l’est pas dans une expression logique.
- Les calculs et les mouvements
- Les sorties (impression)
Il y a plusieurs types de lignes : en-tête, courante, fin de page. Il convient de prévoir pour chaque type, des opérations de mise en page.
Avant d’imprimer, un compteur fait l’objet d’un test : si son contenu dépasse un nombre de lignes maximum admissible par page, on fait un saut de page et on remet le compteur à zéro. Au moment de l’impression, le compteur est incrémenté de “1”.
Ces opérations de caractère technique sont ainsi isolées du contexte logique du programme afin d’éviter toute confusion.
Ceci n’exclut pas la mise en place d'un saut de page dans le contexte logique, lors d’une fin de traitement par exemple.
- Les sous-programmes
Les lectures et écritures peuvent faire l’objet d’un sous-programme. Pour les écritures, un sous-programme peut gérer la mise en page, notamment les sauts de page.
Ils sont construits comme les programmes s’ils comprennent plusieurs séquences logiques ; mais un sous-programme peut être un sous-ensemble d’une séquence logique du programme si les instructions qui le constituent sont exécutées le même nombre de fois.
► Deuxième temps :
Les instructions affectées aux séquences élémentaires sont ordonnées en une liste unique au cours d’une opération qui tient compte de l’ordre des séquences élémentaires et d’un ordre logique à l’intérieur de celles-ci.
Il est possible qu’une séquence logique ne contienne qu’un branchement conditionnel.
Il est également possible que des séquences logiques soient vides. Elles doivent néanmoins apparaitre dans l’organigramme car elles peuvent être utiles lors d’une opération de maintenance. Il est cependant possible de les ignorer sous la forme d’un commentaire au niveau de la programmation détaillée.
L’étude rationnelle des structures du programme peut contribuer à leur optimisation. S’ils ne font pas l’objet de maintenance, les programmes à vocation technique peuvent être optimisés d’une façon plus poussée que les programmes de gestion.
L’étude des traductions possibles des structures fondamentales par un langage révèle sa puissance comme ses limites. Les techniques spécifiques d’un langage peuvent influencer le processus de codification d’un programme où, à partir de la logique d’un organigramme, un mode d’expression satisfaisant est recherché. La mise en valeur des techniques particulières offertes par un langage s’acquière surtout par l’expérience mais devrait se transmettre aux jeunes programmeurs.
- Les relations conditions-actions
Nous vivons dans un monde saturé d’interdits et de règlements, si bien que nous analysons constamment une situation (un ensemble de conditions) avant de décider une action. Nous représentons nous-mêmes un ensemble complexe de conditions (taille, poids, couleur des yeux, âge, ancienneté, nombre d’enfants, etc.) qui peut être présenté sous la forme mathématique d’une expression logique que l’on appelle un cas dans le langage courant.
Est-ce pour ces raisons, que nous avons tant de difficultés à concevoir un ensemble d’actions organisé ?
C’est peut-être pour ces raisons que les programmeurs sont davantage préoccupés de conditions que d’actions et qu’ils programment des conditions dans une organisation très lourde.
- La structure complexe ordonnée
Avant d’aborder l’organisation du programme en ensembles de séquences logiques, il est indispensable de voir s’il n’est pas constitué d’étapes successives issues d’un raisonnement tel que : « avant de faire telle action, il faut prévoir une autre action ». Ces deux actions successives ont une organisation complexe et sont séparées par une séquence logique INTER.
En résumé, si l’on veut simplifier et généraliser les règles de construction d’un programme, il suffit d’appliquer les principes suivants :
- Actions complémentaires => structure arborescente
- Actions non complémentaires => structure complexe
3. La notion d’étapes dans un programme
L’organisation du programme se fait étape par étape. Les étapes d’un programme de gestion sont comparables aux pas de calcul d’un programme scientifique :
- Dans le programme scientifique, les étapes sont peu nombreuses et complexes et la structure interne de chaque étape est simple.
- Dans le programme de gestion, les étapes ne sont pas nombreuses et la structure interne de chaque étape est complexe.
Une nouvelle étape se signale dans l’organigramme par une séquence logique INTER.
Il ne semble pas que l’on puisse proposer une méthode particulière pour définir les étapes du programme. Si le texte (souvent de caractère administratif) à l’origine du programme est suffisamment explicite, les étapes doivent apparaître au cours de sa lecture. La conjonction « si » permet souvent de les distinguer. Par exemple, « on ne peut traiter les refus que « si » au préalable, le calcul du total des demandes a été effectué ».
4. Utilisation des tables de décision
Ces tables mettent en relation conditions et actions dans un souci d’optimisation, l’objectif étant de chercher à regrouper les actions complémentaires en arborescence.
D’un usage très pratique lorsque les conditions sont binaires, il peut être intéressant lorsque ces conditions ne sont pas binaires, de recourir à un autre type de tables qui utilise trois entrées : d’une part les conditions et les cas ; d’autre part, les actions. Les mêmes principes sont applicables aux deux tables.
Les cas représentent des combinaisons de conditions.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
┌────────────────────────────────┐
│ CAS │
├──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┤
│ 1│ 2│ 3│ 4│ 5│ 6│ 7│ 8│ 9│10│ │
┌──────────┬─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│CONDITIONS│A│ │ │ │ │ │ │ │ │ │ │ │
│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ │B│ │ │ │ │ │ │ │ │ │ │ │
│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ │C│ │ │ │ │ │ │ │ │ │ │ │
│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ │D│ │ │ │ │ │ │ │ │ │ │ │
╞══════════╪═╪══╪══╪══╪══╪══╪══╪══╪══╪══╪══╪══╡
│ACTIONS │1│ │ │ │ │ │ │ │ │ │ │ │
│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ │2│ │ │ │ │ │ │ │ │ │ │ │
│ ├─┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤
│ │3│ │ │ │ │ │ │ │ │ │ │ │
└──────────┴─┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘ |
Lors de l’analyse d’un texte administratif, les actions apparaissent sous forme de verbes et les conditions sont représentées par des substantifs. L’ensemble des actions doit être exhaustif, il ne faut pas omettre l’action, souvent implicite dans les textes, qui consiste à s’abstenir. L’ensemble des conditions doit couvrir tous les cas étudiés.
Pour la construction d’un programme, si chaque cas correspond à une seule action, les actions sont complémentaires et l’organisation doit être arborescente. Dans le cas contraire, l’organisation doit être complexe.
Pour faciliter l’étude des relations conditions-actions, on peut décomposer une table importante en plusieurs petites tables.
Celles-ci peuvent être exécutées :
- D’une façon successive : il n’y a aucun lien de conditions possible entre les tables. L’ordre d’exécution des tables peut être indifférent, cette organisation correspond à la structure complexe.
- D’une façon liée : il y a un lien de conditions entre les tables, cette organisation correspond à la structure arborescente.
- D’une façon chaînée : certaines tables décrivent des informations qui sont des sous-ensembles d’informations décrites par d’autres tables.
Matrice
Le sujet n’est pas abordé par le document original car son utilisation ne sera suggérée que bien plus tard par l’AFPA pour gérer la dynamique des écrans. l’AFPA avait publié un article dans le mensuel « DÉVELOPPEZ ».
§ ■ CONCLUSION
Le programme est la mise en forme d’un raisonnement. Cette mise en forme consiste essentiellement en une étude de structure qui sera menée d’autant plus facilement qu’elle se situe au niveau des ensembles.
La tendance commune consisterait plutôt à raisonner au niveau des détails qui séduisent ou qui inquiètent pour des raisons diverses, comme par exemple, le cas des lectures.
Partant d’un détail, l’étude va progresser en accumulant d’autres détails, un par un, en perdant de vue l’essentiel : les ensembles logiques qui doivent apparaître dans cette structure.
L’étude au niveau des ensembles est moins sécurisante qu’une méthode artisanale qui permet de soulager rapidement ses inquiétudes ou de mettre en valeur une connaissance particulière. Cette méthode est peu objective et très contraignante : progressant de détail en détail, il sera finalement très difficile de la mettre en œuvre. Ayant réalisé un programme par juxtapositions de détails, il faudra ensuite revenir en arrière afin de vérifier si, dans son ensemble, il répond correctement au problème posé.