Pour mettre en application se que nous avons vu en cours, je vous propose d’étudier le projet :
MAAC ( Machine Automatique A Coca ).
Pour réaliser ce projet nous devons construire une boucle do..while, mais nous aurons aussi a
compter et a accumuler des valeurs. Il faut dire que le comptage des valeurs, qu’elles soient, tiennent
une grande place dans les listings informatiques. Il existe au moins deux méthodes :
- La comptage d’un certain nombre de valeurs. (On compte le nombre de notes obtenues par un
étudiant).
- L’accumulation de valeurs (les notes de l’étudiant sont ajoutées les unes aux autres).
Ainsi le calcul de la moyenne des notes d’un étudiant s’effectue en divisant l’accumulation
des notes par le nombre (ou comptage) des notes obtenues.
Notre objectif :
Construire une machine virtuelle qui simulerait de façon simplifiée un distributeur automatique
de coca.
Cahier des charges :
Pour obtenir une canette, l’utilisateur doit fournir le montant indiqué en introduisant un certain
nombre de pièces de monnaie dans le distributeur. Celui ci n’accepte que les pièces de (5, 10, 20
dhs). Au fur et à mesure de l’introduction des pièces le distributeur affiche la valeur totale
engagée, ainsi que le nombre de pièces par catégorie (nombres de pièces de 5, 10…) Le
distributeur déclenche l’ouverture de la trappe à canette dès que le montant atteint (ou dépasse, car
elle rend la monnaie) le prix indiqué, à savoir 45 dhs (Prix d’ami).
Voilà, il ne vous reste plus qu’a faire le programme…mais non je plaisante, nous allons le faire
ensemble.
D’abord analysons ce cahier des charges. Le processus se déroule en trois étapes :
- 1. Introduire une à une des pièces dans le distributeur.
- 2. Pour chaque pièce engagée, il faut calculer et afficher :
- 2.1. le nombre de pièce de 20, 10 et 5 dhs.
- 2.2. la somme totale actuellement engagée.
- 3. Le prix fixé est il atteint ou dépassé ?
- 3.1. Non et dans ce cas on revient à la premièreligne d’instruction
- 3.2. Oui, alors on libère la trappe, on distribue la canette et on rend la monnaie si il y a lieu.
Tous les grands stratèges vous le diront : «Il faut diviser, pour régner ! » traduit dans le
monde informatique cela revient à dire qu’il faut essayer de résoudre les petits problèmes qui
constituent le grand ! Et c’est ce que vous allez faire en essayant de trouver une solution
pour chacun des points précédents.
- Premièrement :
Construction de la boucle et introduction des pièces.
En pratique, les points 1 et 3.1 décrivent une structure de boucle. L’introduction des pièces
dans la fente du distributeur est une opération répétitive, qui ne s’arrête que lorsque
l’utilisateur à engagé suffisamment de pièces dans l’appareil (c a d quand le montant du prix
est atteint ou dépassé), on peut donc écrire l’algorithme suivant :
Début répéter
Entrer une pièce de monnaie
Compter la somme engagée
Tant que la somme engagée ne dépasse pas 45 dhs, retourner à Début répéter.
Essayez de le traduire en langage C :- Deuxièmement :
compter le nombre de pièces et faire la somme totale
Pour compter le nombre de pièces, notre programme doit pouvoir faire la distinction entre les
différentes catégories de pièces. On va donc déclarer autant de variables qu’il y a de catégorie
int nbPièce20c = 0, nbPièce10c = 0, nbPièce5c = 0, pièce, totalReçu = 0 ;
On à aussi déclarer une variable « pièce » qui accueil la valeur saisie au clavier ainsi qu ‘une
variable « totalReçu » qui représente la sommetotale engagée en cours d’exécution de la
boucle.
Pour arriver à nos fins, compter séparément les pièces de monnaies par catégories, la meilleur
méthode consiste à placer dans la boucle do..while une structure switch qui distinguera 4 cas :
switch (pièce)
{
case 5 :
// Compter les pièces de 5 cents
break ;
case 10 :
// Compter les pièces de 10 cents
break ;
case 20 :
// Compter les pièces de 20 cents
break ;
default :
printf (« Votre pièce n’est pas autorisée : « ) ;
}
Pour calculer la somme totale engagée à chaque pièce introduite, la technique est un peu
différente de la précédente. En effet, la somme engagée doit être augmentée non plus du
nombre de pièces introduite, mais de la valeur de la pièce. L’incrément lui aussi n’est plus de
1 mais correspond à la valeur de la pièce. L’instruction d’accumulation est la suivante :
TotalReçu = TotalReçu + pièce ;
Constat :
Ce calcul est réalisé quelle que soit la valeur de la pièce, du coup, on placera l’instruction
en dehors de la structure swich, mais à l’intérieurde la boucle.
Mais attention, pour éviter d’accumuler dans totalReçu la valeur d’une pièce non autorisée, il
nous faut modifier la valeur de la pièce dans l’étiquette default de la structure switchpar
l’instruction :
default : Pièce = 0 ; printf (« pièce interdite« ) ;
Ainsi lorsqu’une « mauvaise » pièce est introduite,la variable pièce prend la valeur 0 afin de
ne pas modifier indûment la variable totalReçu.
- Troisièmement :
Le prix fixé est il atteint ou dépassé
Quand le montant du prix est atteint, le programme le signale par l’instruction :
printf (« Merci, je vous donne votre boisson ! ») ;
Enfin il nous reste un dernier détail à régler, la détection du trop perçu : on test si la variable
totalReçu dépasse 45, et si tel est le cas, on calcul la monnaie à rendre :
If (totalReçu > 45)
printf (« et je vous rends : « + ( totalReçu– 45) + « dhs ») ;
pour voir la correction en langage ç ,envoyer un message sur cette email : yassineennajem68@gmail.com
Merci de votre attention!!
تحويل كودإخفاء محول الأكواد الإبتساماتإخفاء