Projet - EPFL

la.epfl.ch

Projet - EPFL

Introduction

à

l'algorithmique

ME 2 e semestre

rev. 2013.2

Photo Martin Klimas

Christophe Salzmann


Plan

• Compétences

• Objectifs

• Motivation

• Organisation

• Contenu

• Notes

Projet

1


Domaine

Compétences

– Comprendre les bases de la programmation

– Développer un logiciel (simple) structuré en utilisant un langage/

environnement de programmation tel que C, Fortran ou Matlab

– Maîtriser les outils de l’analyse numérique et expérimentale

– Expliquer le fonctionnement des capteurs, des actionneurs et des algorithmes

de commande s’y rapportant

Transversales

– Gérer son temps

– Analyser ses décisions en considérant les aspects objectifs et subjectifs

– Montrer de la persévérance en dépit des obstacles

2


Objectifs

• Approfondir et développer les connaissances acquises lors du

cours informatique 1

• Se familiariser avec les algorithmes classiques et numériques et

mesurer leurs performances

• Se familiariser avec l’acquisition, le traitement et la visualisation

de données

• Etre à même de passer d'une idée à un programme en choisissant

l’environnement le mieux adapté

3


Motivations

C++

LabVIEW

Matlab

• 3 langages

• 3 manières différentes d’appréhender un problème

• 3 manières différentes d’exprimer une idée

3 fois mieux préparé pour les cours à venir!

4


Organisation

• Cours

– Lundi, salle: CO2, 15:15-17:00

• Salles projets, lundi 17:15-18:00

– CO 020..23, CM1 120-121 avec ordi personnel

Projet en binôme couvrant les 3 langages

• Exercices facultatifs, mais vivement recommandés

• Evaluations 2 x

• Page officielle du cours, mise à jour régulière:

• Sur Moodle

http://la.epfl.ch/a

http://moodle.epfl.ch/course/view.php?id=12971

5


Plan des cours

Semaine Matière Date

1 Introduction, génie logiciel et bonnes pratiques 18.2

2 Algorithmes ? 25.2

3 Listes, tableaux et buffers 4.3

4 Tri, tables, arbres et recherche 11.3

5 Instrument virtuel - I 18.3

6 Instrument virtuel - II 25.3

- Pâques - 1.4

7 Test intermédiaire 8.4

8 Mesures et affichage 15.4

9 Design patterns 22.4

10 Introduction à Matlab I 29.4

11 Introduction à Matlab II 6.5

12 Matlab III 13.5

13 - Pentecôte – 21.5

14 Examen final & remise projets 27.5

6


Notes

Pondération

• Examen intermédiaire 10%

• Examen final 30%

Projet 60%

7


Références

"Introduction to algorithms / Thomas H. Cormen ... [et al.]".

Année:2009. ISBN:978-0-262-03384-8

Algorithmes et structures de données avec ADA, C++ et Java

2004, PPUR, ISBN: 2-88074-488-1

Algorithms. R. Sedgewick, edition in c++

MATLAB A Practical Introduction to Programming and Problem Solving

Second Edition, Stormy Attaway

LabVIEW for Everyone: Graphical Programming Made Easy

and Fun (3rd Edition), Jeffrey Travis, Jim Kring

8


Projet

Le but de ce projet est de vous familiariser avec les 3 environnements vus au

cours. Il vous permettra de mettre en œuvre les différentes phases de la

création d’un programme. Chaque environnement gèrera une étape du

projet.

Le projet consiste à réaliser un adversaire informatique pour le jeu du Tic-

Tac-Toe.

• La partie stratégie sera réalisée en C/C++ (partie 1)

• La partie visualisation et interface utilisateur sera réalisée en LabVIEW

(partie 2)

• L’analyse de la partie sera réalisée à l’aide de MATLAB (partie 3).

• L’échange d’information entre les trois parties se fait par l’intermédiaire

de fichiers.

9


Projet

• Le projet se fait par groupe de 2(ou seul). Les membres du groupe sont

responsable de l'entier du code, la note est donnée au groupe, sauf cas

exceptionnel.

• Ce projet illustre comment échanger de manière simple des données

entre les différent programmes.

• La donnée du projet est volontairement libre sur certains points. Vous

aurez la tâche de choisir une solution adaptée et de la mettre en œuvre.

De même, vous devrez définir votre cahier des charges (cours 1) et

documenter votre code.

• Le projet est formaté de telle sorte que sa validation se fera "en 1 click".

Différents tests seront réalisés sur vos programmes. La partie LabVIEW

contrôlera les 2 autres parties.

10


Projet - suite

NextMove Main.vi Play.m

?

Pos

fCurrent.txt

fNext.txt

fRecorded.txt

Rouge vainqueur

fCurrent.txt

11


Projet - suite

1. Stratégie

Calcul du prochain coup en c/c++

• Lecture du fichier fCurrent.txt contenant:

– les 9 positions courantes, position 1 à 9

– 0: vide, 1:joueur, 2: computer

– 1 ou 2 , prochain joueur

?

• Validation

– Entrées valides ?

– Prochain joueur valide ?

• Calcul du prochain coup

– Définir votre stratégie

– Implanter votre stratégie

– Valider votre stratégie

fCurrent.txt

fNext.txt

• Ecriture du prochain coup dans fNext.txt contenant:

– La case jouée (1 à 9)

– Le joueur courant (1 ou 2)

– Message d'erreur

12


Projet - suite

Fichier fCurrent.txt

Fichier fNext.txt

Position dans la grille

Grille courante

Prochain joueur

1 2 3

4 5 6

7 8 9

1

0!

0!

0!

0!

0!

0!

0!

0!

0!

1!

NextMove

?

3!

1!

""!

Couleur des cases

0: case vide

1: ordinateur

2: humain

2

1

1

2

1!

0!

1!

0!

2!

0!

0!

0!

0!

2!

NextMove

?

6!

2!

""!

Vous devez valider les données du fichier fCurrent.txt

13


Projet - suite

2. Visualisation

Ecrire en LabVIEW le programme qui effectue les opérations suivantes:

• Création/lecture des fichiers des positions

– Sauvegarde des positions dans fCurrent.txt

– Lance le programme C++ du calcul de coup

– Lecture du fichier fNext.txt contenant le nouveau coup

Pos

Play.m

• Interface utilisateur

– Générer une grille contenant les coups joués

– Gestion des entrées de l'utilisateurs

– Validation des entrées/sorties

fNext.txt

fCurrent.txt

fRecorded.txt

• Sauvegarde des coups joués

– Ecrire les coups joués de manière chronologique dans le fichier fRecorded.txt

– Ecrire le script Matlab (Play.m) lisant le fichier et affichant la partie

– Lancer Matlab avec le script créé

14


3. Affichage de la partie

Projet - suite

Dans Matlab, écrire le script qui effectue les opérations suivantes:

• Ouvrir le fichier fRecorded.txt créé par LabVIEW contenant les coups

• Afficher les coups de manière chronologique dans un graphique de votre choix

• Afficher le vainqueur

Play.m

fRecorded.txt

Rouge vainqueur

15


Projet

Rendu dans une archive .zip aux noms des 2 membres du groupe

• Brève documentation/cahier des charges au format pdf (1 à 3 pages)

• Le fichier source du code c++ (partie 1)

• Le programme c++ compilé pour machine linux

• Les sources LabVIEW

• Le script/programme Matlab

• Les différents fichiers générés

Tous les chemins doivent être relatifs!

16


Logiciels

Depuis cette année les logiciels LabVIEW et MATLAB sont disponibles pour

les étudiants

MATLAB, via Poseidon

http://soft-epfl.epfl.ch/students/matlab/tah_en.cgi

LabVIEW, via Olympe

Windows \\olympe.intranet.epfl.ch\Students-NI\

OSX et linux smb://olympe.intranet.epfl.ch/students-ni/

Il faut installer de préférence les versions anglaises!

17


Assistants

• Assistant

– David Ingram

• Assistants étudiants

– Romain Baud

– Martinoli Enea,

– Brandt-dit-Siméon Antoine Adrien

– Pytnon Benoît

– Girard Arthur

– Luthi Robin

– Basbous Moukarzel Adriana Maria

– Johannes Frey

– Dufour Louis François Michel Raymond

– Christopher Boux de Casson

– Foba Amon Junior Antoine

– Piccoli Émile

– Pinazza Jean-François Benoît Michel

– Bruno Marolda

– Besuchet Nicolas

– Zilliox Thomas Pierre Richard

18

More magazines by this user
Similar magazines