Vous êtes sur la page 1sur 4

EXAMEN

Corrigé type
Programmation Avancée
2023

Exercice 1:
1. Equation de récurrence :
𝑛2 𝑛 02 points
T(n)= Θ(𝑙𝑜𝑔 𝑛) + a T( 4 )+ Θ(n2)
𝑛
T(n)= a T( 4 )+ Θ(n2)

2. Donner l'ordre exacte de T(n) :


𝑛
(i) lorsque a = 8; T(n)= 8 T( 4 )+ Θ(n2)

 = 𝑙𝑜𝑔4 8=1.51  F(n) = Θ(n+ε) avec ε=0.49  T(n)= Θ(𝑛2 ) 01 point

𝑛
(ii) lorsque a = 16; T(n)= 16 T( 4 )+ Θ(n2)

 = 𝑙𝑜𝑔4 16=2  F(n) = Θ(n)  T(n)= Θ(𝑛2 log𝑛) 01 point

𝑛
(iii) lorsque a = 32; T(n)= 32 T(4 )+ Θ(n2)

 = 𝑙𝑜𝑔4 32=2.51  F(n) = Θ(n-ε)  ε=0.51 T(n)= Θ(n2.51) 01 point

Exercice 2:
1. Fonction récursive pour calculer le terme 𝒖𝒏
Fonction suite (n : entier) : entier ;
Début
Si n=0 alors
Retourner (0.8) ;
Sinon 02 points
Si n=1 alors
Retourner (1.2) ;
Sinon
Retourner (0.6*suite (n-1)* suite (n-2)) ;
Fin si ;
Fin si ;
Fin.

1
2. Fonction de programmation dynamique pour calculer le terme 𝒖𝒏

Fonction suitePD (n : entier) : entier ;


Var T: tableau[1..50] d'entiers;
i:entier;
Début
Si n=0 alors
Retourner (0.8) ;
Sinon
Si n=1 alors
Retourner (1.2) ;
02 points
Sinon
T[0] ← 0.8 ;
T[1] ← 1.2 ;
𝐏𝐨𝐮𝐫 𝐢 𝐚𝐥𝐥𝐚𝐧𝐭 𝐝𝐞 𝟐 𝐚 𝐧 𝐅𝐚𝐢𝐫𝐞
T[i] ← 0.6 × T[i − 1] × T[i − 2] ; // (n-1) fois
Fin pour ;
Retourner (𝐓[𝐧]) ;
Fin si ;
Fin si ;
Fin.

3. La complexité 𝐂(𝐧) de la fonction suite PD en nombre de multiplications:


𝐶 (𝑛 ) = 2 × (𝑛 − 2 + 1 )
1.5 points
 𝐶 (𝑛) = 2𝑛 − 2

4. La comparaison du nombre de multiplication des deux fonctions suite et


suitePD pour n=6
 Pour calculer le terme 𝑢6 avec la fonction suite on a besoin de 24
multiplications.
 Pour calculer le terme 𝑢6 avec la fonction suitePD on a besoin de 10
multiplications.
 la fonction suitePD est meilleure (plus efficace) que la fonction suite. 1.5 points

Exercice 3:
1. Comment rendre la somme de 263 dinars:
Pour rendre la monnaie sur 263 dinars, on choisie une pièce de 200, puis une pièce de
50, puis une de 10, de 2 et enfin une pièce de 1 dinars. 1 point

2. L’algorithme glouton: L'algorithme consiste à rendre toujours la pièce de la plus


grande valeur que l’on peut. Les valeurs des pièces (système monétaire) sont stockées
par ordre croissant dans un tableau T.

2
Algorithme rendre-pièces;
Var T : tableau[1..7] ;
somme, valeur, cpt, i, n : entier ;
Début
Lire (n) ;
Pour i allant de 1 à n Faire
Lire (T[i]) ; // T doit être trié
Fin
Lire (somme) ; 1.5 points
cpt ← 0;
TQ ( 𝐬𝐨𝐦𝐦𝐞 > 0 ) Faire
Valeur ← 𝑇[𝑛];
Si (valeur > somme) Alors
𝒏← 𝒏−𝟏
Sinon
Ecrire (’ la pièce à rendre est de ‘ , 𝑇[𝑛] , ′𝑑𝑖𝑛𝑎𝑟𝑠′) ;
somme ← somme − valeur;
cpt ← cpt + 1;
𝐅𝐢𝐧 𝐬𝐢;
Fin TQ ;
Ecrire (‘le nombre de pièces à rendre est’ ; cpt) ;
Fin.

3. Pour la somme 263 c’est la meilleure solution possible car l’algorithme glouton
choisit le minimum de pièces à rendre. En d'autres termes, on ne peut pas faire mieux. 1 point

4. Si les pièces ont comme valeurs 1, 2, 3 alors l’algorithme glouton va rendre la


monnaie sous forme d’une pièce de 4 et de deux pièces de 1, alors que rendre deux
pièces de 3 aurait été optimal, donc l’algorithme glouton ne fournit pas dans ce cas la
solution optimale.
1.5 points

Exercice 4:
- Donnez les étapes à suivre pour appliquer le Pattern Observer.
1 point
1. Création des interfaces Observables et Observateurs.
2. Tous les observateurs doivent implémenter l'interface Observateur.
3. L'objet Observable doit implémenter l'interface Observable.
4. L’observable doit gérer ses Observateurs (avoir une liste des observateurs
pour les mettre à jours)
5. Les observateurs doivent mettre à jours leurs interfaces graphiques.
- Expliquez le rôle de chaque composant dans le Modèle MVC. 1 point

3
1. Modèle: représentation des données manipulées par le programme (texte,
fichier mp3, etc.)
2. Vue: représentation(s) visuelle des données (vue 3D, tableau, texte, etc.)
3. Contrôleur: gestion de l’interaction (effets de la souris, du clavier, etc.)

- Quel est le concept qui permet de récupérer dynamiquement les informations


propres à une classe Java ?
1 point
La réflexivité (Introspection)

Vous aimerez peut-être aussi