Solution des exercices
Chapitre 1 – Environnement
algorithmique et conventions
Exercice1: Syntaxe algorithmique
1. Lalgorithme emprunt montre comment utiliser le pseudo-langage pour écrire un
programme. Le calcul de la mensualité se décompose en trois calculs plus simples.
Calcul1 = C×T
Calcul2 = (1+T)N
Calcul3 = (1+T)N –1
La syntaxe « ** » représente le calcul de la puissance. Les commentaires utilisent la
notation commune aux langages C, C++ et Java « // ». Les commentaires en C sont
notés « /* … */ », mais la plupart de compilateurs acceptent la notation « // » du C++.
« Pseudo-code »
•Programme emprunt
•Déclarations
• Variables Mensuali, Capital en Réel
• Variables TauxMensuel, TauxAnnuel en Réel
• Variables Calcul1, Calcul2, Calcul3 en Réel
• Variables NbAn, NbMois en Entier
•Début
• // Saisie des données initiales
• Écrire (“Montant du capital emprunté :)
• Lire(Capital)
• Écrire (“Nombre dannées :)
• Lire(NbAn)
• Écrire (“Taux Annuel (exemple 5,5 %):)
• Lire(TauxAnnuel)
• // Calculs
• NbMois NbAn*12
• TauxMensuel (TauxAnnuel/100)/12
• calcul1 Capital*TauxMensuel
• calcul2 (1+TauxMensuel)**NbMois
• calcul3 calcul 2-1
• Mensuali calcul1*(calcul2/calcul3)
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
2 Algorithmique
• // Affichage du résultat
• Écrire (“Mensualité :,Mensuali)
•Fin
2. Le programme C emprunt.c utilise la fonction pow() qui calcule la puissance, ce qui
implique l’utilisation du fichier den-tête « math.h » et la compilation avec loption –lm.
« C »
•/* emprunt.c */
•#include <stdio.h>
•#include <math.h>
•main()
•{
• float Mensualite,Capital ;
• int NbAn,NbMois ;
• float TauxMensuel,TauxAnnuel ;
• float calcul1,calcul2,calcul3 ;
• /* Saisie des données initiales */
• printf(“Capital :) ;
• scanf(%f”,&Capital) ;
• printf(“Nombre dannées :) ;
• scanf(%d”,&NbAn) ;
• printf(“Taux Annuel (5.5) :) ;
• scanf(%f”,&TauxAnnuel) ;
• /* Calculs */
• NbMois = NbAn*12 ;
• TauxMensuel = (TauxAnnuel/100)/12 ;
• calcul1 = Capital*TauxMensuel ;
• calcul2 = pow((1+TauxMensuel),NbMois);
• calcul3 = calcul2-1;
• Mensualite = calcul1*(calcul2/calcul3) ;
• /* Affichage du résultat */
• printf(“Mensualité : %8.2f\n,Mensualite);
•}
La commande de compilation est :
$ cc emprunt.c -o emprunt -lm
Le résultat de ce programme est :
$ emprunt
Capital :100000
Nombre d’années :10
Taux Annuel (5.5) :4.65
Mensualité : 1043.63
Voici le programme source C++ emprunt.cpp effectuant le même traitement.
« C++ »
•// emprunt.cpp
•#include <cstdio>
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
Solution des exercices 3
•#include <cmath>
•int main()
•{
• // Saisie des données initiales
• float Capital ;
• printf(“Capital :) ;
• scanf(%f”,&Capital) ;
• printf(“Nombre dannées :) ;
• int NbAn ;
• scanf(%d”,&NbAn) ;
• float TauxAnnuel ;
• printf(“Taux Annuel (5.5) :) ;
• scanf(%f”,&TauxAnnuel) ;
• // Calculs
• int NbMois = NbAn*12 ;
• float TauxMensuel = (TauxAnnuel/100)/12 ;
• float calcul1 = Capital*TauxMensuel ;
• float calcul2 = pow((1+TauxMensuel),NbMois);
• float calcul3 = calcul2-1;
• float Mensualite = calcul1*(calcul2/calcul3) ;
• // Affichage du résultat
• printf(“Mensualité : %8.2f\n,Mensualite);
•}
La commande de compilation est :
$ make emprunt
c++ emprunt.cpp -o emprunt
Lexécution est identique à celle du programme C.
Enfin, voici le programme source Java emprunt.java. Il utilise la fonction Math.pow()
qui calcule la puissance.
« Java »
•// emprunt.java
•import java.io.*;
•import java.util.*;
•public class emprunt {
• public static void main(String[] args) {
• // Saisie des données initiales
• Scanner Entree = new Scanner(System.in);
• System.out.print(Capital : “) ;
• double Capital=Entree.nextDouble();
• System.out.print(“Nombre dannées :) ;
• int NbAn=Entree.nextInt() ;
• System.out.print(Taux Annuel (5,5) :);
• double TauxAnnuel=Entree.nextDouble();
• Entree.close();
• // Calculs
• int NbMois = NbAn*12 ;
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
4 Algorithmique
• double TauxMensuel = (TauxAnnuel/100)/12 ;
• double calcul1 = Capital*TauxMensuel ;
• double calcul2 = Math.pow((1+TauxMensuel),NbMois);
• double calcul3 = calcul2-1;
• double Mensualite = calcul1*(calcul2/calcul3) ;
• // Affichage du résultat
• System.out.printf(“Mensualité : %8.2f\n”,Mensualite);
• }
•}
Ce programme utilise la classe Scanner de Java, et il affiche les résultats avec la méthode
printf dont la syntaxe est similaire à celle du langage C. La commande de compi-
lation est :
$ javac emprunt.java
Voici une exécution de ce programme. Les valeurs réelles sont notées avec la virgule
au format français :
$ java emprunt
Capital : 100000
Nombre d’années :10
Taux Annuel (5,5) :4,65
Mensualité : 1043,63
Exercice2: Modélisation de données
Cet exercice n’a pas pour objet de résoudre le problème complexe de la gestion de stock
dans sa totalité, mais de montrer comment faire une modélisation des données selon
une liste dactions à entreprendre. La modélisation présentée peut donc être complétée.
1. Résumons la gestion d’un stock darticles de sport à six grandes actions : lajout
dun nouvel article, la suppression dun article, la modification dun article, la vente
dun article, la commande dun article, laffichage du stock.
La première action correspond au référencement dun nouvel article au catalogue du
magasin.
La deuxième action correspond à son retrait.
La troisième action permet de modifier les informations de larticle, soit son libellé s’il
est erroné, son prix de vente pour les périodes de soldes, ou le nombre dexemplaires
de cet article. Cette dernière action correspond à l’inventaire. La modification d’un
article suppose de pouvoir le trouver grâce à sa référence, donc de disposer dun module
de recherche qui travaille à partir du numéro de larticle, et qui retourne ladresse en
mémoire où est rangé larticle.
La quatrième action effectue la vente dun article. Cela consiste à trouver larticle dans le
stock, à extraire son prix de vente, et à diminuer le stock du nombre dexemplaires vendus.
La cinquième action traite de la commande dun article. Elle peut être manuelle ou
automatique. La commande manuelle est calquée sur le module de modification
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
Solution des exercices 5
appliqué à la quantité. La commande automatique est déclenchée quand la quantité
en stock est inférieure à un certain seuil prédéfini.
La sixième action affiche le stock. Laffichage peut être sélectif (par article recherché),
ou selon un critère comme un prix minimal ou maximal.
Dans cette étude, certaines informations connexes ne sont pas traitées, comme la
base des fournisseurs ou la gestion des vendeurs. Enfin, le stock est conservé dans
un fichier, ce qui suppose qu’au lancement du logiciel, le fichier contenant le stock
est totalement chargé en mémoire, et qu’à larrêt du logiciel, le stock qui se trouve en
mémoire est sauvegardé dans le fichier dorigine. Les modules de chargement et de
sauvegarde ne sont pas présentés, car ils nont pas dincidence sur la modélisation de
la donnée « article ».
La figure A.1 présente lorganisation des différents modules de traitement, autour
du stock du magasin. Le module recherche_article() est utilisé par la majorité des
modules, il doit être optimisé. Les algorithmes de tris et de recherches sont étudiés aux
chapitres 6 et 7. Tous les modules partagent une même donnée, le stock du magasin,
mais chaque module travaille de manière autonome.
DVD
ROM
CDR-W
ROM
HD
Power
Stock des articles
recherche_article()
Recherche d’un article
affichage()
Affichage d’un article
Affichage du stock
retrait_articles()
Boucle de retrait des articles
Caisse
Poste de gestion
vente_article()
Boucle de vente d’articles
modif_article()
Modification d’un article
commande _article()
Commande d’un article
ajout _articles()
Boucle de saisie des
nouveaux articles
FigureA.1 Gestion du stock d’un magasin.
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
1 / 78 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !