Université de Nouakchott Al Asriya
Licence Mathématiques Informatique
MI S5
Contrôle continu
Documents non autorisés
Exercice 1 :
Ecrivez un programme (une classe Java avec une méthode main) qui permet la saisie
d’un nombre n au clavier et qui construit un tableau de n éléments avec des cases
remplies, pour chaque case d’indice i, par la somme des entiers compris entre 0 et i.
Exercice 2 :
A l’image de ce qui a été vu en cours, écrire une classe Pile
« Pile » conforme au schéma ci-contre (notations - int sommet
UML) :
- int[] element
- L’attribut sommet représente le nombre
+ Pile(int max)
d’éléments à considérer dans un objet de type Pile.
Il est initialisé à -1 au moment de la création. + boolean pileVide()
- L’attribut element, est un tableau prévu pour le + void empiler(int val)
stockage des éléments de la Pile.
+ void depiler()
- La méthode erreur() permet d’afficher les
messages d’erreur que l’on passe en paramètre + void listerPile()
- Le constructeur permet d’initialiser le sommet à « - - void erreur(String msg)
1 » et d’initialiser le tableau element et lui affecter
max comme nombre maximal d’éléments.
- La méthode pileVide() retourne « true » si le sommet = -1 et « false » sinon.
- La méthode empiler(int val) permet de rajouter une valeur val dans la case de
numéro « sommet +1 » et d’incrémenter le sommet sauf si le tableau element est
saturé.
- La méthode depiler() permet de supprimer le dernier élément d’un objet de type
Pile (décrémenter de 1 le sommet si l’objet n’est pas vide).
- La méthode listerPile permet d’afficher tous les éléments de l’objet de type Pile
qui sont dans des cases entre 0 et sommet.
Solution
Exercice-1
import [Link];
public class Exo1 {
public static void main(String args[]){
Scanner clavier = new Scanner([Link]);
[Link]("Donner la taille du tableau d'entiers: ");
int dim = [Link]();
int[] Tab = new int[dim];
int s = 0;
for (int n =0; n< dim; n++){
s = s+n;
Tab[n] = s;
[Link]("");
for (int n =0; n< dim; n++){
[Link]("Tab[" + n +"] : "+Tab[n] );
}
Exercice-2 Classe Pile
public class Pile {
// sommet et element sont des attributs privés
private int sommet; // repère le dernier occupé (le sommet)
private int[] element; // tableau d’entiers alloué dynamiquement
// erreur est une méthode privée utilisable seulement
// dans la classe Pile
private void erreur (String mes) {
[Link] ("***erreur : " + mes);
}
public Pile (int max) { // voir 2.2.1 Le constructeur d’un objet
sommet = -1;
element = new int [max]; // allocation de max entiers
}
public boolean pileVide () {
return sommet == -1;
}
public void empiler (int v) {
if (sommet < [Link] - 1) {
sommet++;
element [sommet] = v;
} else {
erreur ("Pile saturee");
}
}
public int depiler () {
int v = 0; // v est une variable locale à depiler()
if (!pileVide()) {
v = element [sommet];
sommet--;
} else {
erreur ("Pile vide");
}
return v;
}
public void viderPile () {
sommet = -1;
}
public void listerPile () {
if (pileVide()) {
[Link] ("Pile vide");
} else {
[Link] ("Taille de la pile : " + [Link]);
for (int i=0; i <= sommet; i++) {
[Link] (element[i] + " ");
}
[Link](); // à la ligne
}
}
} // class Pile