Enseignement > Programmation orientée objet > Delphi > Sujets d'examens et corrigés > Controle 2003 TD POO IUP1  

Universite de Franche-Comté - IUP GMI 1ère année

Programmation orientée objet - Contrôle de TD - 7 janvier 2003

Au cours de cet exercice, on s'intéresse à la modélisation et au calcul de polynomes. Les questions sont néanmoins indépendantes les unes des autres.

Question 1 2 Points

Ecrire la fonction xn (n entier naturel positif) sous une forme récursive :

Function puissance(x : real ; n : integer) :real ;

Question 2 4 Points

Modélisation de polynome sous forme d'un tableau

On cherche à modéliser les polynomes de degrés inférieurs à un maximum (100) sous la forme d'un tableau contenant ses coefficients

p(x) = a0 + a1x +a2x2+...+an-1xn-1 +anxn sera représenté dans le tableau

a0

a1

a2

...

an-1

an

Ecrire une classe TPolynome représentant un polynôme sous cette forme, en encapsulant l'accès au coefficients grace à 2 méthodes setcoefficient(coef:real ; degre:integer) et getcoefficient(degre:integer):real

Ecrire son constructeur qui initialisera tout polynôme à p(x)=0

Quels sont les avantages et les inconvénients de cette modélisation ?

Question 3 2 Points

Monome

Ecrire une classe TMonome permettant de mémoriser un monôme a.xn défini par le couple d'attributs (degré, coefficient).

Ecrire le constructeur TMonome.Create(degre:integer;coef:real)permettant d'initialiser un objet de cette classe.

Ecrire la méthode TMonome.Calcul(x:real):real calculant la valeur du monôme pour le paramètre x en utilisant la fonction puissance définie à la question 1.

Question 4 5 Points

Modélisation de polynome sous forme d'une liste de monomes

Ecrire une classe TPolynomeListe qui encapsulera dans un objet de la classe Tlist une liste d'objets Tmonome.

Les méthodes nécessaires à la manipulation de la liste sont implémentées au niveau de la classe Tlist (voir en annexe).

Dessiner un schéma représentant la structure de données de la classe TPolynomeListe.

Ecrire le constructeur et le destructeur.

Ecrire la méthode getcoefficient(degre:integer):real qui cherche si un monome de de degré existe dans la liste et ramène son coefficient (sinon la fonction ramène 0).

Ecrire la méthode setcoefficient(coef:real ; degre:integer) qui ajoute un monome si le polynome ne contient pas de monome de ce degré dans la liste, ou qui remplace dans la liste le coefficent du monome du degré considéré, si il existe dans la liste.

Dans le cas particulier où coef=0, on n'ajoutera pas de monome dans la liste, et on cherchera à supprimer un éventuel monome de ce degré dans la liste.

 

 

Question 5

Calcul et optimisation

5.1 pour la classe TPolynome 5 Points

Ecrire la méthode TPolynome.CalculP(x:real):real qui retourne la valeur du polynôme pour un paramètre x donné, en utilisant la formule traditionnelle
p(x) = a0 + a1x +a2x2+...+an-1xn-1 +anxn

en utilisant la fonction puissance définie à la question1.

Evaluer la complexité de l'algorithme de la méthode CalculP. Justifier votre réponse.

Ecrire une méthode TPolynome.CalculHorner(x:real):real qui retourne la valeur du polynôme pour un nombre x donné en utilisant la factorisation de Horner :

p(x) = ((((( .... ( anx + an-1 ) x + an-2 ) x + ... ) x + a0

Evaluer la complexité de l'algorithme de la méthode CalculHorner. Justifier votre réponse.

5.2 pour la classe TPolynomeList 2 Points

Ecrire la méthode TpolynomeList.CalculP(x:real):real qui retourne la valeur du polynôme pour un paramètre x.

Par manque de temps et à cause de sa difficulté, il ne vous est pas demandé au cours de cet examen d'écrire l'algorithme de Horner pour la classe TpolynomeList.

ANNEXE

TList

property TList.Count: Integer;

Accessible en lecture seulement. La propriété Count compte le nombre d'éléments de la liste.

property TList.Items[Index: Integer]: TObject;

La propriété Items donne accès à un objet conservé à la position Index de la liste; le premier élément dans la liste a pour valeur 0.

function TList.Add(Item: TObject): Integer;

La méthode Add ajoute un nouvel élément en fin de liste. Elle renvoie la position de l'élément dans la liste, stockée dans la propriété Items.

Procedure TList.Delete(Index: Integer);

Delete supprime de la liste l'objet spécifié par le paramètre Index.


un corrigé sous la forme d'une unité Pascal Delphi