Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Développement informatique
  3. Algorithmique
Extrait - Développement informatique Apprenez à concevoir avant de programmer
Extraits du livre
Développement informatique Apprenez à concevoir avant de programmer
3 avis
Revenir à la page d'achat du livre

Algorithmique - Alternatives complexes

Préambule

On parle d’alternatives complexes quand, dans la décomposition des données d’entrée, apparaissent plusieurs structures alternatives au même niveau de décomposition.

Mise à jour du fichier "stock" avec incidents

1. Sujet

images/01132a.png

Description du fichier ancienStock

Un enregistrement du fichier ancienStock contient :

  • numero : numéro de produit

  • libelle : libellé du produit

  • quantite : quantité

images/01132b.png

Structure correspondante :


typedef struct 
{ 
    char numero[3]; 
    char libelle[21]; 
    int  quantite; 
} PRODUIT;
 

Organisation du fichier : séquentielle

Critères de tri :

  • numero (N° de produit)

Il y a un enregistrement par produit.

Ce fichier est fourni. Son chemin d’accès est : C:\C\fichiers\ancienStockCplx

Description du fichier mouvements

Un enregistrement du fichier mouvements contient :

  • numeroProduit : numéro de produit

  • quantite : quantité

  • code : code (E ou S)

La quantité d’un mouvement en entrée (E) s’ajoute à la quantité en stock.

La quantité d’un mouvement en sortie (S) est déduite de la quantité en stock.

images/01132c.png

Structure correspondante :


typedef struct 
{ 
    char numeroProduit[3]; 
    int  quantite; 
    char code; 
} MOUVEMENT;
 

Organisation du fichier : séquentielle

Critères de tri :

  • numeroProduit (N° de produit)

Il y a 0 (zéro) ou n enregistrements par produit.

Ce fichier est fourni. Son chemin d’accès est : C:\C\fichiers\mouvementsCplx

Exemple

images/exempleP254.PNG

Chaque enregistrement du fichier ancienStock donne naissance à un enregistrement dans le fichier nouveauStock.

Seule la quantité de chaque produit évolue en fonction des quantités des mouvements qui le concernent. Si le code du mouvement est E (Entrée), la quantité en mouvement est ajoutée à la quantité du produit. Si le code vaut S (Sortie), elle est soustraite.

Il y a incident quand un enregistrement du fichier mouvements ne correspond à aucun produit du fichier ancienStock. Dans ce cas, l’enregistrement mouvements est imprimé sur l’état des incidents.

2. Décompositions hiérarchiques

Décomposition des fichiers de sortie (nouveauStock et incidents)

images/captureP255.PNG

L’ensemble des données de sortie est l’ensemble des données présentes dans les deux fichiers. Cet ensemble se présente comme un ensemble de données concernant un produit, autant de fois qu’il y a de produits (ensembles grisés).

images/01132e.png

Pour chaque...

Mise à jour du fichier des employés

1. Sujet

Le programme à réaliser permet de mettre à jour un fichier d’employés.

On constitue un nouveau fichier des employés (EMPNouveau) à partir de trois fichiers :

  • L’ancien fichier des employés (EMPAncien)

  • Un fichier d’employés à créer (EMPCreation)

  • Un fichier d’employés à modifier (EMPModif)

images/01133a.png

Structure correspondant aux quatre fichiers :


typedef struct 
{ 
    char numero[3]; 
    char infos[21]; 
} EMPLOYE;
 

Les fichiers d’entrée sont fournis. Leur chemin d’accès est :

C:\C\fichiers\EMPAncien

C:\C\fichiers\EMPCreation

C:\C\fichiers\EMPModif

Pour chaque employé, on recopie dans le fichier EMPNouveau un enregistrement qui provient de l’un des trois fichiers d’entrée.

  • On recopie l’enregistrement de EMPAncien si l’employé n’est ni modifié, ni créé.

  • On recopie l’enregistrement de EMPCréation si l’employé n’est ni ancien, ni modifié.

  • On recopie l’enregistrement de EMPModif si l’employé est ancien, et non créé.

Les autres cas correspondent aux situations d’incident :

L’employé a un enregistrement sur EMPAncien et sur EMPCreation.

L’employé a un enregistrement sur EMPModif et pas sur EMPAncien.

Exemple

images/01133b.png

2. Décompositions hiérarchiques

Décomposition des sorties

Pour chaque employé, il y a écriture dans le fichier EMPNouveau (e.d.c. 1 employeN(0-1)) ou sur l’état des incidents (e.d.c. 1 incident(0-1)).

Décomposition des entrées

Pour chaque employé, il peut y avoir un enregistrement dans un, deux ou trois des fichiers d’entrée.

images/captureP265.PNG

3. Validation

Il n’y a aucune donnée à tester.

4. Organigramme

numEmp contient le numéro d’employé à traiter. Cette variable est affectée lors de l’appareillage.

Dans les tests, les lettres indiquées signifient :

  • a : empA.numEmp == numEmp ?

  • c : empC.numEmp == numEmp ?

  • m : empM.numEmp == numEmp ?

empA, empC, empM sont des variables de type EMPLOYE, pour la lecture des fichiers EMPAncien, EMPCreation, EMPModif

Signification des sigles dans les pavés :

D.A : début du traitement d’un employé...

Travail pratique : mise à jour de l’historique des ventes

1. Sujet

But du programme

Il s’agit de mettre à jour l’historique des ventes en y ajoutant de nouveaux enregistrements.

a. Schéma du traitement

Le programme à réaliser permet de mettre à jour l’historique des ventes. Un fichier vente1 est constitué à partir du fichier vente et des fichiers comm et commd.

Le fichier vente est celui qui a été utilisé dans le travail pratique "Statistiques sur les chiffres d’affaires" du chapitre Algorithmique - Les tableaux. C’est un historique des ventes que le programme doit mettre à jour.

Les fichiers comm et commd sont ceux qui ont été utilisés dans le travail pratique ’Edition de factures" du chapitre Algorithmique - Données de phase, sauts de page. Ils contiennent des commandes et des commandes de dépannage. C’est à partir de ces deux fichiers que le programme génère de nouveaux enregistrements dans l’historique.

La date de facturation des nouveaux enregistrements de vente1 est saisie au clavier en début de programme.

images/01134a.png

b. Rappel : description d’enregistrement des fichiers comm et commd

images/comm13.PNG

Le fichier vente1 a la même description que le fichier vente.

c. Rappel : description d’enregistrement du fichier vente

images/captureP272.PNG

d. Traitement

  • Entrer la date de facturation au clavier en début de programme (JJ/MM/AAAA).

  • Lire entièrement les trois fichiers : historique des ventes (vente), commandes normales (comm) et commandes de dépannage (commd).

  • Chaque enregistrement du fichier des ventes (vente) en entrée est recopié sur le fichier de sortie (vente1).

  • Chaque enregistrement du fichier des commandes normales (comm) ou du fichier des commandes dépannage (commd) donne lieu à la création d’un nouvel enregistrement sur l’historique des ventes (vente1). Sur cet enregistrement, la date de facturation est celle qui a été saisie au clavier, et le prix de vente HT est calculé selon la formule suivante : produit de la quantité par le prix unitaire.

Au prochain traitement, le fichier vente1 devra prendre la place du fichier vente. C’est le principe de la rotation des fichiers historiques.

2. Mise à jour de l’historique des ventes : proposition...