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
Description du fichier ancienStock
Un enregistrement du fichier ancienStock contient :
-
numero : numéro de produit
-
libelle : libellé du produit
-
quantite : quantité
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.
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
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)
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).
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)
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
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.
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.
b. Rappel : description d’enregistrement des fichiers comm et commd
Le fichier vente1 a la même description que le fichier vente.
c. Rappel : description d’enregistrement du fichier vente
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.