Dans une application de géométrie nous manipulons des points et des vecteurs.
Dans toutes les applications supposant la résolution de systèmes d’équations linéaires, nous manipulons des vecteurs et des matrices.
Dans une application de gestion de la scolarité nous manipulons des étudiants et des matières.
Dans une application de gestion commerciale nous manipulons des produits, des clients et des fournisseurs.
Ce sont des données complexes
Un point p se définit par un couple (x,y) si on est dans le plan et par un n-uplet \((x_1,...,x_n)\) si on est dans un espace de dimension n.
Un vecteur de Rn se définit par un n-uplet \((x_1, ..., x_n)\) de réels.
Une matrice à n lignes et m colonnes se définit par m n-uplets \((x_{i1},...,x_{in})\) de réels.
Un étudiant est défini, par exemple, par un nom, un prénom et une année d’études.
Un produit est défini, par exemple, par un code et un libellé.
Un client (ou un fournisseur) est défini, par exemple, par un code, un nom et une adresse.
Enregistrement nomEnregistrement
nomChampsA: typeChampsA
nomChampsB: typeChampsB
...
nomChampsX: typeChampsX
FinEnregistrement
Variables
nomVariable: nomEnregistrement
FinVariables
Enregistrement Produit
reference: Entier
nom: Texte
FinEnregistrement
Tableaux d’enregistrements
G1
Algorithme:
Enregistrement Etudiant
nom: texte
prenom: texte
moyenne: flottant
FinEnregistrement
Variables
etudiants : tableau de 20 étudiants
nbnotes, e, i: entier
somme: flottant
note: flottant
FinVariables
Debut
Lire(nbnotes)
Pour e allant de 1 à 20
somme <- 0
Ecrire("Etudiant: " & etudiants[e].nom
& " " & etudiants[e].prenom)
Pour i allant de 1 à nbnotes
Ecrire("Saisir note:")
Lire(note)
somme <- somme + note
FinPour
etudiants[e].moyenne <- somme / nbnote
FinPour
Fin
Exemple préliminaire en Java:
class Etudiant {
String nom;
String prenom;
double moyenne;
}
public class MoyennesEtudiants {
double saisirFlottant(String message) {return 0.0; }
int saisirEntier(String message) {return 0; }
void saisirNotes(Etudiant[] etudiants, int nbnotes) {
for(int e = 0 ; e < etudiants.length; e++){
double somme = 0.0;
System.out.println("Etudiant: "+ etudiants[e].nom+
" "+ etudiants[e].prenom);
for(int i = 0 ; i < nbnotes; i++){
double note = saisirFlottant("Saisir note: ");
+= note;
somme } // FinPour
[e].moyenne = somme / nbnotes;
etudiants}
}
}
Programme plus avancé
import java.util.Scanner;
class Etudiant {
String nom;
String prenom;
double moyenne;
}
public class MoyennesEtudiants {
public static void main(String[] args) {
[] listeEtudiants = new Etudiant[3];
Etudiant[0] = new Etudiant();
listeEtudiants[0].prenom = "Aya";
listeEtudiants[0].nom = "Nakamura";
listeEtudiants[1] = new Etudiant();
listeEtudiants[1].prenom = "Nej";
listeEtudiants[1].nom = "Nej";
listeEtudiants[2] = new Etudiant();
listeEtudiants[2].prenom = "Freddy";
listeEtudiants[2].nom = "Mercury";
listeEtudiantsint nbnotes = saisirEntier("Donner le nombre de notes à saisir:");
saisirNotes(listeEtudiants, nbnotes);
}
static void saisirNotes(Etudiant[] etudiants, int nbnotes) {
for(int e = 0 ; e < etudiants.length; e++){
double somme = 0.0;
System.out.println("Etudiant: "+ etudiants[e].nom+
" "+ etudiants[e].prenom);
for(int i = 0 ; i < nbnotes; i++){
double note = saisirFlottant("Saisir note: ");
+= note;
somme } // FinPour
[e].moyenne = somme / nbnotes;
etudiants}
}
static double saisirFlottant(String message) {
System.out.println(message);
Scanner scanner = new Scanner(System.in);
double valeur = scanner.nextDouble();
.close();
scannerreturn valeur;
}
static int saisirEntier(String message) {
System.out.println(message);
Scanner scanner = new Scanner(System.in);
int valeur = scanner.nextInt();
.close();
scannerreturn valeur;
}
}
G2
Enregistrement Etudiant
nom: Texte
prenom: Texte
moyenne: flottant
FinEnregistrement
Variables
nbnotes: entier
etudiant: Etudiant
etudiants: tableau de 3 Etudiant
FinVariables
Debut
nbnotes <- 2
etudiant <- créer Etudiant
etudiant.nom <- "Nakamura"
etudiant.prenom <- "Aya"
etudiant.moyenne <- (15 + 6.5) / nbnotes
etudiants[0] <- etudiant
etudiant <- créer Etudiant
etudiant.nom <- "Mercury"
etudiant.prenom <- "Freddy"
etudiant.moyenne <- (12 + 11.5) / nbnotes
etudiants[1] <- etudiant
etudiants[2] <- créer Etudiant
etudiants[2].nom <- "Torres"
etudiants[2].prenom <- "Leonie"
etudiants[2].moyenne <- (16 + 14.5) / nbnotes
Pour i allant de 0 à 2
AFFICHER(etudiants[i].nom & " "
etudiants[i].prenom & " "
etudiants[i].moyenne)
FinPour
Fin
En java:
class Etudiant {
String nom;
String prenom;
double moyenne;
}
public class DemoEtudiant {
public static void main(String[] args) {
int nbnotes = 2;
;
Etudiant etudiant [] etudiants = new Etudiant[3];
Etudiant
= new Etudiant();
etudiant .nom = "Nakamura";
etudiant.prenom = "Aya" ;
etudiant.moyenne = (15 + 6.5) / nbnotes ;
etudiant[0] = etudiant;
etudiants
= new Etudiant();
etudiant .nom = "Mercury";
etudiant.prenom = "Freddy" ;
etudiant.moyenne = (12 + 11.5) / nbnotes ;
etudiant[1] = etudiant;
etudiants
[2] = new Etudiant();
etudiants[2].nom = "Torres";
etudiants[2].prenom = "Leonie";
etudiants[2].moyenne = (16 + 14.5) / nbnotes;
etudiants
for (int i = 0 ; i < etudiants.length; i++) {
System.out.println(etudiants[i].nom
+ " " + etudiants[i].prenom + " "+
[i].moyenne);
etudiants}
}
}
Utilisation des enregistrements
Enregistrement Element
valeur: Texte
suivant: Element
FinEnregistrement
Enregistrement Pile
tete: Element
FinEnregistrement
Créer les fonctions correspondantes:
File creerFile()
Element enfiler(valeur:Texte, file: File)
booléen estVide(file: File)
Element defiler(file: File)
creerFile()
Créer une file vide.
Renvoie un enregistrement vers la file créée
enfiler(valeur:Texte, file: File)
Stocke la valeur donnée dans un nouvel élément
Place cet élément en fin de la file passée en paramètre
estVide(file: File)
Indique si la file passée en paramètre est vide ou non
defiler(file: File)
Renvoie le premier élément ajouté dans la file
Supprime cet élément de la pile
Enregistrement Element
valeur: Texte
prochain: Element
FinEnregistrement
Enregistrement Liste
premier: Element
FinEnregistrement
creerListe(): Liste
trouver(index: entier, liste: Liste) : Element
taille(liste: Liste) : Entier
ajouter(liste:Liste, valeur : Type Valeur) // à la fin
inserer(liste:Liste, index: Entier, valeur : Type Valeur)
supprimer(index: Entier, liste: Liste)
vider(liste: Liste)
Manipulation des piles, des files et des listes