• Aucun résultat trouvé

Contrôle de Programmation Objet

N/A
N/A
Protected

Academic year: 2022

Partager "Contrôle de Programmation Objet"

Copied!
2
0
0

Texte intégral

(1)

POLYTECH – PeiP2 2019–2020

Contrôle de Programmation Objet

Durée : 0h30 Aucun document autorisé

Nom : Prénom :

1 Question 1 : Récursivité

On souhaite calculer la somme des éléments d’une liste de réels double de manière récursive et itérative.

I1. Écrivez les fonctions somme_récursiveetsomme_itérativequi calculent la somme des npremiers éléments de la listel. On pourra utiliser la méthode get(i)qui permet d’accéder auieélément d’une liste.

p u b l i c s t a t i c double somme_recursive (List <Double > l, i n t n) { //Écriture itérative : À COMPLÉTER

}p u b l i c s t a t i c double somme_itérative (List <Double > l, i n t n) { //Écriture itérative : À COMPLÉTER

}

2 Question 2 : Pile

Dans le TD3, vous avez écrit une implémentation du type abstrait Pile à l’aide d’une liste de type LinkedList. Le type abstrait Pile classique suit le modèle LIFO (Last In, First Out).

Dans cet exercice, nous souhaitons implémenter une variante du type Pile.

Cette variante se distingue par le fait qu’elle maintient une suiteordonnée d’entiers, le sommet de la pile étanttoujoursle plus petit des entiers de la pile.

La méthodepeekqui renvoie le sommet de pile, renvoie l’entier le plus petit.

De mêmepopqui supprime le sommet de pile, supprime l’entier le plus petit contenu dans la pile.

Le code deMaPiledonné ci-dessous implémente cette variante. Toutefois, il manque le code de la méthodepushque vous devez écrire. Vous devez utiliser une LinkedListintermédiaire, et en plus des méthodes déjà données dans le code, vous devrez utiliser la méthodeadddeLinkedList.

p u b l i c c l a s s MaPile {

p r i v a t e LinkedList < Integer > maPile = new LinkedList < Integer >();

p u b l i c boolean empty () { r e t u r n maPile . isEmpty (); }

1

p u b l i c void pop () throws EmptyStackException { i f (t h i s. empty ()) throw new EmptyStackException ();

maPile . remove (0);

}p u b l i c Integer peek () {

i f (t h i s. empty ()) throw new EmptyStackException ();

r e t u r n maPile .get (0);

}p u b l i c void push ( Integer e) { //À compléter page suivante } }

Ci-dessous, un exemple d’utilisation : MaPile p = new MaPile ();

p. push (671); p. push (9); p. push (82); p. push (671); p. push (6);

//p = [ 6 9 82 671 671 ] p.pop (); p.pop ();

//p = [ 82 671 671 ] p.pop (); p.pop ();

//p = [ 671 ]

I 2. Écrivez la méthodepush:

p u b l i c void push ( Integer e) { //À COMPLÉTER

}

3 Question 3 : Liste

On souhaite écrire en Java les méthodesconcaténeretinverserqui, respec- tivement, ajoute à la fin de la liste courante les éléments d’une seconde liste, et qui inverse l’ordre des éléments de la liste courante.

I 3. Dans la classeMaListe, donnée ci-dessous, complétez les méthodesconcaténer etinverser. Les seules méthodes deArrayListdont vous avez besoin, sont size(),add(r,e)etset(r,e). Cette dernière, affecte un élémenteau rangr, la taille de la liste reste inchangée.

import java . util .*;

p u b l i c c l a s s MaListe <T> extends ArrayList <T> { /**

* Rôle : concatène la liste l à la liste courante

*/

void concaténer ( MaListe <T> l) { //À COMPLÉTER

}

2

(2)

/**

* Rôle : inverse ls éléments de la liste courante void*/ inverser () {

//À COMPLÉTER } }

La classeTestdonne un exemple d’utilisation des deux méthodes.

c l a s s Test {

p u b l i c s t a t i c void main ( String [] args ) { MaListe < Integer > l1 = new MaListe < Integer >();

l1.add (1); l1.add (2); l1.add (3); l1.add (4); l1.add (5);

MaListe < Integer > l2 = new MaListe < Integer >();

l2.add (6); l2.add (7); l2.add (8);

l1. concatener (l2 );

System .out. println (l1 ); //[1, 2, 3, 4, 5, 6, 7, 8]

l1. inverser ();

System .out. println (l1 ); //[8, 7, 6, 5, 4, 3, 2, 1]

} }

3

Références

Documents relatifs

5. Sur la première pile uniquement, en utilisant le vocabulaire introduit, indiquer ce qui arrive aux électrons au niveau de chacune des électrodes en précisant celle

Le professeur Max Mandi ÇJournal de Crellcy t. H3, p- 2^2) a donné une méthode pour décomposer un polynôme entier à une variable à (coefficients entiers en facteurs irrédiictibles

Ainsi une difficulté majeure de ces deux approches réside dans le pro- blème suivant : « Obtenir en peu de calculs une bonne évaluation par défaut (cas de la minimisation) de

On a vu dans la structure du cristal de silicium qu’il était composé de tétraèdres d’atomes de silicium très liés et bien stables ; chaque atome de Si échange avec ses

Ajout de coupes permet d’améliorer LB en chaque nœud Si on augmente LB on élague plus l’arbre de recherche. En pratique, on met un nombre limité de coupes en chaque nœud

Ajout de coupes permet d’améliorer LB en chaque nœud Si on augmente LB on élague plus l’arbre de recherche. En pratique, on met un nombre limité de coupes en chaque nœud

A l’inverse, si l’ensemble des paires selectionnees ne forment pas un tour, comme tous les sommets sont incidents a exactement deux paires selectionnees (voir l’ensemble de

Alors H est