IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Au Pied Levé - À Main Levée

[TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES

Noter ce billet
par , 01/04/2025 à 09h00 (155 Affichages)

■ ■ ■ SOMMAIRE DU BILLET ■ ■ ■

  • Avant-propos

  1. Organisation hiérarchique des données
    1. L’informaticien
    2. Lois du traitement rationnel des données
    3. Démarche hiérarchique
    4. Les lois de subdivision
    5. Exercice N° 1
  2. Structure répétitive simple
    1. Introduction
    2. Structuration des données de Sortie
    3. Structuration des données de d’Entrée
    4. Structuration du programme
    5. Règles et Algorigrammes
    6. Exercice N° 2
  3. Organisation détaillée
    1. Généralités
    2. Instructions du PGM
    3. Contrôle du programme par les sorties
  4. Structure alternative simple
    1. Présentation et définition
    2. Structuration des données de sortie
    3. Structuration des données d’entrée
    4. Structuration du PGM
    5. Organisation détaillée
    6. Groupe Alternatif de Données (GAD)
  5. Structure complexe répétitive et mixte
    1. Introduction
    2. Structure Répétitive Complexe
    3. Structure Complexes Mixtes
  6. Conclusion
    1. Un informaticien est un organisateur de données
    2. Exercice N° 3 (Exercice d'application)
  7. Les phases de traitement
    1. Introduction
    2. Exemple N° 1
    3. Définition d’une phase de traitement
    4. Exemple N° 2
    5. Règles
    6. Cas d’apparition des données de phase
    7. Cas du changement de page
  8. La Structure Alternative Complexe (SAC)
    1. Introduction
    2. Cas des actions disjointes ou incluses
    3. Actions en intersections. Alternatives consécutives

■ ■ ■ ANNEXES ■ ■ ■

  1. Lois, Règles et Principes
  2. Sigles - Lexique
  3. Quelques liens très utiles
  4. Notions sur les ensembles

[TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES.pdf (54 pages Word)
§ ■ Avant-propos

Ce tutoriel assainit un support de cours LCP réalisé avec les moyens de l’époque (années 70) et publié en 2000-2006 par M. Tourneur sur son site internet :


Un premier paragraphe du support de cours original aborde des NOTIONS SUR LES ENSEMBLES pour expliquer le recours à certaines références pédagogiques. Ce paragraphe utilisant les caractères spéciaux liés aux Ensembles, il n’a pas pu être repris dans ce tutoriel mais il fait l’objet d'un fichier PDF joint en annexe au présent tutoriel.

Le parallèle LCP/Ensembles est certainement intéressant mais pas franchement indispensable. Ce support de cours décrit la méthodologie LCP à peu près dans les mêmes termes que cet autre support de cours de 140 pages d’Yves LEROY du Centre de Formation CII (1971), synthétisé dans ce Billet de Blog :


Certaines lois et règles édictées par ces deux supports de cours s’inspirent de technologies devenues obsolètes comme l’utilisation de fichiers plats. Le socle méthodologique LCP reste toujours actuel mais nécessite d’être adapté à l’utilisation des Systèmes de Gestion des Bases de Données. C’est un peu l’objectif de ce Billet de Blog :


La grande différence entre les fichiers plats et les Bases de Données dans le traitement du FLE (Fichier Logique en Entrée), c’est que les fichiers plats étaient constitués indépendamment du programme à développer via un ou plusieurs programmes spécifiques. Avec les Bases de Données, le programme constitue lui-même le FLE dont il a besoin avant de l’exploiter.

Ce qui change avec les BDD, c’est que ce n’est plus le FLE issu des fichiers plats qui structure le raisonnement mais ce sont les traitements qui préalablement à la programmation de la procédure, structurent le FLE nécessaire, à partir des tables de la Base de Données. Ainsi, FLE et Procédure se structurent mutuellement par décompositions hiérarchiques successives des traitements, du plus global vers le plus détaillé, sur la base des actions.

La construction du FLE fait appel à une logique séquentielle, la programmation de la procédure à une logique combinatoire.

En se référant à la théorie des Ensembles, ce support de cours ajoute en fait de la complexité inutile à la démarche qui se veut pourtant pédagogique. Faute d’être commentées oralement, les annotations en caractères rouges se référant aux Ensembles, bien qu’intéressantes, peuvent être ignorées.

Ce support de cours n’est pas une recette. On n’apprend pas LCP, on le comprend, on se l’approprie, on enregistre le message dans sa mémoire procédurale et on oublie la pédagogie de ce cours. Le message est simple : Penser par traitements et non par conditions. Mais changer son processus de pensée formaté par conditions n’a rien d’évident. Rééduquer ses neurones pour « raisonner sur la base des actions et non sur celle des conditions » nécessite un effort mental important car il faut résister au déviationnisme satisfaisant ses vieux réflexes.

Un raisonnement par conditions, c’est le comment faire, qui dépend du langage et de la mémoire immédiate volatile obsédée par l’incertitude du développement non maitrisé dans sa globalité.

Un raisonnement par traitements, c’est structurer le quoi faire, c’est libérer sa mémoire immédiate, c’est aborder la problématique dans sa globalité. Le comment faire devient une certitude, une évidence rassurante ; le code est là où il doit être, programmé comme il doit l’être. Les traitements sont des référents stables ; un programme structuré par traitements reste toujours maintenable.

Pas vraiment un tutoriel pour autodidacte, ce support de cours sans son formateur transmet plutôt bien le message LCP à ceux qui souhaitent véritablement s’approprier la démarche.

Les exemples proposés ne se réfèrent qu’à des états de sortie, plus faciles à visualiser. Mais LCP s’applique à tous les traitements, pas seulement aux impressions.



§ Chapitre I

ORGANISATION HIÉRARCHIQUE DES DONNÉES

  1. L'informaticien

    Traiter les données c’est programmer.

    • L'informaticien traite les informations, les organise et les automatise.
    • Il obéit à des règles logiques ou à des formes de règles logiques.

    Les relations entre données et programmes sont ignorées.

    • La partie logique de l’informaticien

      • Organiser les données à traiter.
      • Organiser les résultats à obtenir.
      • Organiser les programmes.
      • Écrire les programmes, les corriger et les modifier.
        La mise au point des programmes peut-être coûteuse selon la logique utilisée.

    • Logique ordonnée et structurée

      • Toute collection d’éléments ou de données constitue un Ensemble au sens mathématique du terme.
      • Tout programme constitue un ensemble de données destinées à exécuter des fonctions.
      • Il existe une logique pour organiser les données et une logique pour l’organisation des programmes.

    • Caractéristique essentielle de la Logique de Construction des Programmes

      • On ne s’attache pas au déroulement des instructions.
      • On part du Général vers le Particulier et de l’Ensemble vers l’Élément.
      • Les instructions sont regroupées en séquences logiques.
      • Un programme est considéré comme un ensemble structuré de séquences logiques.

    • Séquence Logique (SL)

      • C’est un ensemble ordonné d’instructions exécuté le même nombre de fois au même endroit du programme.
      • La méthode pour élaborer une séquence logique considère comme les éléments d’un ensemble :
        • Les données en sortie du programme,
        • les données d’entrées utiles au programme,
        • et les instructions du programme.
      • Elle organise ces éléments hiérarchiquement les uns par rapport aux autres.

  2. Lois du traitement rationnel des données

    Loi n° 1

    Tout ensemble doit être défini en compréhension.
    Loi n° 2

    Tout ensemble doit être rigoureusement défini.
    Loi n° 3

    Les relations entre les différents sous-ensembles doivent être rigoureusement définies.
    Loi n° 4

    Toute correspondance entre deux sous-ensembles doit être une application.
  3. Démarche hiérarchique

    • Aller du général au particulier.
    • Partir de l’ensemble au plus haut niveau dans sa forme générale.
    • Subdiviser cet ensemble en sous-ensembles à l’aide d’une loi qui doit être explicite.
    • Subdiviser à nouveau par itération jusqu’au niveau le plus bas autorisé par la loi utilisée.
    • Subdiviser de nouveau en utilisant d’autres lois.

  4. Les lois de subdivision

    Loi n° 1

    On subdivise un ensemble de données s’il comprend des sous-ensembles qui peuvent s’y trouver présents un nombre de fois différent de 1.
    Loi n° 2

    On énumère dans leur ordre d’écriture les rubriques composant l’ensemble non sub-divisible, s’il y a lieu.
  5. Exercice N° 1 (chapitre I)

    On veut obtenir un état statistique des ventes d’une société.

    • Schéma du programme

      Nom : LCP (Fig. I-1).jpg
Affichages : 30
Taille : 12,5 Ko
    • Données de sortie

      Nom : LCP (Fig. I-2).jpg
Affichages : 24
Taille : 32,0 Ko
    • Données d'entrée (1 article par mouvement)

      Le fichier Entrée est classé sur le N° de secteur et dans un secteur par le N° de client. Il peut y avoir plusieurs mouvements par client et plusieurs clients par secteur.

    • Définition des traitements (règles de gestion)

      On doit cumuler les mouvements d’un même client pour obtenir le total.

      On doit cumuler les clients pour obtenir le total général.

    • En se référant aux ensembles : on a 4 ensembles indépendants du traitement

      • 1 ensemble État (ensemble U)
      • 1 ensemble Clients
      • 1 ensemble Mouvements
      • 1 ensemble Ligne

    • Ensemble Des Données concernant l’État : EDD FLS (1 fois)

      Représentation des Ensembles De Données sous forme de patatoïdes :
      ┌───────────────────────────────────────────────────────────────────────────────────┐
      │  EDD FLS (ensemble universel)                                                     │
      │ ┌───────────────────────────────────────────────────────────────────────────────┐ │
      │ │  EDD CLIENT (c fois) (Niveau 1)                                               │ │
      │ │ ┌───────────────────────────────────────────────────────────────────────────┐ │ │
      │ │ │ EDD MOUVEMENT (m fois) (Niveau 2)                                         │ │ │
      │ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │
      │ │ │ │ EDD LIGNE (1 fois) (Niveau 3)                                         │ │ │ │
      │ │ │ │                                                                       │ │ │ │
      │ │ │ │ N° MOUVEMENT                                                          │ │ │ │
      │ │ │ │ LIBELLÉ                                                               │ │ │ │
      │ │ │ │ MONTANT                                                               │ │ │ │
      │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ │ │
      │ │ └───────────────────────────────────────────────────────────────────────────┘ │ │
      │ │                                                                               │ │
      │ └───────────────────────────────────────────────────────────────────────────────┘ │
      │                                                                                   │
      └───────────────────────────────────────────────────────────────────────────────────┘
      
      Représentation de ces mêmes Ensembles De Données à l'aide d’un diagramme avec des accolades :

                   ┌                   ┌                    ┌
                   │                   │                    │ 
                   │                   │ N° CLIENT (1)      │ N° MOUVEMENT (1)
                   │                   │                    │ 
       EDD FLS (1)◄┤ EDD CLIENT (c)   ◄┤ EDD MOUVEMENT (m) ◄┤ LIBELLÉ (1)
                   │                   │                    │
                   │ TOTAL GENERAL (1) │ TOTAL CLIENT (1)   │ MONTANT (1)
                   │                   │                    │
                   └                   └                    └
      Niveau :       Niveau 1            Niveau 2             Niveau 3
      Référentiel :  CLIENT              MOUVEMENT            LIGNE
      
      Remarques :

      À chaque niveau de référence on repart avec un nouveau référentiel.

      À partir d’un certain niveau de subdivision on ordonne les sous-ensembles dans l’ordre où ils apparaissent, dans un ordre « spatio-temporel ».

      Il existe des sous-ensembles répétitifs, il est donc important de faire apparaître cette caractéristique grâce aux cardinaux. Ces cardinaux peuvent être appelés aussi facteurs d’occurrences.

      La démarche hiérarchique fait apparaître la correspondance entre les différents sous-ensembles.

      La loi de correspondance appliquée ici est l’Application :

      À un élément de l’ensemble de niveau inférieur (N° Client) correspond un élément de l’ensemble de niveau supérieur l’incluant. Il y a donc application.

      On dit qu’il y a application de A sur B si quel que soit a de A il existe un seul élément b de B.

      • L’ensemble de niveau inférieur est pris comme ensemble de départ.
      • L’ensemble de niveau supérieur est pris comme ensemble d’arrivée.



§ Chapitre II

STRUCTURE RÉPÉTITIVE SIMPLE


  1. Introduction

    Pour résoudre un problème informatique il faut :

    • Déterminer les sorties (les résultats à obtenir).
    • Déterminer les entrées.
    • Déterminer les calculs et les conditions pour pouvoir transformer les entrées en sorties.

    Pour cela il existe 4 étapes à franchir :

    1. Dresser le tableau hiérarchique des sorties :

      - FLS : Fichier Logiques des Sorties
      - DLS : Données Logique de Sortie
      - EDO : Ensemble des Données à Obtenir

    2. Dresser le tableau hiérarchique des entrées :

      - FLE : Fichier Logique des Entrées
      - DLE : Données Logiques des Entrées
      - EDU : Ensemble des Données à Utiliser

    3. Valider le FLS par le FLE :

      - Vérifier que toutes les données de Sortie sont obtenues par des données d’Entrée.

    4. Structurer le programme.

  2. Structuration des données de Sortie

    Dans l’exercice N° 1 (chapitre I) :

    - L’ensemble est structuré hiérarchiquement.
    - Le FLS est structuré.
    - On a deux ensembles répétitifs (Client et MVT).
    - Au niveau Client, il y a un sous-ensemble répétitif EDD 1 Mouvement SEUL.
    - Au niveau de l’État, il y a un sous-ensemble répétitif SEUL EDD 1 Client.
    - Ces deux structures sont des Structures Répétitives Simples.

    Règle

    Un ensemble de Structure Répétitive est un ensemble dans lequel on utilise plusieurs sous-ensembles de données de même nature.
  3. Structuration des données d’Entrée

    Remarque :

    En sortie il y a des infos PRÉSENTES.
    En entrée il y a des infos UTILES.

    Règle

    La construction d’un programme se fait à partir du FLE.

    Lors de la structuration du FLE certaines données peuvent ne pas apparaître si elles ne génèrent aucun traitement.

    Validation :

    Supprimer les secteurs ne générant aucun traitement.

    Dans notre exemple nous aurions :

                 ┌                   ┌                    ┌
                 │ EDDEDD                │ N° CLIENT (1)
        EDD FLE ◄┤ CLIENT (c’)      ◄┤ MOUVEMENT (m’)    ◄┤ 
                 │                   │                    │ MOUVEMENT (1)
                 └                   └                    └
                   Niveau 1            Niveau 2             Niveau 3
                   CLIENT              MOUVEMENT            ITEM
    
  4. Structuration du programme

    La structuration du programme (PGM) se déduit de celle du FLE.

    PROG
    Début
    Instructions de traitement concernant 1 CLIENT : exécuter c’ fois
    Fin

    T-CLIENT
    Début
    Instructions de traitement des données concernant 1 MOUVEMENT : exécuter m’ fois
    Fin

                 ┌                    ┌ 
                 │ 010 D-PROG (1)     │ 020 D-MOUVEMENT (1)
                 │                    │
           PROG ◄┤     T-CLIENT (c’) ◄┤ 030 MOUVEMENT (m’)  
                 │                    │
                 │ 050 F-PROG (1)     │ 040 F-MOUVEMENT (1)
                 └                    └
    
    Nous retrouvons la même structure hiérarchique que celle du FLE.

    On souligne les traitements non décomposés qui feront chacun l’objet d’une séquence logique.

    On numérote les traitements soulignés, de 10 en 10, de la gauche vers la droite. Selon le langage (COBOL, par exemple), ces numéros entreront dans la composition des étiquettes logiques référençant les séquences logiques.

  5. Règles et Algorigrammes

    Loi de structuration N° 1 du PGM

    À toute structure répétitive à l’entrée, correspond une structure répétitive du programme, et une seule.
    Règle d’application

    L’ensemble « Programme de structure répétitive » comprend toujours :

    - un début à exécuter 1 fois
    - un sous-ensemble répétitif à exécuter n fois
    - une fin à exécuter 1 fois.

    Algorigramme

                   ┌─────────────┐
               010 │    D-PROG   │
                   └──────┬──────┘
                          │◄─────────────────────┐
                   ┌──────┴──────┐               │
               020 │  D-CLIENT   │               │
                   └──────┬──────┘               │
                          │◄──────────────────┐  │
                   ┌──────┴──────┐            │  │
               030 │   T-MVT     │            │  │
                   └──────┬──────┘            │  │
                          ●───────────────────┘  │
                   ┌──────┴──────┐               │
               040 │   F-CLIENT  │               │
                   └──────┬──────┘               │
                          ●──────────────────────┘
                   ┌──────┴──────┐
               050 │    F-PROG   │
                   └─────────────┘
    
  6. Exercice N° 2 (chapitre II)

    On désire imprimer l’état des ventes mensuelles par client…

    • Schéma du programme (Fig. II-1)

      Nom : LCP (Fig. II-1).jpg
Affichages : 24
Taille : 15,4 Ko

    • Données de sortie Fig. II-2)

      Nom : LCP (Fig. II-2).jpg
Affichages : 25
Taille : 59,3 Ko

    • Données d'entrée

      Fichier séquentiel des commandes

      Trié de majeur en mineur sur les critères suivants : N° Mois, N° Client, N° Commande, N° Produit

      Pour 1 article :

      • n° de mois
      • n° de client
      • n° de commande
      • n° de produit
      • Quantité commandée
      • Code pays de la commande (E = Étranger, F = France)
      • Prix unitaire

      Note :

      Les prix unitaires et les montants des commandes à l’étranger sont exprimés par leurs contre-valeurs en Euros.
      Le Fichier Commandes ne contient qu’un seul article par produit.

    • Traitements :

      MT-PROD = PU X QTE

      • Pour une commande : MT-CDE = Ʃ MT-PROD
      • Pour un client : TOT-CLI = Ʃ MT-CDE
      • Pour un mois : TOT-MOIS = Ʃ TOT-CLI

    • Démarche

      1. Structurer le FLS
      2. Structurer le FLE
      3. Valider le FLS par le FLE
      4. Structurer le PGM

            ┌               ┌               ┌               ┌               ┌
            │               │               │               │               │ 
            │               │ N° MOIS (1)   │ N° CLIENT (1) │ N° CDE (1)    │ N° PROD  (1)
            │ EDDEDDEDDEDD           │ 
       FLS ◄┤ MOIS (m)     ◄┤ CLIENT (c)   ◄┤ CDE (x)      ◄┤ PROD (p)     ◄┤ PU PROD  (1)
       État │               │               │               │               │ QTE      (1)
            │               │ TOT MOIS(1)   │ TOT CLIENT (1)│ TOT CDE (1)   │ MONTANT  (1)
            │               │               │               │               │ 
            └               └               └               └               └
              Niveau 1        Niveau 2        Niveau 3        Niveau 4        Niveau 5
              MOIS            CLIENT          CDE             PROD            LIGNE
      
            ┌              ┌               ┌               ┌               ┌
            │              │               │               │               │ N° MOIS   (1)
            │              │               │               │               │ N° CLIENT (1)
            │              │               │               │               │ N° CDE    (1)
       FLE ◄┤ MOIS (m’)   ◄┤ CLIENT (c’)  ◄┤ CDE (x’)     ◄┤ PROD (p’)    ◄┤ N° PROD   (1)
            │              │               │               │               │ QTE       (1)
            │              │               │               │               │ PAYS      (1)
            │              │               │               │               │ P.U.      (1)
            └              └               └               └               └ 
      
    • Règles de gestion

      - Montant produit = PU X QTE (réf. Produit) Niveau Produit
      - Total commande = Total commande + Montant Produit (réf. Commande) Niveau PROD
      - Total client = Total client + Total Cde (réf. Client) Niveau CDE
      - Total mois = Total mois + Total client (réf. Mois) Niveau CLIENT

    • Validation

      - On a le même nombre de niveaux
      - On a la même structure répétitive simple au même niveau
      - Les ensembles sont cohérents

      FLS = Φ
            ┌               ┌               ┌               ┌
            │ D-PGM (1)     │ D-MOIS (1)    │ D-CLIENT (1)  │ D-CDE  (1)
            │               │               │               │
            │               │               │               │
       PGM ◄┤ T-MOIS (n)   ◄┤ T-CLIENT (n) ◄┤ T-CDE (n)    ◄┤ T-PROD (1)
            │               │               │               │
            │               │               │               │
            │ F-PGM (1)     │ F-MOIS (1)    │ F-CLIENT (1)  │ F-CDE  (1)
            └               └               └               └
              Niveau 1        Niveau 2        Niveau 3        Niveau 4
              MOIS            CLIENT          CDE             PROD
      
    • Remarques

      - On souligne les traitements de la structure du PGM qui ne sont pas décomposés et qui feront l’objet d’une Séquence Logique dans le logigramme puis le programme.

      - Une variable d’occurrence traduit :

      1. En sortie, la présence de l’information.
      2. En entrée, l’utilisation de l’information.
      3. Dans le PGM, l’exécution.

    • Synthèse

      - Deux séquences logiques sont obligatoirement séparées par une jonction ou un branchement.

      - Deux jonctions ou deux branchements sont toujours séparés par une séquence logique.

      NB : Une séquence logique qui ne comprend aucunr instruction est appelée une séquence vide, que l'on note "Φ" dans la séquence logique de l'algorigramme.

    • Algorigramme

      On numérote les séquences Logiques hiérarchiquement de 10 en 10 et de la gauche vers la droite.

                   ┌─────────────┐
               010 │     D-PGM   │
                   └──────┬──────┘
                          │◄───────────────────────┐
                   ┌──────┴──────┐                 │
               020 │    D-MOIS   │                 │
                   └──────┬──────┘                 │
                          │◄───────────────────┐   │
                   ┌──────┴──────┐             │   │
               030 │   D-CLIENT  │             │   │
                   └──────┬──────┘             │   │
                          │◄───────────────┐   │   │
                   ┌──────┴──────┐         │   │   │
               040 │    D-CDE    │         │   │   │
                   └──────┬──────┘         │   │   │
                          │◄───────────┐   │   │   │
                   ┌──────┴──────┐     │   │   │   │
               050 │   T-PROD    │     │   │   │   │
                   └──────┬──────┘     │   │   │   │
                          ●────────────┘   │   │   │
                   ┌──────┴──────┐         │   │   │
               060 │    F-CDE    │         │   │   │
                   └──────┬──────┘         │   │   │
                          ●────────────────┘   │   │
                   ┌──────┴──────┐             │   │
               070 │   F-CLIENT  │             │   │
                   └──────┬──────┘             │   │
                          ●────────────────────┘   │
                   ┌──────┴──────┐                 │
               080 │    F-MOIS   │                 │
                   └──────┬──────┘                 │
                          ●────────────────────────┘
                   ┌──────┴──────┐
               090 │     F-PGM   │
                   └─────────────┘
      
    • Ensemble de données d’entrée exécuté plusieurs fois

      Le nombre de sous-ensembles de données en entrée génèrent le nombre de sous-ensembles de traitement du PGM.

      Un sous-ensemble présent en entrée peut être exécuté plusieurs fois dans le programme.



§ Chapitre III

ORGANISATION DÉTAILLÉE


  1. Généralités

    • Organiser en séquences logiques de manière ordonnée.
    • Organiser en tant que suite ordonnée d’instructions.

    C’est ce qu’on appelle l’organisation détaillée.

    But : Ordonner les instructions par niveau et par séquence logique.

    Règle

    Une instruction correspond à une séquence logique si elle est exécutée le même nombre de fois au même endroit du programme.

    Remarques

    - Si une instruction correspond à plusieurs séquences logiques elle sera programmée plusieurs fois.

    - Si un groupe d’instructions correspond à plusieurs séquences logiques, ces instructions pourront être structurées comme un véritable programme, n’apparaissant qu’une seule fois mais exécutées plusieurs fois.

  2. Instructions du PGM

    Elles sont réparties en 4 groupes.

    1. Introduction de données

      Introduire des données, c’est les rendre accessibles aux traitements.

      Lecture (INTRO).

      Le nombre d’instructions d’introduction de données est égal au nombre d’enregistrements contenus dans le fichier à traiter, + 1, ce dernier ordre étant destiné à repérer la fin de fichier (FF) ou (EOF).

      Combien de fois et quand lire ?

      Recherche de la séquence logique dans laquelle tous les enregistrements du fichier sont utilisés + une lecture dans une séquence logique qui est celle de début du PGM.

    2. Préparation des branchements ou fixation des référentiels

      Combien de fois et quand fixe-t-on un référentiel ?

      Règle

      Le traitement d’un ensemble de données ne doit commencer que lorsque le critère d’identification des éléments de cet ensemble a été fixé et rangé.

    3. Préparation des calculs et calculs

      Combien de fois et quand préparer les calculs ou les faire ?

      Les calculs seront exécutés au niveau correspondant (validation : règle de gestion).

      MEI : Mise à l’État Initial des zones de mémoires dans lesquels se font les calculs

      • Total Commande sera MEI à zéro en début Cde.
      • Total Client sera MEI à zéro en début Client.
      • Total Mois sera MEI à zéro en début Mois.

    4. Préparation des sorties

      MEP : Mise En Page des données à sortir effectuée à chaque fois que la donnée à éditer apparaîtra.

      Éditer (EDIT) lorsque le besoin s’en fait sentir.

      Combien de fois et quand préparer les sorties à éditer ?

      Le FLS répond de lui même.

      MEI les zones qui auront servies à l’édition.

      Construction du programme (démarche)

      Placement des lectures (INTRO).

      PRÉDICATS / Niveau

      Prédicat : « Ce qui est affirmé d’un sujet. Une affirmation, ou la définition d’une relation ».

      Exemples

      SI « prédicat »
      Alors
      Sinon
      FINSI

      TANT QUE « prédicat »
      Répéter
      FINTANQUE

      RÉPÉTER
      Jusqu’à « prédicat » FF.

    5. Pseudocode

      Représenter un algorithme.

      C’est formaliser dans une langue connue les actions nécessaires à l’exécution du PGM avant le codage dans un langage de programmation.

      Le pseudocode du programme sera construit niveau par niveau.

  3. Contrôle du programme par les sorties

    Avant la mise au point sur la machine, un PGM doit être contrôlé pour en obtenir dès les premiers essais des résultats satisfaisants.

    Il existe 4 grandes possibilités d’erreurs :

    1. Sortie intempestive d’une donnée non demandée.
    2. Absence d’une donnée qui aurait dû être présente.
    3. Sortie répétitive d’une donnée qui n’aurait dû l'être qu’une fois.
    4. Sortie aléatoire d’une donnée qui doit être toujours présente.

    Vérifier à l’aide du FLS que chaque sortie est programmée dans la séquence appropriée.

    Une séquence logique est exécutée au bon endroit le même nombre de fois.

    Rapprocher le pseudo code du FLS pour vérifier que toutes les sorties ont été programmées.

    Jeu d’essai

    Il doit permettre de dérouler toutes les séquences logique du PGM au moins une fois et toutes les structures répétitives au moins deux fois.

    Pseudo code

    Le pseudo code se dirige niveau par niveau.

    Dans l’exemple du chapitre III le pseudo code serait :

    Niveau 1 PGM
    D-PGM SL 010
    REPETER T-MOIS
    JUSQU'A FF Cde
    SL 090
    F-PGM
    Niveau 2 T-MOIS
    D-MOIS SL 020
    RÉPÉTER T-CLIENT
    JUSQU’À mois différent ou FF Cde
    SL 080
    F-MOIS
    Niveau 3 T-CLIENT
    D-CLIENT SL 030
    RÉPÉTER T-CDE
    JUSQU’À mois différent ou client différent ou FF Cde
    SL 070
    F- CLIENT
    Niveau 4 T-CDE
    D-CDE SL 040
    RÉPÉTER T-PRODUIT
    Jusqu'à Cde différente, client différent ou mois différent ou FF Cde
    SL 060
    T-PRODUIT SL 050
    F-CDE



§ Chapitre IV

STRUCTURE ALTERNATIVE SIMPLE


  1. Présentation et définition

    Un ensemble de données comportant à son 1er niveau de subdivision un sous-ensemble dont la présence est aléatoire est dit de Structure Alternative.

    Ce sous-ensemble est dit de Structure Alternative Simple (SAS) :

    - S’il n’y a pas de structure répétitive

    et s’il y a :

    - Soit un seul sous-ensemble aléatoire,
    - soit plusieurs sous-ensembles aléatoires tel que la présence de l’un exclu celle de l’autre.

  2. Structuration des données de sortie

    Résultats exclusifs les uns des autres

    N° Compte (1)
                 ┌                   ┌
                 │                   │
                 │                   │ Solde débiteur  (0,1)
                 │                   │ 
            FLS ◄┤ COMPTE (c)       ◄┤ OU Exclusif
                 │                   │
                 │ Ʃ Crédits (1)     │ Solde Créditeur (0,1)
                 │ Ʃ Dédits  (1)     │
                 └                   └ 
                   Niveau 1            Niveau 2
                   COMPTE              SOLDE
    
    NB : Impossibilité pour un solde d’être CR et DB à la fois

    Résultats aléatoires
                 ┌                   ┌                   ┌
                 │                   │                   │
                 │                   │                   │ N° CLIENT (1)
                 │                   │                   │ 
            FLS ◄┤ SECTEUR (s)      ◄┤ CLIENT (c)       ◄┤ CA        (1)
                 │                   │                   │
                 │                   │ TOT CA     (1)    │ REMISE  (0,1)
                 │                   │ TOT REMISE (1)    │
                 └                   └                   └
                   Niveau 1            Niveau 2            Niveau 3
                   SECTEUR             CLIENT              LIGNE
    
  3. Structuration des données d’entrée

    • Présence + la valeur du critère.
    • Quand la valeur d’un code doit être testée dans le PGM, cette valeur doit être prise en compte dans la structure du FLE.


    Principe :

    Lorsqu’un code est utilisé une fois dans un ensemble et qu’il peut prendre deux valeurs A et A’ testées au cours du PGM, on peut écrire l’ensemble de la manière suivante :

    Ens. { code [= X, 0,1 fois]

  4. Structuration du PGM

    Loi de structuration N° 2 du PGM

    À toute structure Alternative des données à l’entrée correspond une structure Alternative du PGM et une seule.

    Règle

    Un ensemble de PGM de structure Alternative comprend toujours :

    • Un sous-ensemble Début exécuté 1 fois
    • Deux sous-ensembles exécutés 0 ou exclusif 1 fois à l’exclusion l'un de l'autre
    • Un sous-ensemble Fin exécuté 1 fois

    Algorigramme
                 ┌─────────────┐
                 │  Début (1)  │
                 └──────┬──────┘
              ┌─────────●─────────┐
       ┌──────┴──────┐     ┌──────┴──────┐
       │ Trait (0,1) │     │ Trait (0,1) │
       └─────┬───────┘     └─────┬───────┘
             └──────────┬────────┘
                 ┌──────┴──────┐
                 │    Fin (1)  │
                 └─────────────┘
    
  5. Organisation détaillée

    Dans une Structure Répétitive Simple les branchements sont conditionnels.

    Dans une Structure Alternative Simple les branchements peuvent être systématiques : On dit alors qu’ils sont inconditionnels.

    Deux règles sont à noter :

    1. Une Structure Alternative Simple comporte un branchement conditionnel et un seul. Il est placé à la fin de la séquence début de l’alternative.

      SI code = « F » faire tel traitement

    2. Toute Structure Alternative comporte autant de branchements systématiques qu’il y a de branches à l’alternative moins un.

      SINON faire tel autre traitement

    Remarque :

    Dans l’édition d’une Facture ou d’un Avoir on utilise la valeur d’un code F ou A, chacune générant un traitement.

    Si seul le total des factures est demandé le code F seul est traité ; mais systématiquement l’autre branche doit figurer vide d’instructions en vue des maintenances futures.

    Algorigramme
                 ┌─────────────┐
                 │   D-TRAIT   │
                 └──────┬──────┘
     Code = A ┌─────────●─────────┐ Code = F
       ┌──────┴──────┐     ┌──────┴──────┐
       │      Φ      │     │  T-FACTURE  │
       └─────┬───────┘     └─────┬───────┘
             └──────────┬────────┘
                 ┌──────┴──────┐
                 │   F-TRAIT   │
                 └─────────────┘
    
  6. Groupe Alternatif de Données (GAD)

    Un sous-ensemble peut être présent :

    • 1 fois (1)
    • n fois (n)
    • 0 ou 1 fois (0,1)

    Mais il peut arriver qu’un sous-ensemble soit présent 0 ou n fois.

    Il n’y a pas de notation (0,n)

    Il faut ramener ce cas à ceux connus

    • (0,1)
    • (n)

    Définition

    Dans un référentiel donné, un GAD est un ensemble de Structure Alternative Simple comprenant à son premier niveau de subdivision un sous-ensemble de Structure Répétitive Simple et un seul.



§ Chapitre V

LES STRUCTURES RÉPÉTITIVES COMPLEXES ET MIXTES


  1. Introduction

    Structure Répétitive et Structure Alternative sont des Structures Élémentaires.

    • Définition

      Un ensemble de données de Structure Complexe est un ensemble dans lequel on rencontre au premier niveau de subdivision de l’ensemble pris comme référentiel plusieurs structures élémentaires.

    • Types de structures

      - Structure Répétitives Complexe (SRC)
      - Structure Alternative Complexe (SAC)
      - Structure Complexe Mixte (SCM)

  2. Structure Répétitive Complexe

    Exemple

    À partir des fichiers Commandes et Factures on désire établir un État comparatif annuel par Client des commandes reçues et des Factures envoyées par l’entreprise.

    Fichiers en entrée

    Commandes

    Il comporte N articles par Client (N étant différent de 0), classés par ordre croissant des N° de Client.
    • N° Client
    • N° Commande
    • Montant

    Factures

    Il comporte N articles par Client (N étant différent de 0), classés par ordre croissant des N° de Client.

    • N° Client
    • N° Facture
    • Montant

    Traitement

    On calcule le Total des Montants Commandes et le Total des Montants Factures pour chaque Client.

    On imprime une ligne par Commande, ou par Facture pour chaque Client.

    Structuration des données Sortie
                                 ┌                ┌
                 ┌               │ N° CLIENT      │ N° CDE (1)
                 │               │ EDD  CDE (cd) ◄┤
                 │               │ TOT CDE (1)    │ MONTANT (1)
                 │ EDD           │                └ Niveau 3 
            FLS ◄┤ CLIENT (c)   ◄┤                  LIGNE CDE
                 │               │                ┌
                 │               │                │ N° FACTURE (1)
                 │               │ FACTURE (f)   ◄┤
                 └               │ TOT FACTURE (1)│ MONTANT (1)
                                 └                └ Niveau 3
                                                    LIGNE FACTURE
    
                   Niveau 1        Niveau 2         Niveau 3  
                   CLIENT          CDE/FACTURE      LIGNE
    
    Nous avons une Structure Répétitive Complexe (SRC) puisqu’il existe plus d’un sous-ensemble de Structure Élémentaire au Niveau Client.

    Structuration des données Entrée
                                 ┌                ┌
                 ┌               │                │ N° CLIENT (1)
                 │               │ EDD CDE (cd)  ◄┤ N° CDE    (1)
                 │               │                │ MONTANT   (1)
                 │ EDD           │                └
        EDD FLE ◄┤  CLIENT (c’)  ◄┤                  
                 │               │                ┌
                 │               │ EDD            │ N° CLIENT  (1)
                 │               │ FACTURE (f)   ◄┤ N° FACTURE (1)
                 └               │                │ MONTANT    (1)
                                 └                └
                   Niveau 1        Niveau 2         Niveau 3  
                   CLIENT          CDE/FACTURE      ITEM
    
    Structuration du PGM

    À Structure Répétitive des données d’Entrée correspond une Structure Répétitive des données du PGM, donc à SRC des données d’Entrée correspond une SRC du PGM.

                                    ┌
                 ┌                  │ D-CLIENT (1)
                 │ D-PGM (1)        │ D-CDE (1)
                 │                  │ T-CDE (cde’)
                 │                  │ F-CDE (1)
        EDD PGM ◄┤ T-CLIENT (cli’) ◄┤ INTER-21 (1)               
                 │                  │ D-FACTURE (1)
                 │                  │ T-FACTURE (fac’)
                 │ F-PGM (1)        │ F-FACTURE (1)
                 └                  │ F-CLIENT (1)
                                    └
    
    Algorigramme
                 ┌─────────────┐
             010 │     D-PGM   │
                 └──────┬──────┘
                        │◄────────────────┐
                 ┌──────┴──────┐          │
             020 │  D-CLIENT   │          │
                 └──────┬──────┘          │
                        │◄───────────┐    │
                 ┌──────┴──────┐     │    │
             030 │  T-COMMANDE │     │    │
                 └──────┬──────┘     │    │
                        ●────────────┘    │
                 ┌──────┴──────┐          │
             040 │  INTER-21   │          │
                 └──────┬──────┘          │
                        │◄───────────┐    │
                 ┌──────┴──────┐     │    │
             050 │  T-FACTURE  │     │    │
                 └──────┬──────┘     │    │
                        ●────────────┘    │
                 ┌──────┴──────┐          │
             060 │   F-CLIENT  │          │
                 └──────┬──────┘          │
                        ●─────────────────┘
                 ┌──────┴──────┐
             070 │     F-PGM   │
                 └─────────────┘
    
    Notion de Séquence Logique Intermédiaire

    Définition :

    Une Séquence Logique Intermédiaire est une séquence d’un ensemble de Structure Complexe du PGM qui remplit à la fois la fonction de Fin de la Structure Élémentaire qui précède et de Début de la Structure Élémentaire qui suit.

    Règle :

    Une Structure Complexe comprend deux Structures Élémentaires ou plus ; le nombre de Séquences Logiques Intermédiaires est égal au nombre de Structures Élémentaires du Niveau considéré moins 1.

    Synthèse

    Une Structure Répétitive Complexe est un ensemble dans lequel on trouve plusieurs sous-ensembles de Structure Répétitive Simple.

    Numérotation des Séquences Logiques Intermédiaires (INTER)

    1er chiffre = N° du Niveau ou elle apparaît
    2ème chiffre = N° d’ordre dans le Niveau

  3. Structure Complexe Mixte

    Exemple

    À partir de deux fichiers, Factures et Remises, on désire dresser la liste des factures adressées à chaque client avec éventuellement le Montant de la Remise qui lui a été accordée.

    Fichiers en Entrée :

    • Fichier Factures

      Il comporte N Articles classés par ordre croissant des numéros de Client. (N différent de 0)

    • Fichier Remise

      Il comporte 0 ou 1 Article par Client. Les Articles sont classés par numéro de Client.

    Structuration des données de Sortie
                 ┌               ┌
                 │               │ N° CLIENT
                 │               │
                 │ EDDEDD FACTURE (f)
        EDD FLS ◄┤ CLIENT (c)   ◄┤ 
                 │               │ Total MONTANT (1)
                 │               │ 
                 │               │ REMISE (0,1)
                 └               └ 
                   Niveau 1        Niveau 2
                   CLIENT          FACTURE
    
    Au niveau Client il y a une Structure Complexe Mixte puisqu’il y a une SRS ET une SAS.

    Structuration des données d’Entrée
                                                 ┌
                 ┌               ┌ EDD           │ N° CLIENT (1)
                 │               │ FACTURE (f’) ◄┤
                 │               │               │ MONTANT (1)
                 │ EDD           │               └ 
        EDD FLE ◄┤ CLIENT (c’)  ◄┤               
                 │               │               ┌
                 │               │ EDD           │ N° CLIENT (1)
                 │               │ REMISE (0,1) ◄┤
                 └               └               │ MONTANT REMISÉ (1)
                                                 └
                   Niveau 1        Niveau 2        Niveau 3
                   CLIENT          FACTURE         ITEM
    
    Structuration du PGM
    
                                  ┌
                                  │ 020 D-CLIENT (1)
                 ┌                │
                 │ 010 D-PGM030 T-FACTURE (f’) 
                 │                │ 
                 │                │ 040 INTER (1) 
            PGM ◄┤ CLIENT (c’)   ◄┤               
                 │                │ 050 T-PASREMISE (0,1)
                 │                │ 
                 │ 080 F-PGM060 T-REMISE    (0,1)
                 └                │
                                  │ 070 F-CLIENT (1)
                                  └
    
    Algorigramme
                         ┌─────────────┐
                     010 │     D-PGM   │
                         └──────┬──────┘
                                │◄─────────────────────────┐
                         ┌──────┴──────┐                   │
                     020 │  D-CLIENT   │                   │
                         └──────┬──────┘                   │
                                │◄──────────────────────┐  │
                         ┌──────┴──────┐                │  │
                     030 │ T-FACTURE   │                │  │
                         └──────┬──────┘                │  │
                                ●───────────────────────┘  │
                         ┌──────┴──────┐                   │
                     040 │    INTER    │                   │
                         └──────┬──────┘                   │
                  ┌─────────────●─────────────┐            │
           ┌──────┴──────┐             ┌──────┴──────┐     │
       050 │  T-REMISE   │         060 │  T-REMISE   │     │
           └─────┬───────┘             └──────┬──────┘     │
                 └──────────────┬─────────────┘            │
                         ┌──────┴──────┐                   │
                     070 │  F-CLIENT   │                   │
                         └──────┬──────┘                   │
                                ●──────────────────────────┘
                         ┌──────┴──────┐
                     080 │     F-PGM   │
                         └─────────────┘
    
    Synthèse

    Un ensemble de données pris comme Référentiel comportant à son premier Niveau de subdivision plusieurs Structures simples, les unes Répétitives, les autres Alternatives est dit de Structure Complexe Mixte.

    Remarque :

    Cette définition vaut aussi bien pour :

    Des Données de Sortie
    Des Données d’Entrée
    Des Instructions de PGM



§ Chapitre VI

CONCLUSION


  • Un informaticien est un organisateur de données :

    Il établit une structuration logique hiérarchisée :

    • des données de Sortie
    • des données d’Entrée

    Il construit un PGM : un ensemble s’instructions à partir des données d’Entrée

    Il contrôle le PGM avec les données de Sortie

    Aucune de ces opérations ne peut-être privilégiée par rapport aux autres :

    1. Définir la structure hiérarchisée :
      - des résultats.

    2. Définir la structure hiérarchisée :
      - des entrées,
      - des traitements,
      - des résultats.

    3. Organiser le PGM à partir des entrées et le contrôler à partir des sorties.
      • Structurer en sous-ensemble hiérarchisés pour arriver à une organisation en séquences logiques ordonnées.
      • Détailler au niveau de chaque séquence logique.

    La hiérarchisation est basée sur deux grandes structures élémentaires :

    • SRS (Structure Répétitive Simple)
    • SAS (Structure Alternative Simple)

    Les Structures Complexes sont systématiquement ramenées à des structures simples.

    Structure Répétitive Simple
                         ┌─────────────┐
                         │   D-PROG    │
                         └──────┬──────┘
                                │◄────────┐
                         ┌──────┴──────┐  │
                         │   T-PROG    │  │
                         └──────┬──────┘  │
                                ●─────────┘
                         ┌──────┴──────┐
                         │   F-PROG    │
                         └─────────────┘
    
    Structure Alternative Simple
                         ┌─────────────┐
                         │   D-PROG    │
                         └──────┬──────┘
                  ┌─────────────●─────────────┐
           ┌──────┴──────┐             ┌──────┴──────┐
           │   T-PROG    │             │    T-PROG   │
           └─────┬───────┘             └──────┬──────┘
                 └──────────────┬─────────────┘
                         ┌──────┴──────┐
                         │   F-PROG    │
                         └─────────────┘
    
  • Exercice N° 3 (chapitre VI - exercice d’application)

    Le support de cours original ne propose pas de données de sortie. Concevoir ces données de sortie à partir du FLS, du FLE et des consignes de traitement constitue vraisemblablement le but de l’exercice.

    Données de sortie

    Nom : LCP (Fig. VI-1).jpg
Affichages : 24
Taille : 108,4 Ko

    Données d’Entrée

    Fichier Clients

    DONNÉES ATTRIBUTS
    N° Client CL_N_CLIENT
    Nom CL_NOM
    Adresse CL_ADRESSE
    Taux Ristourne CL_TX_RISTOURNE
    C.A. HT CL_CA_HT
    Un article par client, trié sur le N° Client.

    Fichier Produits Commandés

    DONNÉES T_MVT = 1 T_MVT = 2 T_MVT = 3
    N° Client PR_N_CLIENT EM_N_CLIENT PO_N_CLIENT
    Type PR_T_MVT EM_T_MVT PO_T_MVT
    N° Produit PR_N_PRODUIT EM_N_PRODUIT PO_N_PRODUIT
    Quantité PR_PU EM_PU PO_PU
    Quantité PR_QTE EM_QTE PO_QTE
    Taux Remise PR_TX_REMISE EM_TX_REMISE PO_TX_REMISE
    Seuls les articles de Type 1 possèdent éventuellement une remise, si elle est absente, la rubrique remise ne sera pas renseignée sur l’état.

    Pour la compréhension du pseudo code, les noms d’attributs sont préfixés d’un radical correspondant au type de mouvement :

    - PR pour PRODUIT
    - EM pour EMBALLAGE
    - PO pour PORT

    Traitement

    Une société veut établir un état valorisé des produits commandés, à partir du fichier Produits Commandés et du fichier Clients.
    Cet état se réalise par client, et pour chaque client, par type de produit.

    • Type=1 : produit commandé en tant que tel
    • Type=2 : il s’agit d’un emballage
    • Type=3 : il s’agit du port pour un produit commandé
      Le Montant HT est égal à PU HT X QTE X (100 – Taux Remise) / 100

    Le Montant Total HT par Type = Ʃ Montant HT du Type de produit

    Total HT par Client = Total produit + Total emballage + Total Port

    Chaque client a au moins un produit de type 1 et un produit de type 2, mais 0,n produit(s) de type 3.
                                 ┌ 
                                 │ N° CLIENT (1)
                                 │ NOM (1)             ┌
                                 │                     │ N° PRODUIT  (1)
                                 │ TX RISTOURNE (1)    │ QTE         (1)
                                 │                     │ PU          (1)
                                 │ EDD PRODUIT (pr)   ◄┤ TX REMISE (0,1)
                 ┌               │                     │ MONTANT HT  (1)
                 │ TITRE (1)     │ TOT HT PRODUIT (1)  │ 
                 │               │                     │ Niveau 3EDD           │                     └ LIGNE PRODUIT
            FLS ◄┤ CLIENT (c)   ◄┤                     ┌  
                 │               │                     │ N° EMBALLAGE (1)
                 │               │                     │ QTE          (1)
                 │               │ EDD EMBALLAGE (e)  ◄┤ PU           (1)
                 │               │                     │ MONTANT HT   (1)
                 └               │ TOT HT EMBALLAGE (1)│ Niveau 3
                                 │                     └ LIGNE EMBALLAGE 
                                 │                                           ┌
                                 │                     ┌                     │ N° PORT    (1)
                                 │                     │                     │ 
                                 │ EDD TYPE PORT (0,1)◄┤ EDD PORT    (po)   ◄┤ QTE        (1)
                                 │ TOT HT CLIENT (1)   │ TOT HT PORT (1)     │ PU         (1)
                                 └                     └                     │ MONTANT HT (1)
                                                                             └ 
                    Niveau 1       Niveau 2              Niveau 3              Niveau 4 
                    CLIENT         PRODUIT/EMBALLAGE     TYPE PORT             LIGNE PORT
    


                                 ┌ 
                                 │ N° CLIENT (1)
                                 │ NOM (1)             ┌
                                 │                     │ N° CLIENT (1)
                                 │ RISTOURNE (1)       │ TYPE (1)
                                 │                     │ N° PRODUIT (1)
                                 │ EDD PRODUIT (pr’)  ◄┤ QTE (1)
                 ┌               │                     │ PU (1)
                 │               │                     │ REMISE (0,1)
                 │               │                     │ Niveau 3EDD           │                     └ ITEM PRODUIT
            FLE ◄┤ CLIENT (cl’) ◄┤                     ┌  
                 │               │                     │ N° CLIENT (1)
                 │               │                     │ TYPE (1)
                 │               │ EDD EMBALLAGE (em’)◄┤ N° EMBALLAGE (1)
                 │               │                     │ QTE (1)
                 └               │                     │ PU (1)
                                 │                     └ Niveau 3ITEM EMBALLAGE      ┌
                                 │                     ┌                     │ N° CLIENT (1)
                                 │                     │                     │ TYPE      (1)
                                 │ EDD TYPE PORT (0,1)◄┤ EDD PORT (po’)     ◄┤ N° PORT   (1)
                                 └                     │                     │ QTE       (1)
                                                       └                     │ PU        (1)
                                                                             └ 
                    Niveau 1       Niveau 2              Niveau 3              Niveau 4
                    CLIENT         PRODUIT/EMBALLAGE     TYPE PORT             LIGNE PORT
    
    Validation

    - Même nombre de niveaux
    - Même structure dans les mêmes référentiels
    - Structure Complexe Mixte au Niveau 2 du FLE et du FLS
    - Les ensembles sont cohérents c=c’, p=p’, e=e’ et po=po’

    Règles de gestion

    - MONTANT HT (niveau PRODUIT) = PU X QTE X (100 - TAUX REMISE) / 100 (si remise)
    - MONTANT HT (niveau PRODUIT) = PU X QTE + EMBALLAGE + PORT (si pas de remise)
    - TOTHT CLIENT (niveau CLIENT) = TOTHT PROD + TOTHT EMB + TOTHT PORT
    - FLS = Φ
                                                               ┌
                                     ┌                         │ 030 D-PRODUIT (1)
                                     │ 020 D-CLIENT (1)        │ 
                                     │                         │ 040 T-PAS-RISTOURNE (0,1)
                                     │     T-PRODUIT (pr’)    ◄┤
                 ┌                   │                         │ 050 T-RISTOURNE     (0,1)
                 │ 010 D-PROG (1)    │ 070 INTER-21            │ 
                 │                   │                         │ 060 F-PRODUIT (1)
                 │                   │ 080 T-EMBALLAGE (e’)    └ Niveau 3
           PROG ◄┤     CLIENT (c’)  ◄┤                           RISTOURNE
                 │                   │ 090 INTER-22
                 │                   │                         ┌
                 │                   │ 100 PAS-DE-PORT (0,1)   │ 110 D-PORT (1)
                 │ 150 F-PROG (1)    │                         │
                 └                   │     T-PORT (0,1)       ◄┤ 120 T-PORT (po’)
                                     │                         │
                                     │ 140 F-CLIENT (1)        │ 130 F-PORT (1)
                                     └                         └ Niveau 3
                                                                 PORT
    
                       Niveau 1            Niveau 2
                       CLIENT              PRODUIT/EMBALLAGE
    
    Algorigramme
                         ┌─────────────┐
                     010 │    D-PROG   │
                         └──────┬──────┘
                                │◄─────────────────────────┐
                         ┌──────┴──────┐                   │
                     020 │  D-CLIENT   │                   │
                         └──────┬──────┘                   │
                                │◄──────────────────────┐  │
                         ┌──────┴──────┐                │  │
                     030 │  D-PRODUIT  │                │  │
                         └──────┬──────┘                │  │
                  ┌─────────────●─────────────┐         │  │
           ┌──────┴──────┐             ┌──────┴──────┐  │  │
       040 │  T-REMISE   │         050 │  T-REMISE   │  │  │
           └─────┬───────┘             └─────┬───────┘  │  │
                 └──────────────┬────────────┘          │  │
                         ┌──────┴──────┐                │  │
                     060 │  F-PRODUIT  │                │  │
                         └──────┬──────┘                │  │
                                ●───────────────────────┘  │
                         ┌──────┴──────┐                   │
                     070 │    INTER    │                   │
                         └──────┬──────┘                   │
                                │◄──────────────────────┐  │
                         ┌──────┴──────┐                │  │
                     080 │ T-EMBALLAGE │                │  │
                         └──────┬──────┘                │  │
                                ●───────────────────────┘  │
                         ┌──────┴──────┐                   │
                     090 │    INTER    │                   │
                         └──────┬──────┘                   │
                  ┌─────────────●─────────────┐            │
           ┌──────┴──────┐             ┌──────┴──────┐     │
       100 │   T-PORT    │         110 │   D-PORT    │     │
           └──────┬──────┘             └──────┬──────┘     │
                  │                           │◄────────┐  │
                  │                    ┌──────┴──────┐  │  │
                  │                120 │    T-PORT   │  │  │
                  │                    └──────┬──────┘  │  │
                  │                           ●─────────┘  │
                  │                    ┌──────┴──────┐     │
                  │                130 │    F-PORT   │     │
                  │                    └──────┬──────┘     │
                  └─────────────┬─────────────┘            │
                         ┌──────┴──────┐                   │
                     140 │  F-CLIENT   │                   │
                         └──────┬──────┘                   │
                                ●──────────────────────────┘
                         ┌──────┴──────┐
                     150 │    F-PROG   │
                         └─────────────┘
    
    Pseudo code

    Niveau 1 PROG
    D-PROG
    SL 010
    Répéter T-CLIENT jusqu’à FF Client
    SL 150
    F-PROG
    Niveau 2 T-CLIENT
    D-CLIENT
    SL 020
    Répéter T-PRODUIT jusqu’à Type 1
    SL 070 INTER-21
    Répéter T-EMBALLAGE jusqu’à Type 2
    SL 090 INTER-22
    Si Type 3
    Alors T-PAS-DE-PORT
    Sinon T-PORT
    SL 140
    F-CLIENT
    Niveau 3 T- PRODUIT
    D-PRODUIT
    SL 030
    Si Taux Remise = 0
    Alors exécuter T-PAS-DE-REMISE
    Sinon exécuter T-REMISE
    F-PRODUIT
    Niveau 3 T- PORT
    D-PORT
    SL 110
    Répéter T-PORT jusqu’à Client
    SL 130
    F-PORT
    Rappel :

    MVT MouVemenT
    MEP Mise En Page
    MEI Mise à l’État Initial
    MER Mise En Réserve
    RAZ Remise À Zéro

    SL 010 D-PROG
    Ouvrir Fichier Clients, Fichier Produits
    MEP titre dans la ligne d’édition
    Sortie de la ligne titre et MEI
    Lecture Fichier Clients
    Lecture Fichier Produits
    SL 020 D-CLIENT
    Ranger en mémoire le N_CLIENT
    RAZ : CL_TOTAL_CLIENT PR_TOTAL_PRODUIT, EM_TOTAL_EMBALLAGE et PO_TOTAL_PORT
    MEP : CL_N_CLIENT, CL_NOM, CL_TX_RISTOURNE dans la ligne Titre
    Sortie de la ligne titre et MEI de la ligne Titre
    SL 030 D-PRODUIT
    MEP : PR_N_PRODUIT, PR_QTE, PR_PU PR_TX_REMISE dans la ligne MVT
    PR_MONTANT_HT = PR_PU X PR_QTE
    SL 040 T-PAS-DE-REMISE
    SL 050 T-REMISE
    PR_MONTANT_HT = PR_MONTANT_HT X (100 – PR_TAUX_REMISE) / 100
    MEP dans la ligne MVT
    SL 060 F-PRODUIT
    PR_TOTAL_PRODUIT = PR_TOTAL_PRODUIT + PR_MONTANT_HT
    MEP : PR_MONTANT_HT dans ligne MVT
    Sortie ligne MVT et MEI
    Lecture Fichier Produits
    SL 070 INTER-21
    MEP : PR_TOTAL_PRODUIT dans ligne TOTAL
    Sortie ligne PR_TOTAL_PRODUIT et MEI
    CL_TOTAL_CLIENT = CL_TOTAL_CLIENT + PR_TOTAL_PRODUIT
    SL 080 T-EMBALLAGE
    EM_MONTANT_HT = PR_PU x PR_QTE
    MER : EM_N_EMBALLAGE, EM_QTE, EM_PU, EM_MONTANT_HT dans ligne MVT
    Sortie ligne MVT et MEI
    Lecture Fichier Produits
    EM_TOTAL_EMBALLAGE = EM_TOTAL_EMBALLAGE + EM_MONTANT_HT
    SL 090 INTER 22
    MEP : EM_TOTAL_EMBALLAGE dans la ligne TOTAL
    Sortie ligne EM_TOTAL_EMBALLAGE et MEI
    CL_TOTAL_CLIENT = CL_TOTAL_CLIENT + EM_TOTAL_EMBALLAGE
    SL 100 T-PAS-DE-PORT
    Φ
    SL 110 D-PORT
    SL 120 T-PORT
    PO_MONTANT_HT = PR_PU x PR_QTE
    PO_TOTAL_PORT = PO_TOTAL_PORT + PO_MONTANT_HT
    MEP : PO_N_PROD, PO_QTE, PO_PU, PO_MONTANT_HT dans ligne MVT
    Sortie ligne MVT et MEI
    Lecture Fichier Produits
    SL 130 F-PORT
    MEP : PO_TOTAL_PORT dans ligne TOTAL
    Sortie ligne PO_TOTAL_PORT et MEI
    CL_TOTAL_CLIENT = CL_TOTAL_CLIENT + PO_TOTAL_PORT
    SL 140 F-CLIENT
    MEP : CL_TOTAL_CLIENT dans ligne TOTAL
    Sortie ligne CL_TOTAL_CLIENT et MEI
    Lecture Fichier Clients
    SL 150 F-PROG
    Fermer les fichiers Produits et Clients
    Arrêter



§ Chapitre VII

LES PHASES DE TRAITEMENTS


  1. Introduction

    Qu’est-ce que la logique d’un PGM ? C’est déterminer si une donnée appartient ou non à un ensemble devant subir un traitement particulier.

    Une donnée d’entrée doit avoir un Critère d’Identification (CI) qui sera comparé à un Critère de Référence (CR).

    Exemple

    Déterminer la taille moyenne des enfants de 10 ans dans une école, sachant qu’on possède la taille de tous les élèves.

    - Donnée « taille », CI = Âge, CR = 10 ans.
    Le critère n’est pas toujours présent dans l’ensemble des données d’entrée ; tous les ensembles de données ne sont pas présent lors de l’Intro des données.

    On dit que ce type de donnée est une donnée de phase (φ).

  2. Exemples N° 1

    Soient 3 valeurs A, B, et C.
    Calculer X de la manière suivante :
    - Calculer D = A + B
    - Si D > 0 calculer X = C – D
    - Si D 0 calculer X = C + D
                 ┌ 
                 │
            FLS ◄┤ X (1)
                 │
                 └
                 ┌  
                 │ A (1)
            FLE ◄┤ B (1)
                 │ C (1)
                 └ 
    
    La validation est impossible parce que pour avoir X il faut 2 alternatives or dans le FLE il n’y a pas d‘alternative.

    X peut-être obtenu grâce :

    - Au CI valeur obtenue pour D
    - Au CR = 0

    D n’est pas présent dans le FLE mais il peut être obtenu grâce à une première phase de traitement.
                 ┌ 
                 │
            FLS ◄┤ D (1)
                 │
                 └
                 ┌  
                 │ A (1)
            FLE ◄┤ B (1
                 │ C (1)
                 └ 
                 ┌ 
                 │
            PGM ◄┤ Calcul de D est une donnée de phase
                 │
                 └
                   (Phase 1)
    
    D peut être réintroduit comme donnée d’entrée de la 2ème phase du traitement.
    Pour structurer la 2ème phase : donnée obtenue par la 1ère phase et les données faisant partie de cette 1ère phase.

    C’est un Fichier Logique de Phase 2.
                 ┌ 
                 │
                 │
            FLP ◄┤ D [<0 (0,1)]
                 │
                 │
                 └
    
    Réf FLE

    Remarque

    Il est important de faire apparaître le référentiel sous le FLP car les données de phases n’apparaissent pas toujours au même niveau et peuvent donc être utilisées à des niveaux différents.

    Le Fichier Logique de Phase FLP se note aussi : φ
  3. Définition d’une phase de traitement

    Tout PGM comporte au moins une phase de traitement. Les phases de traitement autres que la première, sont des sous-ensembles du PGM, traitant des sous-ensembles dont les Critères d’Identification (CI), absents à l’entrée, ont été crées par des instructions appartenant à la phase précédente du même PGM.
  4. Exemple N° 2

    En fin d’année une entreprise désire éditer l’état suivant :

    Nom : LCP (Fig. VII-1).jpg
Affichages : 25
Taille : 32,5 Ko

    Pour cela elle utilise en Entrée un fichier Ventes comportant plusieurs articles par Client, mais triés sur le N° Secteur et sur le N° Client.

    Fichier Entrée Ventes :

    - N° Secteur
    - N° Client
    - Qté
    - PU
    - Divers

    Traitement

    - Pour un client : C.A. = Ʃ (Qté X PU)
    - Une remise, R de 10% du C.A. est accordée à tout client dont le C.A. est 1000 Euros.
    - On totalise par secteur les C.A. et les Remises.
                 ┌            ┌            ┌            ┌
                 │            │            │            │
                 │            │            │            │ N° SECTEUR (1)
                 │ EDDEDDEDD        │ N° CLIENT  (1)
        EDD FLS ◄┤ SECTEUR   ◄┤ CLIENT    ◄┤ ARTICLE   ◄┤ QTÉ        (1)
                 │ (s fois)   │ (c fois)   │ (a fois)   │ PU         (1)
                 │            │            │            │ DIVERS     (1)
                 │            │            │            │
                 └            └            └            └
                    Niveau 1     Niveau 2     Niveau 3     Niveau 4
                    SECTEUR      CLIENT       ARTICLE      LIGNE
    
    Validation

    Alternative au 3ème Niveau concernant la remise.

    C.A. = Ʃ (Qté X PU) Remise

    Si C.A. >= 1000 il y a Remise

    Le CR 1000 = constante caractérise les clients pouvant bénéficier d’une remise.
    Le CI : CA, identifie le client pour savoir s’il aura ou non une remise.

    Or ce CI est absent du FLE, mais il peut être calculé par des instructions du PGM lors d’une première phase φ de traitement. C’est une donnée de phase.

    Définition

    Tout critère d’identification (CI) d’un ensemble de données qui est déterminé par des instructions du PGM est une donnée de phase.

    Remarque

    Seul un CI peut être une donnée de phase.

    Une donnée, objet du traitement et générée au cours du PGM n’est pas une donnée de φ si elle ne sert pas de CI (même si elle ne sert pas de CR).

    Validation (suite)

    - Totaux par secteur
    - Total C.A. = Ʃ des Montants (PU X QTE)
    - Total Remise = Ʃ des Remise par client (0,1), par secteur

  5. Règles

    Règle N° 1

    Quand un PGM comprend une φ ou plus, on doit rédiger un tableau descriptif des données à l’entrée de chacune des φ. Ce tableau est construit comme un FLE et obéit aux mêmes règles, on l’appelle FLPn, n étant le numéro de la φ, avec n>1.

    Rappel

    Les données de φ peuvent apparaître et être utilisées à des niveaux différents. Il faut donc indiquer le (ou les) référentiels de chaque FLPn.
                 ┌            ┌            ┌            ┌
                 │            │            │            │
                 │            │            │            │ N° SECTEUR (1)
                 │ EDDEDDEDD        │ N° CLIENT  (1)
        EDD FLE ◄┤ SECTEUR   ◄┤ CLIENT    ◄┤ ARTICLE   ◄┤ QTÉ        (1)
                 │ (s’ fois)  │ (c’ fois)  │ (a’ fois)  │ PU         (1)
                 │            │            │            │ DIVERS     (1)
                 │            │            │            │
                 └            └            └            └
                    Niveau 1     Niveau 2     Niveau 3     Niveau 4
                    SECTEUR      CLIENT       ARTICLE      ITEM
    
    Validation (suite)

    - FLP2 { C.A.[ 1000 (0,1)]
    - Réf 1 Client

    Règle N° 2

    La construction du sous-ensemble du PGM correspondant à une φ de traitement se déduit du FLP correspondant.

    Les lois de construction sont les mêmes que pour exploiter le FLE.
                 ┌                     ┌                     ┌            
                 │ 010 D-PGM (1)       │ 020 D-SECTEUR (1)   │ 030 D-CLIENT (1)
                 │                     │                     │ 040 T-ARTICLE (a’)          
                 │                     │                     │            
            PGM ◄┤     T-SECTEUR (s’) ◄┤     T-CLIENT (c’)  ◄┤ 050 INTER (1) 
                 │                     │                     │ 060 T-REMISE (0,1)           
                 │                     │                     │ 070 T-PASREMISE (0,1)           
                 │ 100 F-PGM (1)       │ 090 F-SECTEUR (1)   │ 080 F-CLIENT (1)  
                 └                     └                     └ 
    

    Règle N° 3

    L’ensemble des données à l’entrée d’une φ, différente de la première, constituant un sous-ensemble des sorties de la φ qui précède, doit être pris en compte pour effectuer le contrôle du PGM (validation).

    Remarque

    Certaines données de φ peuvent être normalement absentes du FLS.
    Dans l’exercice N° 3 précédant, le C.A. pourrait être absent du FLS si seule une liste de remises était demandée.

  6. Cas d’apparition des données de phase

    Les données de φ sont très fréquentes en informatique de gestion et en informatique scientifique.

    Les critères d’identification (CI), ou données de phase apparaissent lorsque doivent être testés :


    - le résultat d’un calcul
    - un compteur (saut de page par exemple)
    - un indicateur positionné dans un endroit quelconque du PGM.

  7. Cas du changement de page

    On veut imprimer une liste dont chaque page contient 50 lignes.
    Traitement à effectuer :

    Se positionner en haut d’une nouvelle page après l’édition de la 50ème ligne.
    Comment reconnaître la 50ème ligne.

    Un compteur de ligne est déclaré dans le PGM :

    - Au début de la page il est positionné à 0.
    - À chaque ligne imprimée il sera incrémenté de 1.

    Le compteur de lignes est comparé avant chaque impression au CR = 49, constante du PGM.

    Hypothèse

    L’édition des lignes fait partie de la phase 1 du PGM.

    Conclusion

    Le changement de page fait partie de la phase 2.
    Il faut donc déduire les données d’entrée de la 2.
                 ┌ 
                 │
           FLP2 ◄┤ Compteur [>49] (0,1)]
                 │
                 └
                 ┌  
                 │ D-PROG (1)
                 │ CHGT (0,1)
           PROG ◄┤
                 │ PASCHGT (0,1)
                 │ F-PROG (1)
                 └ 
    



§ Chapitre VIII

LA STRUCTURE ALTERNATIVE COMPLEXE (SAC)


  1. Introduction

    Définition

    Un ensemble de données comportant à son premier niveau de subdivision plusieurs sous-ensembles non exclusifs de Structure Alternative Simple est dit de Structure Alternative Complexe.

    Par convention les notations 0 ou 1 fois pour les sous-ensembles seront réunies par le signe + pour signifier la non exclusivité des sous-ensembles.

    Exemple

    - Données d’Entrée d’un PGM concernant un stock de matières premières dans une entreprise.
    - 2 Fichiers physiques (triés sur le N° de Produit)
    - AS = Fichiers Ancien Stock (0 ou 1 fois par produit)
    - MVT = Fichier MouVemenT (0 ou 1 fois par produit)
                          ┌  
         ┌                │ 
         │ EDD            │ AS (0,1)
      E ◄┤ 1 PRODUIT (p) ◄┤ +
         │                │ MVT (0,1)
         └                │ 
                          └ 
    
    
    Dans cet exemple précédent nous avons 3 actions possibles :

    1. Duplication si pas MVT = A1
    2. Création si pas AS = A2
    3. Modification si AS et MVT = A3

    Approche par les fonctions

    - Pour A1 tester le fichier MVT
    A1 = PAS MVT

    - Pour A2 tester le fichier AS
    A2 = PAS AS

    - Pour A3 tester AS et MVT
    A3 = AS + MVT

    Pour A3 nous avons un test complexe.

    Pour l‘éviter au début un indicateur est positionné à 0, à chaque fois que MVT ou AS est testé, 1 est ajouté à l’indicateur, dans le dernier test il suffit de tester la valeur de l’indic à 2.

    Approche par les données

    MVT AS A1 A2 A3
    0 0 φ φ φ
    0 1 X
    1 0 X
    1 1 X
    Les conditions sont importantes

    Recenser tous les cas possibles en partant de la table de vérité, sous forme d’arborescence totale.

    Remarque

    - Le premier test effectué portera sur la présence MVT.
    - En faisant ce choix le test sur MVT est appelé PIVOT de l’arborescence.
    - AS aurait pu être pris comme pivot.
    - STATIQUE dans le PGM lui même le nombre de tests est le même (AS ou MVT comme pivot)
    - DYNAMIQUE lié au contenu des fichiers (en nombre d’enregistrements)

    Exemple

    Si les produits sur AS représentent 55% des produits traités et ceux de MVT 45%

    En prenant MVT comme pivot
    100 tests au pivot
    45 produits AS seront testés

    En prenant AS comme pivot
    100 tests au pivot
    55 produits seront testés sur MVT
    155 tests en tout

    Dans ce cas, dynamiquement MVT comme pivot est préférable.

    Loi N° 3 de Structuration du PGM

    À toute structure Alternative Complexe des données à l’entrée correspond 1 table de vérité dont l’exploitation permet la structuration du programme.
    Les sorties obéissent à trois règles :

    Règle N° 1

    Lorsqu’un sous-ensemble de données à la sortie peut résulter de plusieurs actions, on doit compléter le tableau descriptif des données à la sortie en listant entre crochets, à côté de chaque résultat, les différentes actions à partir desquelles il peut être obtenu. Ces actions figurent, le cas échéant, dans les tables de vérité.
    Règle N° 2

    Lorsque la même donnée de sortie a plusieurs actions de traitements pour origine, on considère dans un premier temps, qu’il y a autant de données de sortie que d’origines. Dans un second temps, on regroupe les données de sortie communes à plusieurs traitements lorsque les simplifications par l’algèbre de Boole le permettent.
    Règle N° 3

    La description de l’ensemble S barre des données traitées pour lesquelles il n’y a pas de sorties à commander lors du déroulement du PGM doit toujours être effectué.
    Les interdictions de sortie constituent des actions qui figurent dans les tables de vérité au même titre que les actions de sortie ou de préparation des sorties.
    Par approche par les données l’arborescence hiérarchise les tests.

    Remarque

    Dans la plupart des cas l’arborescence est la meilleure solution dynamiquement parlant et toujours la meilleur statiquement parlant.

    Établissement d’une table de vérité

    -Indiquer sur le FLS, si nécessaire, les actions (traitements) à l’origine des sorties.
    - Vérifier que les occurrences sont les mêmes choses dans le FLE et le FLS. Si ce n’est pas le cas, indiquer les conditions de rejets, ce qui correspond à une traitement particulier.
    - Rechercher dans le FLE les conditions à tester.
    - Préciser le référentiel.
    - Retrouver ce référentiel dans le FLS.
    - Noter dans la table des actions alternatives origines des résultats de ce référentiel et dépendant directement des conditions.
    - Établir la table de vérité.
    - Au niveau de chaque action faire apparaître les ensembles vides de données.

    Étude d’une table de vérité

    But : obtenir des solutions optimisées du point de vue des tests à effectuer (temps d’exécution du PGM).

    - Actions disjointes ou incluses
    - Actions en intersection
    - Cas général

  2. Cas des actions disjointes ou incluses

    Règle

    Lorsque les sous-ensembles de données sur lesquels portent les actions sont disjoints ou inclus, la structure optimisée du PGM est une arborescence.
    Quand après simplification, l’expression Booléenne d’une action se présente comme la réunion de n sous-ensemble, cette action doit être considérée comme n actions indépendantes pour la construction du PGM.

    Remarque

    Dans la pratique les n actions identiques et indépendantes sont remplacées par l’appel à une sous programme.

    Recherche de points d’optimisation

    Selon la variable choisie comme pivot (point) les arborescences pourront être différentes.

    Règle

    Lorsque la simplification des expressions Booléennes est effectuée, les variables sont ordonnées et celle qui apparaît le plus fréquemment est choisie comme pivot.

  3. Actions en intersections. Alternatives consécutives

    Règle

    Lorsque les sous-ensembles de données d’une table de vérité sont en intersection, la structure optimisée du PGM est une structure en Alternatives Consécutives.

    Remarque

    Tout ensemble doit être en intersection avec les autres.

    Quand on a n variables et qu’il y a 2n ou 2n – 1 fonctions l’arborescence donne 3 tests statiques et 2 dynamiques, l’alternative consécutive donne 4 tests statiques et 4 dynamiques.

    Remarque

    Les appels à des sous programmes pratiques avec l’arborescence sont inutiles avec l’alternative consécutive.

    L’arborescence à toujours son intérêt quant aux tests dynamiques.

  4. Solutions combinées

    Définition

    On appelle solutions combinées, celles qui consistent à bâtir le PGM à partir de la table de vérité en partie en arborescence et en partie en alternative complexe ou consécutive (le nombre de solutions est pratiquement illimité).

    Règle

    Une solution combinée doit être recherchée chaque fois que l’étude d’une table de vérité fait apparaître des sous-ensembles de données disjoints ou inclus et d’autres non.

    De manière générale on va trouver 2 catégories de solutions combinées.

    1. Celles dont le plus haut niveau est constitué par une alternative complexe, auquel cas aucune des variables Booléennes n’est présente dans toutes les expressions.
    2. Celles dont le plus haut niveau est constitué par la racine d’une arborescence, auquel cas au moins une des variables est présente dans toutes les expressions Booléennes.




■ ■ ■ § ANNEXES ■ ■ ■

  1. Lois, Règles et Principes

    Les Lois du traitement rationnel des données

    Loi n° 1

    Tout ensemble doit être défini en compréhension.

    Loi n° 2

    Tout ensemble doit être rigoureusement défini.

    Loi n° 3

    Les relations entre les différents sous-ensembles doivent être rigoureusement définies.

    Loi n° 4

    Toute correspondance entre deux sous-ensembles doit être une application.

    Les lois de subdivision

    Loi n° 1

    On subdivise un ensemble de données s’il comprend des sous-ensembles qui peuvent s’y trouver présents un nombre de fois différent de 1.

    Loi n° 2

    On énumère dans leur ordre d’écriture les rubriques composant l’ensemble non sub-divisible, s’il y a lieu.

    La loi de correspondance : l’application

    Loi d’application

    À un élément de l’ensemble de niveau inférieur (N° Client) correspond un élément de l’ensemble de niveau supérieur l’incluant. Il y a donc application.
    On dit qu’il y a application de A sur B si quel que soit a de A il existe un seul élément b de B.

    Les lois et règles d’un ensemble de structure répétitive

    Règle

    Un ensemble de Structure Répétitive est un ensemble dans lequel on utilise plusieurs sous-ensembles de données de même nature.

    Loi de structuration N° 1 du PGM

    À toute structure répétitive à l’entrée, correspond une structure répétitive du programme, et une seule.

    Règle d’application

    L’ensemble « Programme de structure répétitive » comprend toujours :
    • un début à exécuter 1 fois
    • un sous-ensemble répétitif à exécuter n fois
    • une fin à exécuter 1 fois.

    Les lois et règles d’un ensemble de structure alternative

    Loi de structuration N° 2 du PGM

    À toute structure Alternative des données à l’entrée correspond une structure Alternative du PGM et une seule.

    Règle

    Un ensemble de PGM de structure Alternative comprend toujours :
    • Un sous-ensemble Début exécuté 1 fois
    • Deux sous-ensembles exécutés 0 ou 1 fois à l’exclusion l’un de l’autre
    • Un sous-ensemble Fin exécuté 1 fois

    Les lois et règles d’un ensemble de structure complexe

    Règle

    Une Structure Complexe comprend deux Structures Élémentaires ou plus ; le nombre de Séquences Logiques Intermédiaires est égal au nombre de Structures Élémentaires du Niveau considéré moins 1.

    Loi N° 3 de Structuration du PGM

    À toute structure Alternative Complexe des données à l’entrée correspond 1 table de vérité dont l’exploitation permet la structuration du programme.

    Structuration des données de Sortie

    Règle N° 1

    Lorsqu’un sous-ensemble de données à la sortie peut résulter de plusieurs actions, on doit compléter le tableau descriptif des données à la sortie en listant entre crochets, à côté de chaque résultat, les différentes actions à partir desquelles il peut être obtenu. Ces actions figurent, le cas échéant, dans les tables de vérité.

    Règle N° 2

    Lorsque la même donnée de sortie a plusieurs actions de traitements pour origine, on considère dans un premier temps, qu’il y a autant de données de sortie que d’origines. Dans un second temps, on regroupe les données de sortie communes à plusieurs traitements lorsque les simplifications par l’algèbre de Boole le permettent.

    Règle N° 3

    La description de l’ensemble S barre des données traitées pour lesquelles il n’y a pas de sorties à commander lors du déroulement du PGM doit toujours être effectué.

    Structuration des données d’Entrée

    Règle

    La construction d’un programme se fait à partir du FLE.

    Principe

    Lorsqu’un code est utilisé une fois dans un ensemble et qu’il peut prendre deux valeurs A et A’ testées au cours du PGM, on peut écrire l’ensemble de la manière suivante :
    Ens. { code [= X, 0,1 fois]

    Cas des actions disjointes ou incluses

    Règle

    Lorsque les sous-ensembles de données sur lesquels portent les actions sont disjoints ou inclus, la structure optimisée du PGM est une arborescence.

    Quand après simplification, l’expression Booléenne d’une action se présente comme la réunion de n sous-ensemble, cette action doit être considérée comme n actions indépendantes pour la construction du PGM.

    Règle

    Lorsque la simplification des expressions Booléennes est effectuée, les variables sont ordonnées et celle qui apparaît le plus fréquemment est choisie comme pivot.

    Actions en intersections. Alternatives consécutives

    Règle

    Lorsque les sous-ensembles de données d’une table de vérité sont en intersection, la structure optimisée du PGM est une structure en Alternatives Consécutives.

    Règle

    Une solution combinée doit être recherchée chaque fois que l’étude d’une table de vérité fait apparaître des sous-ensembles de données disjoints ou inclus et d’autres non.

    Organisation détaillée

    Deux règles sont à noter :

    1. Une Structure Alternative Simple comporte un branchement conditionnel et un seul. Il est placé à la fin de la séquence début de l’alternative.

      SI code = « F » faire tel traitement

    2. Toute Structure Alternative comporte autant de branchements systématiques qu’il y a de branches à l’alternative moins un.
      SINON faire tel autre traitement

    Règle

    Une instruction correspond à une séquence logique si elle est exécutée le même nombre de fois au même endroit du programme.

    Règle

    Le traitement d’un ensemble de données ne doit commencer que lorsque le critère d’identification des éléments de cet ensemble a été fixé et rangé.

    Les phases de traitements

    Règle N° 1

    Quand un PGM comprend une φ ou plus, on doit rédiger un tableau descriptif des données à l’entrée de chacune des φ. Ce tableau est construit comme un FLE et obéit aux mêmes règles, on l’appelle FLPn, "n" étant le numéro de la φ, avec n>1.

    Règle N° 2

    La construction du sous-ensemble du PGM correspondant à une φ de traitement se déduit du FLP correspondant.

    Règle N° 3

    L’ensemble des données à l’entrée d’une φ, différente de la première, constituant un sous-ensemble des sorties de la φ qui précède, doit être pris en compte pour effectuer le contrôle du PGM (validation).

  2. SIGLES et LEXIQUE

    SIGLES LEXIQUE
    EDD Ensemble Des Données
    SL Séquence Logique
    FLE Fichier Logique d’Entrée
    FLS Fichier Logique de Sortie
    FLP Fichier Logique de Phase (se note aussi φ)
    φ Phase
    SE Structure Élémentaire
    SA Structure Alternative
    SR Structure Répétitive
    SAS Structure Alternative Simple
    SAC Structure Alternative Complexe
    SRC Structure Répétitive Complexe
    SRC Structure Répétitive Complexe
    SCM Structure Complexe Mixte
    INTER Structure Logique INTERmédiaire
    GAD Groupe Alternatif de Données
    PGM ProGraMme
    PROG PROGramme
    D Début
    T Traitement
    F Fin
    MVT MouVemenT
    MEP Mise En Page
    MEI Mise à l’État Initial
    MER Mise En Réserve
    RAZ Remise À Zéro
    FF Fin Fichier
    EOF End Of File
    CI Critère d’Identification
    CR Critère de Référence
    ZC Zone de Calcul
    ZM Zone de Manœuvre
    ZR Zone de Réserve

  3. Quelques liens très utiles

    Nom : Jean-Dominique Warnier.png
Affichages : 23
Taille : 263,1 Ko Ingénieur chez Bull, Jean-Dominique WARNIER commença à publier au début des années 1970 de nombreux ouvrages concernant l'algorithmique et ses méthodes novatrices en matière de programmation.

    L'un des plus retentissants livres de Jean-Dominique WARNIER est son fameux « Logique de Construction des Programmes », plus connu sous l'abréviation LCP.

    Internet Archive propose une version eBook de ce livre publié en 1983 :

    PÉCIS DE LOGIQUE INFORMATIQUE (Jean-Dominique WARNIER)
    CONSTRUCTION ET TRANSFORMATION DES PROGRAMMES
    Tous les livres de Jean-Dominique WARNIER sont épuisés et ne seront vraisemblablement jamais réédités. Nous ne sommes plus que quatre inconditionnels à pérenniser ses travaux : Serge Meneut, M. Tourneur, Didier Genevois et moi-même APL-AML.

    La logique informatique (Blog de Serge Meneut - 01/09/2016 à fin 16/03/2017Rév. 2025)
    C’est presque toute l’œuvre de J-D Warnier (LDR, LCS, LCO, LCP) expliquée pédagogiquement.

    Logique de Construction des Programmes (Blog de M. Tourneur – 2000-2006)
    Source : Support de cours (1975, peut-être), pas de mise en page mais contenu intéressant.

    [TUTORIEL] Logique de Construction des Programmes (Billet de Blog APL-AML + PDF)
    Source : Blog de M. Tourneur mis en page et retravaillé.

    Méthodologie de programmation LCP (Billet blog APL-AML)
    Source : Réflexion personnelle, philosophique, pratique, sur LCP et le développement.

    LA PROGRAMMATION RATIONNELLE (Billet blog APL-AML)
    Source : Support de cours d’Yves LEROY (1971)

    Méthode Warnier (Page du site www.indg.fr)
    Source : Didier Genevois (INDG)

    Jean-Dominique Warnier (08/05/2020 - 05/08/1990)
    Source : Wikipédia

    Adeli – Explorateurs Des Espaces Numériques

    Warnier : une approche humaniste très actuelle
    La Lettre d’ADELI n° 84 – Été 2011 (document PDF)

    35 ans d’actions méthodologiques dans les S.I.
    La Lettre d’ADELI n° 93 – Automne 2013 (document PDF)

  4. Notions sur les ensembles




Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Viadeo Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Twitter Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Google Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Facebook Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Digg Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Delicious Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog MySpace Envoyer le billet « [TUTORIEL] LOGIQUE DE CONSTRUCTION DES PROGRAMMES » dans le blog Yahoo

Mis à jour 19/04/2025 à 05h32 par APL-AML

Catégories
DotNET , Windows Phone , ■ MÉTHODOLOGIES