• Aucun résultat trouvé

Dur´ee:2h Lundi28janvier2013 Examend’informatique

N/A
N/A
Protected

Academic year: 2022

Partager "Dur´ee:2h Lundi28janvier2013 Examend’informatique"

Copied!
4
0
0

Texte intégral

(1)

Informatique - DEGEAD2 Universit´e Paris-Dauphine

Examen d’informatique

Lundi 28 janvier 2013 Dur´ ee : 2h

Documents, calculettes et t´el´ephones portables interdits

Le bar`eme est donn´e `a titre indicatif, il est susceptible d’ˆetre modifi´e

Remarques :

– la lisibilit´e et l’efficacit´e (optimisation du temps d’ex´ecution par exemple) de vos programmes seront pris en compte pour l’´evaluation de vos r´eponses

– la derni`ere page de ce sujet est une annexe dans laquelle figure des extraits de votre polycopi´e de cours qui peuvent vous ˆetre utiles pour r´epondre `a certaines questions

Exercice 1 : Recommandation de films (16 pts)

On s’int´eresse `a la mise en oeuvre d’un syst`eme de recommandation de films. On dispose pour cela d’une liste de films dans une feuille Excel. Plusieurs utilisateurs ont ´evalu´e les films qu’ils ont vus parmi ceux de la liste en leur attribuant une note pouvant aller de 1 (s’ils ont d´etest´e le film) `a 5 (s’ils ont ador´e le film). Ces informations sont stock´ees dans une feuille Excel o`u les films sont list´es dans la premi`ere colonne (un film par ligne) et les notes des diff´erents utilisateurs apparaissent `a partir de la deuxi`eme colonne (une colonne par utilisateur) telle que la note figurant `a la cellule (i, j) est la note attribu´ee par l’utilisateur de la colonne j pour le film de la ligne i(la premi`ere ligne contient le nom des utilisateurs, et la premi`ere colonne le nom des films). Un exemple de feuille Excel stockant ces informations est donn´e dans la figure 1.

Figure1 – Evaluation des films par les utilisateurs

On peut ainsi voir dans cet exemple que l’utilisateurAntoinea mis la note 1 au filmScreamet la note 4 au film Juno. Lorsque l’utilisateur n’a pas donn´e de note `a un film (il ne l’a peut-ˆetre pas vu), la valeur de la cellule correspondante est -1.

On appelle BaseFilms la base de notes de films sur laquelle on va travailler. Dans cette base, 49 utilisateurs ont not´e 99 films, les donn´ees sont stock´ees dans la feuille Excel courante sous le format expliqu´e pr´ec´edemment de la colonne 1 `a la colonne 50 et de la ligne 1 `a la ligne 100. La ligne 1 contient le nom des utilisateurs, la colonne 1 contient le nom des films. La plage des notes est donc la plage des cellules allant de la cellule (2,2) `a la cellule (100,50).

(2)

Informatique - DEGEAD2 page 2

N.B. :la base de notes de la figure 1 pourra ˆetre parfois utilis´ee`a titre d’illustration, mais toutes les fonctions ou proc´edures qui vous sont demand´ees dans cet exercice portent sur la baseBaseFilms.

Partie 1. Consultation de la base BaseFilms (11 pts)

Q 1.1 (1 pt) Ecrivez en VBA la fonctioncolUt, qui prend en param`etre un nom d’utilisateurnomU et retourne le num´ero de la colonne dans laquelle figure les notes de l’utilisateur nomU. La fonction colUt retourne -1 si nomU n’est pas pr´esent dans la feuille Excel. On suppose que le nom de chaque utilisateur est unique.

Q 1.2 (1 pt) Ecrivez en VBA une macro d’appel de la fonction colUt qui, `a l’aide de boˆıtes de dialogue, demande `a l’utilisateur de saisir son nom puis affiche la colonne de l’utilisateur (o`u -1 si l’utilisateur n’existe pas dans la baseBaseFilms).

Q 1.3 (1 pt) Ecrivez en VBA la macro coloreJ qui colore en jaune (RGB(200,250,0)) l’int´erieur de toutes les cellules de la plage de notes dont la note est manquante (cellules dont la valeur est -1).

Q 1.4 (3 pts) Ecrivez en VBA la macro moyFilmsqui calcule la moyenne des notes de chacun des films et met cette moyenne dans la colonne 51 de la feuille Excel (la moyenne du film `a la ligne i apparaˆıt donc dans la cellule (i,51)). La moyenne des notes d’un film est calcul´ee `a partir des notes donn´ees par les utilisateurs (sans prendre en compte les -1). Dans l’exemple de la figure 1, la moyenne du filmIntouchables est (5 + 3 + 2)/3 = 3,33 car les trois notes de ce film sont 5, 3 et 2.

Q 1.5 (2 pts) On suppose que la macromoyFilmsa ´et´e ex´ecut´ee et que les moyennes de chacun des films figurent donc dans la colonne 51. Ecrivez en VBA la macromeilleurFilm qui affiche dans une boˆıte de dialogue le titre du film ayant la meilleure moyenne (s’il y a plusieurs qui ont la meilleure moyenne,moyFilmsaffiche l’un d’entre eux uniquement).

Q 1.6 (3 pts) On suppose maintenant que les films sont list´es dans la baseBaseFilmsdans l’ordre d´ecroissant de leur moyenne (qui figure dans la colonne 51). Ecrivez en VBA une proc´edure filmM qui prend en param`etre une moyennemet affiche dans une boˆıte de dialogue un film dont la moyenne estm ou le message “pas de film” s’il n’en existe pas ayant la moyenne m.

Partie 2. Syst`eme de recommandation (5 pts)

Le syst`eme de recommandation s’appuie sur le principe suivant : le film recommand´e `a un utilisateur u1 est un film qu’il n’a pas vu (not´e -1 par u1) et qui est parmi les films pr´ef´er´es d’un utilisateuru2 ayant les goˆuts les plus proches de ceux deu1. Pour d´eterminer le film `a recommander `au1, on regarde parmi les films les mieux not´es par u2 s’il en existe au moins un que u1 n’a pas vu. Si c’est le cas, un de ces films est recommand´e. Sinon on regarde parmi les films un peu moins bien not´es paru2 s’il en existe au moins un que u1 n’a pas vu, en quel cas on le recommande. Sinon, on continue ainsi en examinant les films de moins en moins bien not´es jusqu’`a trouver un film not´e paru2 non vu par u1 (on suppose qu’il en existe toujours un).

Avant de d´eterminer le film `a recommander `au1, il faut donc d´eterminer l’utilisateuru2 dont les goˆuts sont les plus proches. Pour cela on d´efinit le coefficient de proximit´e de deux utilisateurs comme la somme des produits des notes des films not´es par les deux utilisateurs `a la fois. Par exemple, dans la base de notes de la figure 1, la proximit´e de l’utilisateur Antoine avec l’utilisateurDenisvaut :

(4×3) + (1×1) + (2×3) = 19

carAntoine etDenisont tous deux not´e les films Juno(4 pour Antoine et 3 pour Denis),Scream (1

(3)

Informatique - DEGEAD2 page 3

pour Antoine et 1 pour Denis) et Titanic (2 pour Antoine et 3 pour Denis). Les autre films ne sont pas pris en compte dans ce calcul car ils ne sont pas not´es parAntoineetDenis`a la fois. Par exemple, la note qu’Antoine a donn´ee au film Intouchables n’est pas prise en compte dans ce calcul car Denis n’a pas not´e ce film.

Q 1.7 (2 pts) Ecrivez en VBA la fonctionproxqui, prend en param`etre deux noms d’utilisateurs de la baseBaseFilms et retourne le coefficient de proximit´e de ces deux utilisateurs. La fonction prox retourne 0 si les deux utilisateurs pass´es en param`etre n’ont not´e aucun film en commun. On suppose que les deux utilisateurs existent bien dans la base BaseFilms.

Q 1.8 (3 pts) On suppose qu’il existe en VBA la fonctionplusProche, qui prend en param`etre le nom d’un utilisateur de la base BaseFilmset qui retourne le nom de l’utilisateur de la base BaseFilms (autre que lui-mˆeme) le plus proche parmi tous les utilisateurs de la baseBaseFilms. Cette fonction

´etant d´ej`a d´efinie, vous pouvez l’utiliser sans avoir besoin de l’´ecrire.

Ecrivez en VBA la proc´edurerecom qui prend en param`etre un utilisateur u de la base BaseFilms et affiche dans une boˆıte de dialogue le film qui lui est recommand´e. Pour d´eterminer le film `a recom- mander,recomd´etermine dans un premier temps l’utilisateurup le plus proche deu (on suppose qu’il en existe toujours un), puis d´etermine un film pr´ef´er´e de up parmi les films not´es parup non vus par u. Pour d´eterminer ce film pr´ef´er´e, on peut utiliser l’algorithme suivant : on regarde parmi tous les films not´es 5 par up s’il en existe au moins un non vu par u. Si c’est le cas on le recommande `a u (s’il en existe plusieurs, il suffit d’en recommander un). Sinon, on regarde parmi tous les films not´es 4 par up s’il en existe au moins un non vu paru. Si c’est le cas on en recommande un `a u. Sinon, on continue avec les films not´es 3, puis 2, etc.

Exercice 2 : Binaire et tableau (4 pts)

On suppose dans cet exercice qu’un nombre binairebsur 16 bits est stock´e dans un tableau VBA uni- dimensionnel, appel´etabBin, de taille 16, tel que le bit `a la i-`eme position (en partant de la gauche) debest dans la caseidetabBin. Le tableautabBinest d´eclar´e comme variable globale du programme par l’instruction suivante :

Dim tabBin (1 To 16) As Byte

Par exemple, si le nombre 1100011010101010 est stock´e danstabBin, alors la valeur detabBin(1) est 1, celle detabBin(2)est 1, celle de tabBin(3)est 0, celle detabBin(4)est 0,..., celle detabBin(15) est 1 et celle detabBin(16) est 0.

Q 2.1 (1 pt) On suppose que tabBina ´et´e rempli de mani`ere `a repr´esenter un nombre binaire (que l’on ne connaˆıt pas). Ecrivez en VBA la fonction div4 qui retourne vrai si le nombre stock´e dans le tableautabBinest divisible par 4 et faux sinon.

Q 2.2 (3 pts) Ecrivez en VBA la macrosaisirNbqui permet `a un utilisateur de stocker un nombre binairebdans tabBin. Pour cela, la macrosaisirNbdemande `a l’utilisateur de saisir successivement les 16 chiffres deb(du chiffre de droite `a celui de gauche) et remplittabBinde ces 16 chiffres. Chaque chiffre saisi par l’utilisateur doit ˆetre un 0 ou un 1. Si ce n’est pas le cas, la macrosaisirNbaffiche un message d’erreur qui redemande `a l’utilisateur de saisir un chiffre jusqu’`a ce que l’utilisateur saisisse un 0 ou un 1. Les messages `a afficher dans les boˆıtes de dialogue sont les suivants :

– message de demande d’un nouveau chiffre :“Saisir le chiffre `a la position 1”,“Saisir le chiffre `a la position 2”,“Saisir le chiffre `a la position 3”, etc.

– message d’erreur lors de la saisie dui-`eme chiffre :“Resaisir le chiffre i”(o`uiest un nombre entre 1 et 16)

(4)

Annexe

Classe Range

La classe Range est la classe des plages de cellules. Entre autres, elle possède les propriétés suivantes : Property C e l l s ( i As Long , j As Long ) As Range

' Lecture

' C e l l u l e de l a l i g n e i e t de l a colonne j r e l a t i v e m e n t à l ' o b j e t Range Property Value As Variant

' Lecture−é c r i t u r e ' Valeur de l a c e l l u l e

Property I n t e r i o r As I n t e r i o r ' Lecture−é c r i t u r e

' Objet qui r e p r é s e n t e l e fond des c e l l u l e s de l a p l a g e

Classe Interior

La classe Interior est la classe des fonds de cellules. Entre autres, elle possède la propriété suivante : Property Color As Long

' Lecture−é c r i t u r e

' Couleur ( codée en RGB) du fond .

Fonction Application.InputBox

Function Application . InputBox ( Prompt As String , _

Optional T i t l e As String , _ Optional Default As String , _ Optional Left As Integer , _ Optional Top As Integer , _ Optional HelpFile As String , _

Optional HelpContextId As Variant , _ Optional Type As I n t e g e r ) As Variant ' A f f i c h e une b o î t e de d i a l o g u e qui comporte un cadre de s a i s i e e t des ' boutons OK e t Annuler e t renvoie l e s informations s a i s i e s .

Valeur Type de données renvoyé

0 Formule

1 Valeur numérique 2 Chaîne de caractères

4 Valeur booléenne (True ou False) 8 Référence de cellule (objet range) 16 Valeur d'erreur

Table 1 Valeurs du paramètre Type de Application.InputBox

Références

Documents relatifs

– Ilias Amrani hilias.amrani@epfl.chi – Jan Brunner hjan.brunner@epfl.chi – Ratiba Djelid hratiba.djelid@epfl.chi – M´elanie Favre hmelanie.favre@epfl.chi – Nicolas

Universit´ e de Cergy-Pontoise - Licence de Math´ ematiques Calcul Int´ egral - Mardi 19 juin 2007. Dur´ee: 2h - Ni document ni

En quelle ann´ ee le nombre de plaintes pour blessures non mortelles est-il le plus faible.. En quelle ann´ ee le nombre de plaintes pour blessures non mortelles est-il relativement

En d’autres termes, pour tout nombre premier p, il existe ` a isomorphisme pr` es un et un seul groupe d’ordre p, qui est le groupe cyclique (donc ab´ elien) C

Dans un anneau principal, tout id´ eal premier non-nul est maximal (et donc, pour les id´ eaux non-nuls, les notions de premier et de maximal

Exercice 3 Compl´eter le tableau suivant : si le nombre appartient `a l’ensemble de nombres, le r´e´ecrire sous une forme adapt´ee, sinon mettre une croix dans

Ecrire une proc´ ´ edure qui r´ ecup` ere la valeur x contenu dans la cellule de la premi` ere ligne, premi` ere colonne et qui ´ ecrit dans la deuxi` eme ligne de la feuille Excel

Les donn´ ees de l’´ election sont stock´ ees dans une feuille Excel sous le format suivant : la premi` ere ligne contient le nom des candidats, la premi` ere colonne contient le