• Aucun résultat trouvé

Utilisation de la classe CelluleEntier

N/A
N/A
Protected

Academic year: 2022

Partager "Utilisation de la classe CelluleEntier"

Copied!
3
0
0

Texte intégral

(1)

Programmation 1 Cours n˚8

Master CCI – 2006-2007

Fr´ed´eric Loulergue

2006-2007

F. Loulergue Programmation 1 1/11

R´ ecursion

Nous avons vu la semaine derni`ere qu’il est possible de d´efinir des m´ethodes r´ecursives, c’est-`a-dire des m´ethodes qui s’appellent elles-mˆemes dans leurs corps.

Il est ´egalement possible de d´efinir une classe en l’utilisant elle-mˆeme :

soit en tant que type pour les m´ethodes :on l’a d´ej`a vu dans les m´ethodes de la classeRect,

soit en tant que type d’un ou plusieurs de ses champs.

F. Loulergue Programmation 1 2/11

Un exemple : la classe CelluleEntier 1/2

classCelluleEntier{

private intvaleur;

privateCelluleEntier celluleSuivante;

/∗∗Creation d’une cellule contenant la valeur n.∗/

CelluleEntier(intn){

this.valeur = n;

this.celluleSuivante =null;

}

/∗∗Creation d’une cellule contenant la valeur n et ayant comme cellule suivante la cellule c.∗/

CelluleEntier(intn, CelluleEntier c){

this.valeur = n;

this.celluleSuivante = c;

}

F. Loulergue Programmation 1 3/11

Un exemple : la classe CelluleEntier 2/2

/∗∗Renvoie la valeur contenue dans la cellule.∗/

public intvaleur(){

return this.valeur;

}

/∗∗Renvoie la cellule suivante.∗/

publicCelluleEntier celluleSuivante(){

return this.celluleSuivante;

} }

F. Loulergue Programmation 1 4/11

(2)

Utilisation de la classe CelluleEntier

On peut utiliser cette classe pour faire une suite de cellules, qu’on appelleliste chaˆın´ee

Par exemple :

CelluleEntier c =newCelluleEntier(1,newCelluleEntier (2,newCelluleEntier(3)))

Mais on ne peut pas avoir de liste vide de cellules sur laquelle on pourrait tout de mˆeme appeller les m´ethodes qu’on a enfin d’´ecrire (comme la d´eterminer la longueur d’une liste, une m´ethodetoString,etc.).

F. Loulergue Programmation 1 5/11

La classe ListeDEntiers

public classListeDEntiers{

CelluleEntier cellule;

/∗∗Liste vide.∗/

ListeDEntiers(){

this.cellule =null;

}

/∗∗Liste d’un ´el´ement.∗/

ListeDEntiers(intn){

this.cellule =newCelluleEntier(n);

}

/∗∗Construction d’une liste par

∗ajout d’un ´el´ement en tˆete d’une

∗liste.

∗/

ListeDEntiers(intn, ListeDEntiers l){

this.cellule =newCelluleEntier(n,l.cellule);

}

F. Loulergue Programmation 1 6/11

La classe ListeDEntiers

/∗∗Renvoie la valeur de la tˆete de la liste.∗/

public inttete(){

assert(this.cellule!=null);

return this.cellule.valeur();

}

/∗∗Supprime la premier valeur de la liste∗/

public voidqueue(){

assert(this.cellule!=null);

this.cellule =this.cellule.celluleSuivante();

}

/∗∗Ajoute un entier en tˆete de liste∗/

public voidajoute(intn){

this.cellule =newCelluleEntier(n,this.cellule);

}

/∗∗Indique si la liste est vide∗/

public booleanestVide(){

returncellule==null;

}

F. Loulergue Programmation 1 7/11

La classe ListeDEntiers

/∗∗Renvoie la longueur de la liste∗/

public intlongueur(){

intlongueur = 0;

CelluleEntier c =this.cellule;

while(c!=null){ longueur = longueur + 1;

c = c.celluleSuivante();

} returnlongueur;

}

F. Loulergue Programmation 1 8/11

(3)

La classe ListeDEntiers

/∗∗Renvoie une chaˆıne de caract`eres repr´esentant la liste.∗/

publicString toString(){

String s = ”[”;

CelluleEntier c =this.cellule;

while(c!=null){ s = s + c.valeur();

c = c.celluleSuivante();

if(c!=null) s = s +”; ”;

} s = s + ”]”;

returns;

} }

F. Loulergue Programmation 1 9/11

Version r´ ecursive du calcul de la longueur

/∗∗Renvoie la longueur de la liste version r´ecursive.∗/

private intlongueur aux(CelluleEntier c){

if(c==null) return0;

else

return1 + longueur aux(c.celluleSuivante());

}

public intlongueur rec(){

returnlongueur aux(this.cellule);

}

F. Loulergue Programmation 1 10/11

Autres m´ ethodes

version r´ecursivetoString;

m´ethodes pour calculer la somme des valeurs de la liste : m´ethode it´erative,

m´ethode r´ecursive ; m´ethodes pour calculer la moyenne.

F. Loulergue Programmation 1 11/11

Références

Documents relatifs

[r]

La question initiale et les objectifs de l’atelier Une r´ eponse intuitive Des questions, des conjectures, des ´ enonc´ es Des preuves Des preuves ´ el´ ementaires L’apparition de

Du social dans On ne badine pas avec l’amour, Il ne faut jurer de rien et Il faut qu’une porte soit ouverte ou fermée de Musset Essai de sociocritique du proverbe

[r]

L’objectif de cet « exercice » est de sortir de l’enfermement « écrire pour le maître », « écrire comme il faut », écrire « des choses bien », « écrire sans fautes »,

Aux 1/3 et 2/3 de la longueur du fil, deux masses identiques m sont accrochées, dont on étudie les oscillations transverses dans un plan donné, qui est le plan de la figure.. Les

20 Même si les conditions ci-dessus étaient réali- sées, la pression de la thermistance-tare étant environ fixe, la compensation des variations de mesure, dues aux

Les pois implantés sans labour ont été plus pénalisés dans trois essais réalisés en sol argilo-calcaire ou en li- mon argileux, que ce soit en semis direct ou sur travail