Solution des exercices
Chapitre 1 – Environnement
algorithmique et conventions
Exercice1: Syntaxe algorithmique
1. L’algorithme 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 Mensualité, 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 d’anné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
• Mensualité ← calcul1*(calcul2/calcul3)
© 2013 Pearson France – Algorithmique. Applications aux langages C, C++ et Java
2 ◆ Algorithmique
• // Affichage du résultat
• Écrire (“Mensualité :”,Mensualité)
•Fin
2. Le programme C emprunt.c utilise la fonction pow() qui calcule la puissance, ce qui
implique l’utilisation du fichier d’en-tête « math.h » et la compilation avec l’option –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 d’anné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 d’anné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
L’exé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 d’anné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 d’actions à entreprendre. La modélisation présentée peut donc être complétée.
1. Résumons la gestion d’un stock d’articles de sport à six grandes actions : l’ajout
d’un nouvel article, la suppression d’un article, la modification d’un article, la vente
d’un article, la commande d’un article, l’affichage du stock.
La première action correspond au référencement d’un nouvel article au catalogue du
magasin.
La deuxième action correspond à son retrait.
La troisième action permet de modifier les informations de l’article, soit son libellé s’il
est erroné, son prix de vente pour les périodes de soldes, ou le nombre d’exemplaires
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 d’un module
de recherche qui travaille à partir du numéro de l’article, et qui retourne l’adresse en
mémoire où est rangé l’article.
La quatrième action effectue la vente d’un article. Cela consiste à trouver l’article dans le
stock, à extraire son prix de vente, et à diminuer le stock du nombre d’exemplaires vendus.
La cinquième action traite de la commande d’un 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. L’affichage 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’à l’arrêt du logiciel, le stock qui se trouve en
mémoire est sauvegardé dans le fichier d’origine. Les modules de chargement et de
sauvegarde ne sont pas présentés, car ils n’ont pas d’incidence sur la modélisation de
la donnée « article ».
La figure A.1 présente l’organisation 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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!