PROGRAMMATION : TYPES, STRUCTURES (4)
Liste des figures
Figure fig_aa01_310109
figure 0001
Figure fig_sa01_090210_structure
figure 0002
Figure fig_sa02_090210_structure
figure 0003
Figure fig_sa03_090210_structure
figure 0004
Asymptote - Figure 0001: fig_aa01_310109.asy
(Code compilé avec Asymptote version 2.14svn)
largeur320 Figure fig_aa01_310109
/* Types de données :
   - void 
   - bool, bool3
   - int, real
   - pair, triple
   - string
   - path, guide
   - pen
   - transform
   - picture, frame
   - ...
*/

frame f;
label(f,"\textbf{types de donn\'ees}",yellow,Fill(.5blue));
add(rotate(20)*scale(3)*f);
Asymptote - Figure 0002: fig_sa01_090210_structure.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_sa01_090210_structure
struct eleve {
  string nom;
  string prenom;
  int    age;
  void operator init(string nom, string prenom, int age){
    this.nom=nom;
    this.prenom=prenom;
    this.age=age;
  }
}

eleve el1 = eleve("Dupont","Martine",15),
      el2 = eleve("Durand","Jean",17),
      el3 = eleve("Duval","Robert",16);

size(5cm);      
label(el1.prenom,(0,0));
label(string(el2.age),(1,-1));
label(el3.nom,(2,-2));
Asymptote - Figure 0003: fig_sa02_090210_structure.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_sa02_090210_structure
struct eleve {
  string nom;
  string prenom;
  int    age;
  void operator init(string nom, string prenom, int age){
    this.nom=nom;
    this.prenom=prenom;
    this.age=age;
  }
}

eleve el1 = eleve("Dupont","Martine",15),
      el2 = eleve("Durand","Jean",17),
      el3 = eleve("Duval","Robert",16);

eleve[] classe = {el1,el2,el3};
      
size(5cm);      
label(classe[0].prenom,(0,0));
label(string(classe[1].age),(1,-1));
label(classe[2].nom,(2,-2));
Asymptote - Figure 0004: fig_sa03_090210_structure.asy
(Code compilé avec Asymptote version 1.95svn)
largeur320 Figure fig_sa03_090210_structure
// Définition du type JOUEUR : chaque instance de ce type 
// est caractérisée par - un nom,
//                      - un salaire.
struct joueur {
  string nom;
  real   salaire;
  void operator init(string nom, real salaire){
    this.nom=nom;
    this.salaire=salaire;
  }
}
// Définition du type EQUIPE : chaque instance de ce type 
// est caractérisée par - un nom d'équipe, 
//                      - une liste de joueurs (liste d'éléments de type JOUEUR)
//                      - le montant total des salaires des joueurs de l'équipe
//                        qui est calculé via la fonction totaldessalaires().
struct equipe {
  string   nom_equipe;
  joueur[] joueursdelequipe;
  real     totaldessalaires;  
  void operator init(string nom_equipe,joueur[] joueursdelequipe=new joueur[]){
    this.nom_equipe=nom_equipe;
    this.joueursdelequipe=joueursdelequipe;
    this.totaldessalaires=0;
  }
  void totaldessalaires(){
    for(int i=0; i<joueursdelequipe.length; ++i)
     this.totaldessalaires+=joueursdelequipe[i].salaire;
  }
}
// Un exemple d'objet de type EQUIPE : eq1
equipe eq1=equipe("France",
                  new joueur[] {joueur("Dupont",150000),
                                joueur("Durand",200000),
                                joueur("Martin",250000)});

// Affichage de quelques valeurs particulières
size(6cm);
label(eq1.joueursdelequipe[1].nom,(0,0)); // le nom du 2ème joueur de eq1
label(string(eq1.joueursdelequipe[2].salaire),(1,-1)); // le salaire du 3ème joueur
label(string(eq1.joueursdelequipe.length),(2,-2)); // le nombre de joueurs de eq1

label(string(eq1.totaldessalaires),(3,-3)); // le total des salaires avant calcul
eq1.totaldessalaires();
label(string(eq1.totaldessalaires),(3,-4)); // le total des salaires après calcul

Dernière modification le Fri Oct 28 13:00:37 CEST 2011 par G.Marris       Valide XHTML