À LA PAGE SUIVANTE SUJET PROJETS EN INFORMATIQUE (SV) Test écrit. Instructions :



Documents pareils
Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

TP : Gestion d une image au format PGM

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

40 minutes. Attente Vie active Participer à une variété d activités physiques dans le but d être une personne active tout au long de sa vie.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Introduction à MATLAB R

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

TD/TP PAC - Programmation n 3

Tp 1 correction. Structures de données (IF2)

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Structure d un programme

Programmation système de commandes en C

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Les algorithmes de base du graphisme

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Chapitre 10. Les interfaces Comparable et Comparator 1

Premiers Pas en Programmation Objet : les Classes et les Objets

COMMENCER AVEC VUE. Chapitre 1

Développement Logiciel

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Jeu de tirs et passes L artilleur

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

PROJET 1 : BASE DE DONNÉES REPARTIES

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

My Custom Design ver.1.0

Le langage C. Séance n 4

TD3: tableaux avancées, première classe et chaînes

Activité 11 : Nuage de points ou diagramme de dispersion


Application 1- VBA : Test de comportements d'investissements

Poker. A rendre pour le 25 avril

Programmation système I Les entrées/sorties

Utilisation du logiciel GALAAD

Le prototype de la fonction main()

TD/TP PAC - Programmation n 3

CHAPITRE. Le mouvement en deux dimensions CORRIGÉ DES EXERCICES

I. Introduction aux fonctions : les fonctions standards

Les structures de données. Rajae El Ouazzani

POKER ET PROBABILITÉ

STAGE IREM 0- Premiers pas en Python

Création et utilisation de formulaire pdf

Initiation à Excel. Frédéric Gava (MCF)

Architecture des ordinateurs

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours d initiation à la programmation en C++ Johann Cuenin

Algorithmique et Programmation, IMA

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Utilisation d objets : String et ArrayList

DURÉE DU JOUR EN FONCTION DE LA DATE ET DE LA LATITUDE

Feuille d exercices 2 : Espaces probabilisés

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

Mathématiques et petites voitures

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Traduction des Langages : Le Compilateur Micro Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Support de formation Notebook

Rapport de Projet Béatrice Frey et Cyril Crassin Printemps Projet Fourmis. Université de Technologie de Belfort-Montbéliard

MANUEL INTÉGRÉ EA SPORTS GRAND CHELEM TENNIS 2

Logiciel PICAXE Programming Editor

Manuel de formation Spaceman 1 ère journée

Centre de formation: Collège IBN BASSAM - TEMARA. Ce cours est proposé par le professeur d informatique:

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

INFO-F-105 Language de programmation I Séance VI

Cours Programmation Système

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Synchro et Threads Java TM

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Q6 : Comment calcule t-on l intensité sonore à partir du niveau d intensité?

Celestia. 1. Introduction à Celestia (2/7) 1. Introduction à Celestia (1/7) Université du Temps Libre - 08 avril 2008

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Comment battre Milos Raonic?

Algorithmique et programmation : les bases (VBA) Corrigé

FONCTIONNEMENT D UNE MACHINE-OUTIL À COMMANDE NUMÉRIQUE - 1/2

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

La fonction exponentielle

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation en Java IUT GEII (MC-II1) 1

Infolettre #18 : Les graphiques avec Excel 2010

EXERCICES UML. Modéliser cette situation par un diagramme de cas d utilisation. Consulter planning

Manuel de dessin Floorplanner. Floorplanner. Manuel de dessin. Page. Sujet. Sujet. Page Floorplanner Avancé. 1.

Note de cours. Introduction à Excel 2007

Le planificateur. LICCON pour grues mobiles. Toujours leader.

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

GIMP. Le traitement d'images libre INSTALLATION SUR WINDOWS

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

Sommaire. Images Actives Logiciel libre développé par le CRDP de l académie de Versailles 2 Rue Pierre Bourdan Marly le Roi

LPP SAINT JOSEPH BELFORT MODE OPERATOIRE ACTIVINSPIRE. Bonne utilisation à toutes et tous! UTILISATION DES TBI LE LOGICIEL ACTIVINSPIRE

Flux de données Lecture/Ecriture Fichiers

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Les nombres entiers. Durée suggérée: 3 semaines

Licence Sciences et Technologies Examen janvier 2010

Présentation du langage et premières fonctions

Transcription:

EIDGENÖSSISCHE TECHNISCHE HOCHSCHULE LAUSANNE POLITECNICO FEDERALE LOSANNA SWISS FEDERAL INSTITUTE OF TECHNOLOGY LAUSANNE Faculté Informatique et Communication Projets en Informatique pour SV Sam J. Instructions : PROJETS EN INFORMATIQUE (SV) Test écrit Vous disposez d une heure quarante cinq minutes pour faire cet examen (8h15-10h); Nombre maximum de points: 110 dont 30 sont facultatifs; Transparents du cours et portions de code du projets autorisés; Veillez à ne traiter qu un exercice par feuille, et à indiquer votre numéro SCIPER sur chacune des feuilles. Une feuille sans identification ne sera pas corrigée; L examen compte 5 exercices. Ces exercices sont indépendants. Les exercices ne sont pas tous de même difficulté. Commencez par ceux dont vous maîtrisez le mieux les concepts impliqués. SUJET À LA PAGE SUIVANTE

Exercice 1 : Algorithme de Needlemann-Wunsch [15 points] Soit la matrice de substitution suivante: Exercice 2 : OpenGL, wxwidgets [15 points] 1. [5 points] Soit la figure suivante (où sont précisées les coordonnées de chaque point) : A G C T A 5-1 -2-1 G -1 6-5 -2 C -2-5 4 0 T -1-2 0 7 1. [5 points] Sachant que la pénalité pour un trou est de -3, donnez le score de l alignement suivant: ACGTCAATT ACT--CAGT 2. [10 points] Donnez la table d édition T produite par l algorithme de Needlemann-Wunsh pour la paire de séquences : ACGTC AGTC Expliquez dans les grandes lignes comment vous avez procédé au remplissage de la table d édition. (a) Donnez deux façons de la dessiner en OpenGL sachant qu aucune coloration de l intérieur n est requise (il n est pas demandé de dessiner les points correspondants aux sommets de façon particulière). (b) Comment dessiner le carré en colorant son intérieur en vert (code RGB (0,255,0)) (donnez le code correspondant). 2. [10 points] En utilisant les outils wxwidgets/opengl, vous devez simuler un système planétaire constitué d un soleil de rayon r1 et d une planète de rayon r2. La distance entre le soleil et la planète est d. La planète tourne autour du soleil d un angle theta (qui sera mis à jour à chaque pas de simulation) (a) En supposant que la planète tourne autour de l axe Y du soleil sur le plan X Z et que l on dispose d une méthode drawsphere(double r) permettant de dessiner une sphère de rayon r, donnez le code du corps de la méthode permettant de dessiner le système. Vous supposerez que le prototype de cette méthode est drawsolarsystem(double r1, double r2, double theta). (b) En supposant que vous disposez des classes Application, FenetreGL et VueOpenGL vues dans les exemples du tutoriel du cours, où placeriez-vous la méthode de dessin et quelle entête lui donneriez-vous? (c) Quelle rôle joue la méthode wxwidgets Connect dans la mise en oeuvre du dessin. Vous indiquerez comment et où invoquer cette méthode (sans donner tous le détail de ses arguments).

Exercice 3 : Simulation [55 points] Il est impératif de lire la question jusqu au bout avant de commencer à répondre On s intéresse ici à simuler un jeu de Pong où deux joueurs s échangent une balle. Chaque joueur possède une raquette. Il a pour but de renvoyer la balle. S il réussit, il gagne deux points. Une raquette est un simple rectangle pouvant se déplacer verticalement sur une les paroi latérales d un terrain rectangulaire. Question 1 (29 points) Dessinez une hiérarchie de classes permettant de mettre en oeuvre la conception du programme informatique simulant le jeu décrit ci-dessus. Vous spécifierez dans votre diagramme les classes, les attributs et les en-têtes des méthodes (sans les corps). A la place d un diagramme de classe vous pouvez aussi écrire les prototypes des classes et la déclaration des types nécessaires. Les contraintes à respecter sont les suivantes : Vous supposerez que des classes similaires à celles fournies dans le projet sont à votre disposition (Vecteurs à deux dimensions (Vec2D), les classes de base de la GUI: Application, FenetreGL, VueOpenGL); la mise à jour de la position, x, se fera selon le schéma d Euler-Cromer : x(t+ t) = x(t)+ t v(t+ t) Déplacement de la balle La balle se déplace à vitesse constante v (la vitesse peut-être représentée par un vecteur 2D). On suppose pour simplifier que la norme de la vitesse demeure inchangée en cas de rebond sur un obstacle. La collision se fera selon le schéma suivant : (l utilisation d un objet intégrateur n est pas nécessaire). Vous supposerez que le seul lien de votre conception avec la classe Application (similaire à celle du projet) se fasse par un objet modélisant le jeu. Vous n utiliserez qu un seul timer et ce dernier sera connecté à une méthode associée au jeu. Vous supposerez que la classe VueOpenGL offre une méthode appuitouche(wxkeyevent& event) permettant de gérer les événements clavier. Votre conception doit comporter tous les attributs et méthodes nécessaires à la mise en oeuvre de la simulation souhaitée (seules les entêtes de méthodes sont requises). Le rôle de chaque attribut et méthode sera assorti d un commentaire explicatif clair. Vous inclurez aussi des méthodes de dessin là où cela vous semble pertinent. Il ne vous est pas demandé de préciser les directives d inclusions C++. Question 2 (5 points) Soit le début du code de la méthode VueOpenGL::appuiTouche : avec θ 1 = θ 2. Intervention des deux joueurs On supposera que les deux joueurs utiliseront le même clavier pour déplacer leurs raquettes respectives : l un d eux utilisera les flèches haut et bas et l autre les touches W et S. Aucune interaction avec la souris n est prévue. void appuitouche(wxkeyevent& event) { if (event.getkeycode()== W ) { //ICI } // suite du code } au vu de votre conception, quelle(s) ligne de code mettriez-vous à l endroit du commentaire // ICI?

Question 3 (20 points) On souhaite maintenant faire en sorte que le jeu comporte des obstacles mobiles se déplaçant verticalement. Ces obstacles peuvent être circulaires ou rectangulaires. Ils seront générés aléatoirement au centre du terrain au début du jeu. Chaque obstacle a sa propre vitesse de déplacement (constante). Les obstacles ont une taille constante fixée pour une instance du jeu. Voici un exemple avec uniquement des obstacles rectangulaires : Exercice 4 : SVN [10 points] 1. [5 points] Le code de l un de vos programmes se trouve dans le répertoire monprogramme. Quelles actions devront être entreprises pour mettre ce programme sous SVN et que pour que deux de vos collègue Bob et Alice collaborent à son développement. 2. [5 points] la commande svn status effectuée dans un terminal au niveau d un répertoire donné affiche la sortie suivante:? Solutions.txt A FinalExam A FinalExam/TestSolutions.txt M Matrix33/Matrix33.cc Vous souhaitez annuler tous les changements signalés par cette affichage (ajout de nouveaux fichiers, modifications locales etc..) sans corrompre l état de SVN. Comment procéderiez-vous? Comment proposeriez-vous d étendre votre conception pour intégrer les obstacles à votre simulation? Vous spécifierez clairement ce qui reste inchangé et ce qui doit être modifié dans la conception précédente. Toute nouvelle classe sera décrite avec les attributs et méthodes nécessaires.

Exercice 5 : Exceptions [15 points] Soit le programme suivant (on suppose toutes les inclusions nécessaires faites) : 0. int readint() { 1. int lu; 2. cout << "Donnez un entier" << endl; 3. cin >> lu; 4. return lu; 5. } 6. 7. class Container { 8. public: 9. Container(size_t n) 10. :collection(n,0) 11. {} 12. void read() 13. { 14. for (size_t i(0); i < collection.size(); ++i) 15. { 16. collection[i] = 1/readInt(); 17. } 18. } 19. private: 20. vector<double> collection; 21. }; 22. int main() 23. { 24. Container mycontainer(4); 25. mycontainer.read(); 26. return 0; 27. } 1. Comment ce programme se comportera t-il si l utilisateur saisit : (a) autre chose qu un entier? (b) un zéro? 2. Comment proposez-vous, en utilisant la gestion des exceptions, de le modifier pour que l utilisateur : (a) ait 5 droits à l erreur en cas de saisie de 0 pour une entrée du vecteur (il a le droit de recommencer 5 fois au cas où il saisit 0 pour une des entrées du vecteur); (b) ait 10 droits à l erreur en cas de saisie d autre chose qu un entier; Une fois les droits à l erreur épuisés, le programme doit s arrêter avec des messages d erreurs appropriés ( Vous avez saisi 0 plus de 5 fois consécutives ou cela fait 10 fois que je vous demande un entier ). Important : la méthode readint doit pouvoir être utilisée dans des contextes autres que ce programme: il est licite qu elle retourne 0. Vous indiquerez quelles lignes de code ajouter et à quel(s) endroit(s).