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
Top Related