Un logiciel polyvalent d'apprentissage de la programmation
Chapitre 1. Introduction
Chapitre 2. Le logiciel en bref
Chapitre 3. Premiers pas en algorithmique
Chapitre 4. Instructions conditionnelles
Chapitre 5. Boucles
Chapitre 6. Sous-programmes
Chapitre 7. Tableaux à une dimension
Chapitre 8. Tableaux à deux dimensions
Chapitre 9. Enregistrements
9.1. Présentation
9.2. Un peu de géométrie
9.3. Bon de commande
9.4. Travaux dirigés
Annexe : comment tester vos programmes ?
Page d'accueil Table des matières Niveau supérieur Page précédente Bas de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module

9.3. Bon de commande

Dans le chapitre 7, nous avons vu qu'un bon de commande pouvait être modélisé par plusieurs tableaux à une dimension (nom, prixUnitaire, quantite) et le nombre d'articles distincts (n). Nous allons ici les regrouper en un seul type :

class BonCommande {
    int n;
    String[] nom;
    double[] prixUnitaire;
    int[] quantite;
} 

Lorsqu'on déclare une variable bon de type BonCommande (BonCommande bon), on regroupe en une seule variable :

  • le nombre d'articles noté bon.n
  • tous les noms d'articles : bon.nom[0], bon.nom[1] ... bon.nom[bon.n-1]
  • tous les prix unitaires : bon.prixUnitaire[0], bon.prixUnitaire[1] ... bon.prixUnitaire[bon.n-1]
  • toutes les quantités : bon.quantite[0], bon.quantite[1] ... bon.quantite[bon.n-1]

La lisibilité du programme est donc améliorée, en particulier pour la fonction totalCommande qui n'a qu'un paramètre :

Programme principal Fonction totalCommande
void main() {
  // saisie des donnees
  BonCommande bon;
  bon.n = readInt("nombre d'articles :");
  bon.nom = new String[n];
  bon.prixUnitaire = new double[n];
  bon.quantite = new int[n];
  int i;
  for(i=0; i<bon.n; i=i+1) { 
    bon.nom[i]=readString("nom:");
    bon.prixUnitaire[i]=readDouble("prix:");
    bon.quantite[i]=readInt("quantite:");
  }
  // calcul et affichage du total
  double totalCom;
  totalCom = totalCommande(bon);
  print("le total de la commande vaut "); 
  println(totalCom);
}
double totalCommande(BonCommande bon) {
  int i;
  double total;
  total = 0;
  for(i=0; i<bon.n; i=i+1) { 
    total = total + bon.quantite[i] * 
                  bon.prixUnitaire[i];
  }
  return total;
}
Page d'accueil Table des matières Niveau supérieur Page précédente Haut de la page Page suivante Démarrage du logiciel Webographie du module Glossaire du module