Algorithmique - Présentation de la méthode
Objectifs du chapitre
-
Décomposer hiérarchiquement un ensemble de données.
-
À partir des décompositions des données écrites (données de sortie) et des données lues (données d’entrée) par le programme, établir l’organigramme structuré de la logique de l’application.
-
Écrire le programme à partir de l’organigramme.
Présentation de la méthode
1. Pourquoi une méthode de programmation ?
Dans un projet informatique, la première chose qu’exprime en général le futur utilisateur, c’est le résultat qu’il souhaite. "Je veux un programme pour gérer mon stock, je souhaite un site web pour présenter ma société...". Il faut alors regarder en quoi consiste le stock, quels sont les renseignements que le site web doit présenter ? Etc.
Enfin, ayant établi avec précision la liste des données disponibles, et l’ensemble des résultats à obtenir, le développeur programme la logique qui permet d’arriver au résultat voulu. On dit qu’il conçoit l’algorithme de la solution.
Une recette de cuisine est un algorithme. Quel est le plat que je veux réaliser ? Ai-je les ingrédients pour le réaliser ? Enfin, comment m’y prendre ? Quelle est la recette ?
L’art de l’informaticien est de découvrir la recette, l’algorithme à programmer.
Dans les chapitres précédents, nous avons réalisé des programmes sans utiliser de méthode. Un raisonnement logique, traduit convenablement en instructions structurées du langage (if, while...) suffit souvent pour résoudre les problèmes.
Quand la complexité...
Exemple : édition de factures
1. État de sortie à obtenir
Pour chaque client, on imprime des lignes "facture". Chacune d’entre elles contient un numéro de facture, le montant de la facture, et une remise de 10 % sur le montant de la facture si celui-ci dépasse 2.000 €.
2. Décomposition de l’état de sortie
Quand on examine l’état, on constate qu’il est organisé "client par client" :
Chaque sous-ensemble grisé est un ensemble de données concernant un client.
L’ensemble de l’état peut être décrit comme un ensemble de données concernant un client autant de fois qu’il y a de clients.
On peut le noter ainsi :
e.d.c.: abréviation pour « ensemble de données concernant ».
(c) : cardinalité répétitive pour : autant de fois qu’il y a de clients.
On s’intéresse maintenant à l’organisation des données d’un client, par exemple à celles du client 001 :
Chaque sous-ensemble grisé est un ensemble de données concernant une facture.
L’ensemble des données d’un client peut être décrit comme : un numéro de client (ncli) présent 1 fois, puis un ensemble de données concernant une facture autant de fois qu’il y a de factures.
On peut le noter ainsi :
On s’intéresse maintenant à l’organisation des données d’une facture :
Le sous-ensemble grisé correspond à une remise.
L’ensemble des données d’une facture peut être décrit comme : un numéro de facture (nfac) présent 1 fois, un montant de facture (mont) présent une fois et une remise présente 0 ou 1 fois.
Décomposition complète :
3. Le fichier des factures
Les informations nécessaires à l’édition des factures sont lues dans un fichier d’entrée dont les enregistrements ont la structure suivante :
Ce fichier séquentiel est trié sur le N° CLIENT. Il ne comporte qu’un enregistrement par facture.
Structure correspondante :
typedef struct
{
char ncli[4];
char nfac[6];
float mont;
} FACTURE;
On considère que le fichier...
Travail pratique : statistique des ventes
1. Commentaire sur l’énoncé
L’énoncé du travail pratique est inspiré de dossiers professionnels.
Il fixe les noms des variables, que ce soit en édition ou en lecture. Ainsi, d’un programmeur à l’autre, le respect de l’énoncé et de la méthode conduit à des programmes semblables.
L’énoncé contient :
-
une brève description du but de l’application ;
-
un schéma de traitement ;
-
une description de l’état à obtenir, avec à droite, le nom de chacune des lignes ;
-
la description de chaque ligne ;
-
d’éventuelles caractéristiques particulières de l’état ;
-
une description des fichiers.
L’énoncé, l’organigramme, les résultats obtenus et le programme constituent un dossier de programmation assez complet.
2. Sujet
a. But du programme
Éditer une statistique des ventes, présentée par secteur, par représentant et par client.
b. Schéma du traitement
c. État de sortie à obtenir
Les lignes d’impression sont identifiées par un code : LE1, LE2, LE3, LD1, LT1, LT2, LT3.
d. Lignes d’impression
e. Caractéristiques de l’état
-
Saut de page : une fois par secteur.
-
Toutes les informations d’un secteur tiennent sur une page.
-
Le total général est imprimé sur la même page que le dernier secteur.
f. Description du fichier : versements
Un enregistrement du fichier versements contient :
Structure correspondante :
typedef struct
{
char nosect[3];
char norep[4];
char nocli[5];
char nofac[6];
double mont;
char codpays[3];
} VERSEMENT;
Organisation du fichier : séquentielle
Critères de tri :
-
nosect (numéro de secteur),
-
norep (numéro de représentant),
-
nocli (numéro de client).
Ce fichier est fourni. Son chemin d’accès est : C:\C\fichiers\versements
Son contenu est le suivant :
3. Proposition de correction
a. Décomposition hiérarchique de l’état de sortie
L’état se présente comme un ensemble de données concernant un secteur, autant de fois qu’il y a de secteurs (ensembles grisés)....