IFT1010 Programmation I

Département d'informatique et de
recherche opérationnelle

Hiver 2002


Accueil

Professeurs et
Démonstrateurs

Horaires et locaux

Notes de cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Démonstration 6: Les classes, toujours les classes


Pratique | Exercice Noté

Travail pratique (pas noté)

Nombres parfaits, nombres premiers et série de Fibonacci

Écrire une classe qui offre les services suivants:

  • int getNombreParfaitSuivant() qui retourne le prochain nombre parfait non encore demandé. Si c'est la première fois que la méthode est appelée, retourner la valeur 1 qui est le premier nombre parfait positif.

  • int getNombrePremierSuivant() qui retourne le prochain nombre premier non encore demandé. Si c'est la première fois que la méthode est appelée, retourner la valeur 1 qui est le premier nombre premier positif.

  • void setFibonacciSeed(int f1, int f2) qui initalise les deux premiers nombres d'une série de Fibonacci.

  • int getNombreFibonacciSuivant() qui retourne le prochain nombre de la série de Fibonacci non encore calculé. Si c'est la première fois que la méthode est appelée, la méthode doit retourner la valeur du premier nombre de la série (0 si la série n'a pas été initialisée par un appel à void setFibonacciSeed), si c'est la deuxième fois, la méthode doit retourner le deuxième nombre de la série (1 si la série n'a pas été initialisée par un appel à void setFibonacciSeed).

  • boolean isAPalindrome(int nombre) qui retourne true si l'entier passé en argument est un nombre palindrome (ex: 1, 11, 121, 123321, 1234321, etc).

Vous avez normalement déjà écrit les algorithmes pour énumérer les différents nombres qui vous sont demandés. Il s'agit donc ici davantage d'un exercice visant à organiser votre code dans une classe.

Exercice noté (1 point)

Polynomes

Écrire une classe Polynome qui permet de stocker un polynôme de dégré 1 ou 2 (dont les coefficients sont des valeurs entières) et qui offre un certain nombre de services qui sont décrits maintenant:

  • Un ou plusieurs constructeurs permettant à l'utilisateur de la classe de créer des polynomes de degré 1 ou 2.

  • Une méthode boolean solve() qui retourne true si le polynome de l'objet appelant possède au moins une racine (f(x) = 0).

  • Une méthode int getNbRacines() qui retourne le nombre de racines du polynôme stocké dans l'objet appelant.

  • Une méthode double getRacine(int i) qui retourne la valeur de la i-ème racine, si elle existe. Si le polynôme n'adment pas i racines, cette méthode doit afficher le message d'erreur: "MAUVAIS APPEL DE getRacine" et retourner 0.0

  • Une méthode String toString affichant le mieux possible le polynôme. Par exemple cette méthode affichera de préférence x^2 + 3 x - 5 à 1 x^2 + 3 x - 5

  • Une méthode Polynome add(Polynome p) qui retourne un polynôme nouvellement crée qui contient l'addition du polynôme appelant avec celui passé en argument (même principe que l'opération d'addition vue sur la classe Rational en cours)

  • Une méthode double getValue(double x) qui retourne la valeur du polynôme pour une valeur de x passée en paramètre.

Note: L'interface qui vient d'être spécifiée doit fonctionner avec le programme TestDemo6.java. Ce programme vous impose des contraintes sur l'écriture de votre classe Polynome. Ce serait une mauvaise idée de modifier ce programme pour qu'il fonctionne avec le code de votre classe. On vous demande au contraire d'écrire votre classe de manière compatible avec ce programme. Voici pour vous aider à comprendre ce qu'on attend de vous la trace d'exécution du programme TestDemo6.java: trace-demo6

Lors des tests, nous changerons de polynômes, mais appliquerons le même genre d'instructions qui sont celles spécifiées dans l'interface.

Pour remettre votre programme: remise ift1010 demo06 Polynome.java

On ne vous demande donc pas de remettre TestDemo6.java.

Prenez note que chaque exercice noté est à remettre individuellement.



Dernière mise à jour : Thu Feb 28 11:44:03 EST 2002
dift1010@iro.umontreal.ca