programmation Java (école d'ingénieur) · Chapitre 10 · Exercice de TD
Des suites de nombres
Classes abstraites et interfaces · niveau 3 (difficile)
Énoncé
On définit l'interface
interface Suite {
boolean aSuivant();
long suivant();
}
qui représente une suite de nombres que l'on parcourt une seule fois.
- Écrire une méthode
static long somme(Suite s). - Écrire
Intervalle, qui produit les entiers de , etFibonacci, qui produit les premiers termes - Calculer la somme des entiers de à et celle des premiers termes de Fibonacci.
Corrigé
static long somme(Suite s) { // fonctionne avec TOUTE suite
long total = 0;
while (s.aSuivant()) total += s.suivant();
return total;
}
class Intervalle implements Suite { // les entiers de [debut, fin)
private long courant; private final long fin;
Intervalle(long debut, long fin) { courant = debut; this.fin = fin; }
public boolean aSuivant() { return courant < fin; }
public long suivant() { return courant++; }
}
class Fibonacci implements Suite { // les n premiers termes 0, 1, 1, 2, ...
private long a = 0, b = 1; private int restants;
Fibonacci(int n) { restants = n; }
public boolean aSuivant() { return restants > 0; }
public long suivant() {
long r = a; long c = a + b; a = b; b = c; restants--;
return r;
}
}
somme(new Intervalle(1, 101)) vaut 5050 () et somme(new Fibonacci(10)) vaut 88, la somme de 0 1 1 2 3 5 8 13 21 34. La méthode somme ne connaît que l'interface : elle fonctionnera avec toute suite écrite plus tard. C'est exactement le principe des itérateurs de la bibliothèque Java (interface Iterator, chapitre 12).
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.