Introduction à l'algorithmique · • Exercices facultatifs, ... LabVIEW for Everyone: ... Le but...

19
Introduction à l'algorithmique Christophe Salzmann ME 2 e semestre rev. 2013.2 Photo Martin Klimas

Transcript of Introduction à l'algorithmique · • Exercices facultatifs, ... LabVIEW for Everyone: ... Le but...

Introduction ���à

l'algorithmique

Christophe Salzmann���

ME 2e semestre

rev. 2013.2 Photo Martin Klimas

Plan

•  Compétences

•  Objectifs

•  Motivation

•  Organisation

•  Contenu

•  Notes

•  Projet

1

Compétences

Domaine

–  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

•  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!

LabVIEW C++ Matlab

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:

http://la.epfl.ch/a

•  Sur Moodle

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

Algorithms. R. Sedgewick, edition in c++

Algorithmes et structures de données avec ADA, C++ et Java 2004, PPUR, ISBN: 2-88074-488-1

8

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

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

11

fCurrent.txt fNext.txt

?

fCurrent.txt

fRecorded.txt

Pos

Rouge vainqueur

NextMove Main.vi Play.m

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

•  Ecriture du prochain coup dans fNext.txt contenant: –  La case jouée (1 à 9) –  Le joueur courant (1 ou 2) –  Message d'erreur

12

fCurrent.txt fNext.txt

?

Projet - suite

13

Fichier fCurrent.txt

1 2 3

4 5 6

7 8 9

Position dans la grille

Couleur des cases

0: case vide 1: ordinateur 2: humain

Prochain joueur Grille courante

0!0!0!0!0!0!0!0!0!1!

1

2

1

2

1!0!1!0!2!0!0!0!0!2!

1

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

3!1!""!

Fichier fNext.txt

6!2!""!

?

?

NextMove

NextMove

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

•  Interface utilisateur –  Générer une grille contenant les coups joués –  Gestion des entrées de l'utilisateurs

–  Validation des entrées/sorties

•  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éé

Projet - suite

14

fNext.txt

fCurrent.txt

fRecorded.txt

Play.m

Pos

3. Affichage de la partie 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

Projet - suite

15

fRecorded.txt

Play.m

Rouge vainqueur

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