glo-1901 introduction à la programmation avec...
TRANSCRIPT
© Marc Parizeau, Département de génie électrique et de génie informatique
GLO-1901 Introduction à la programmation
avec Python
Plan de cours et introduction
Marc Parizeau (automne 2014)
GLO-1901 ⎯ Plan de cours et introduction
Coordonnées
• Marc Parizeau ✓ local: PLT-1138.B ✓ tél: (418) 656-2131, ext. 7912 ✓ fax: (418) 656-3159 ✓ courriel: [email protected] ✓ web: http://www.gel.ulaval.ca/~parizeau
2
GLO-1901 ⎯ Plan de cours et introduction
Qui suis-je? (mes intérêts de recherche)
• Reconnaissance des formes
• Apprentissage automatique
• Algorithmes évolutionnaires
• Systèmes parallèles et distribués
3
Colosse de Québec!
GLO-1901 ⎯ Plan de cours et introduction
Information générale
• 3 crédits (9 heures de travail / semaine) ✓ 4 heures en classe par semaine ✓ 2 heures au laboratoire (en moyenne) ✓ 3 heures de travail personnel (en moyenne)
• prérequis ✓ avoir déjà travaillé avec un ordinateur
• Objectif principal ✓ apprendre les bases de la programmation
4
GLO-1901 ⎯ Plan de cours et introduction
Objectifs spécifiques
• Apprendre à manier les éléments de procédure ✓ blocs séquentiels ✓ conditionnels ✓ répétitifs
• Effectuer la décomposition fonctionnelle d’un problème • Intégrer les concepts orientés objets dans la résolution
de problème ✓ notions de classe et d’objets ✓ encapsulation et passage de message ✓ héritage et polymorphisme
• Écrire des programmes Python pour résoudre des problèmes concrets
5
GLO-1901 ⎯ Plan de cours et introduction
Évaluation
• Examen partiel: 35% ✓ lundi 3 novembre, durée = 110 mins ✓ accès à l’ordinateur
• Examen final (récapitulatif): 40% ✓ jeudi 18 décembre, durée = 110 mins ✓ accès à l’ordinateur
• Travaux pratiques (7 au total): 20% • Examen de laboratoire: 5% ✓ semaine du 21 octobre, durée = 30 mins
6
GLO-1901 ⎯ Plan de cours et introduction
Travaux pratiques
• 7 TPs répartis sur 11 semaines ✓ au début, 1 par semaine ✓ ensuite, aux 2 semaines
• Travail d'équipe ✓ outil collaboratif
(mercurial)
• dépôt individuel ✓ correction en-ligne
7
GLO-1901 ⎯ Plan de cours et introduction
Algorithme de réussite
• Lire la documentation ✓ posez des questions
• Assister au cours ✓ Posez des questions
• Faire les travaux pratiques ✓ expérimentez ✓ posez des questions
• Relire la documentation ✓ posez des questions
8
GLO-1901 ⎯ Plan de cours et introduction
• Programmation = quelques principes + myriade de détails
• Comprendre ce qui fonctionne est tout aussi essentiel que comprendre ce qui ne fonctionne pas! ✓ méfiez-vous de ce qui semble fonctionner par
magie… ✓ il importe de poser des questions pour comprendre
ce qui se passe!
9
GLO-1901 ⎯ Plan de cours et introduction
Posez des questions
• De préférence, venir me voir: ✓ après les cours, les lundis et jeudis
• Sinon, tentez votre chance avec l'algorithme suivant: ✓ Lorsque ma porte est ouverte, vous n'avez qu'à frapper avant
d'entrer! ✓ Si ma porte est fermée, c'est soit que je ne suis pas là, soit que je
suis très occupé. Vous pouvez me déranger si cela ne peut pas attendre;
✓ Si la lumière est éteinte, c'est que je ne suis pas à l'université; ✓ L'heure qui précède un cours n'est habituellement pas le bon
moment pour venir me voir.
• Sinon, prenez rendez-vous (courriel).
10
GLO-1901 ⎯ Plan de cours et introduction
Bibliographie
• Gérard Swinnen, Apprendre à programmer avec Python 3, 2010.http://www.inforef.be/swi/python.htm
• Mark Pilgrim, Dive into Python 3, http://www.diveinto.org/python3/
• Mark Lutz, Learning Python (3), 4th Edition, O'Reilly, 2009 (1200 pages).
• David M. Beazley, Python - Essential reference, 4e édition, Addison Westley.
• James Payne, Beginning Python, Wiley Publishing, 2010.
• Kenneth A. Lambert, Fundamentals of Python - First Programs, Course Technology, 2012.
11
GLO-1901 ⎯ Plan de cours et introduction
• Documentation en-ligne: ✓ Python, https://docs.python.org/3/ ✓ modules Numpy et Scipy, http://docs.scipy.org/
doc/numpy ✓ module Matplotlib, http://
matplotlib.sourceforge.net/users
12
GLO-1901 ⎯ Plan de cours et introduction
http://glo1901.gel.ulaval.ca
14
GLO-1901 ⎯ Plan de cours et introduction
Outils logiciels
• Langage ✓ Python 3.4 (distribution anaconda; choisir version Python 3.4)
• Gestion du code source ✓ Mercurial (http://mercurial.selenic.com/) ✓ Source Tree (http://www.sourcetreeapp.com/)
• Environnement de développement? ✓ ipython notebook (http://ipython.org/notebook.html) ✓ Sublime Text (http://www.sublimetext.com/) ✓ Eclipse + pydev (https://www.eclipse.org/)
• Système d’exploitation: au choix (Linux, MacOS, Windows)
15
GLO-1901 ⎯ Plan de cours et introduction
• Apprendre: ✓ concept fondamentaux en programmation ✓ différentes techniques de base ✓ syntaxe du langage Python
• À la fin du cours, vous pourrez: ✓ résoudre de problèmes sophistiqués à l’aide du Python ✓ apprendre d’autres langages ✓ poursuivre votre maîtrise de l’informatique
• La suite: ✓ langages C/C++ ✓ structures des données et algorithmes ✓ génie logiciel ✓ etc.
Le cours
16
GLO-1901 ⎯ Plan de cours et introduction
Le Python?
• Langage interprété • Usage général: on peut tout faire
✓ interfaces graphiques ✓ calcul scientifique ✓ applications webs / base de données ✓ etc.
• Vaste librairie de modules • Syntaxe cohérente
✓ langage orienté objet ✓ langage fonctionnel
• Facile à apprendre / agréable à utiliser
17
GLO-1901 ⎯ Plan de cours et introduction
• Excellent premier langage • Défauts? ✓ selon les circonstances, les programmes écrits en
Python peuvent comporter des problèmes de performance
✓ c’est le cas de tous les langages interprétés
• Approche générale: ✓ tout développer en Python ✓ identifier les sections de code qui posent un problème
de performance ✓ réécrire les sections de code problématiques dans un
langage compilé tel que le C/C++
• Le Python est conçu pour s’interfacer facilement aux autres langages
18
GLO-1901 ⎯ Plan de cours et introduction
• YouTube
• BitTorrent
• EVE Online
• Maya
• Intel, Cisco, HP, Seagate, Qualcomm, IBM
• Industrial Light & Magic, Pixar
• JPMorgan, Chase, UBS, Getco, Citadel
• NASA, Los Alamos, Fermilab, JPL
• iRobot
• NSA
• IronPort
• One Laptop for Child
• etc.
Qui utilise Python?
19
GLO-1901 ⎯ Plan de cours et introduction
Origines
• Créé en 1989 par Guido van Rossum ✓ au National Research Institute for Mathematics
and Computer Science (Hollande) ✓ succède au langage ABC ✓ « Benevolent Dictator For Life » (BDFL) ✓ jusqu’en 2012, Guido travaillait pour Google; il
travaille maintenant pour DropBox
• Gratuit, libre et multiplateforme • Le nom provient de la série
britannique «Monty Python’s Flying Circus» (voir Wikipedia)
20
« free as in free beer! »
GLO-1901 ⎯ Plan de cours et introduction
Caractéristiques du langage• Typage dynamique • Gestion automatique de la mémoire • Structure hiérarchique (modules/classes/exceptions) • Conception totalement orientée objet • Structures de données génériques • Boite à outil complète • Conçu pour «coller» ensemble des composantes
diverses • Facile (relativement) à interfacer avec d’autres langages • Facile (relativement) à utiliser et à apprendre
21
GLO-1901 ⎯ Plan de cours et introduction
Bref historique des langages•Origines ✓ FORTRAN (54) ✓ LISP (58) ✓ COBOL (59) ✓ APL (62) ✓ Simula (62) ✓ BASIC (64)
•Grands paradigmes ✓ Pascal (70)
✓ Forth (70) ✓ C (72) ✓ Smalltalk (72) ✓ Prolog (72)
•Consolida-tion ✓ C++ (80) ✓ Ada (83) ✓ Eiffel (85) ✓ Erlang (86) ✓ Perl (87)
✓ Tcl (88)
•Age d’Internet ✓ Python (91) ✓ Ruby (93) ✓ Java (95) ✓ PHP (95) ✓ Javascript (95) ✓ XML (97) ✓ Visual Basic ✓ etc.
22
GLO-1901 ⎯ Plan de cours et introduction
Langages anciens...
23
Classic C
Simula
Pascal
Algol68
BCPL
Fortran
Lisp
COBOL
Algol60
PL\1
1950s: 1960s: 1970s:
Red = major commercial use Yellow = will produce important “offspring”
GLO-1901 ⎯ Plan de cours et introduction
Langages + modernes...
24
Object Pascal
C++
Java95
C#Ada98
C++98
Java04
C++0x
PythonLisp Smalltalk
Fortran77
Ada
EiffelSimula67
COBOL89
PHP
C89
Pascal
PERLVisual Basic
COBOL04 Javascript
GLO-1901 ⎯ Plan de cours et introduction
Paradigmes de programmation
• Quatre grands paradigmes: ✓ programmation procédurale ✓ programmation orientée objet ✓ programmation fonctionnelle ✓ programmation événementielle
• Python supporte les quatre paradigmes
25
GLO-1901 ⎯ Plan de cours et introduction
Définitions
• Un langage est dit interprété lorsque ses énoncés sont convertis en langage machine au fur et à mesure de leur exécution; c’est l’interpréteur qui exécute le programme
• Un langage est dit compilé lorsque le programme entier est d’abord traduit en langage machine avant son exécution; le compilateur effectue cette traduction et le programme est directement exécuté par le processeur de l’ordinateur
26
GLO-1901 ⎯ Plan de cours et introduction
Interpréteur Python
• Application logicielle nommée « python » • Disponible en-ligne: ✓ voir le Wiki du cours
https://wiki.gel.ulaval.ca/index.php?title=GLO-1901 ✓ distribution «anaconda» ✓ Attention: langage version 3.x et non 2.x
27
GLO-1901 ⎯ Plan de cours et introduction
• Premier programme: >>> print('Bonjour le monde!')!Bonjour le monde!!>>> print(2 ** 100)!1267650600228229401496703205376!
• Mettre les énoncés dans un fichier nommé «bonjour.py» (par exemple)
• Exécutez: > python3 bonjour.py!Bonjour le monde!!1267650600228229401496703205376!
28
GLO-1901 ⎯ Plan de cours et introduction
• On peut donc entrer et faire exécuter les énoncés pythons un par un, ou encore les entrer dans un fichier avec un éditeur de programme et les faire exécuter par l’interpréteur séquentiellement
• Un bon éditeur de programme est essentiel pour pouvoir développer des programmes conséquents ✓ effectue le coloriage syntaxique et l’indentation ✓ offre des raccourcis
• L’usage interactif de l’interpréteur permet d’expérimenter et de tester ✓ nous l’utiliserons fréquemment en classe!
29
GLO-1901 ⎯ Plan de cours et introduction
• Notre civilisation est fondée sur le logiciel ✓ la plupart des activités de génie
impliquent du logiciel ✓ tous les systèmes électroniques
sont aujourd'hui programmables
• Notez bien: les programmes ne s'exécutent pas que sur des ordinateurs personnels!
Pourquoi la programmation?
30
GLO-1901 ⎯ Plan de cours et introduction
Qualités d’un logiciel
• Valide • Fiable • Efficace • Abordable • Capable d'évoluer
41
GLO-1901 ⎯ Plan de cours et introduction
Étapes de développement
• Analyse ✓ Quel est le problème? Que veut l'usager? Quel est
son budget? Quelles sont les conséquences d'une erreur?
• Conception ✓ Comment résoudre le problème? Les structures de
données? Les algorithmes? Les interfaces?
•Programmation • Tests
42
GLO-1901 ⎯ Plan de cours et introduction
Conclusion
• La programmation est un savoir faire essentiel en sciences et génie
• Le Python est un langage à la fois simple et puissant; sa maîtrise n'est cependant pas triviale
• Ce cours est important dans votre programme
• Ne pas sous-estimer sa difficulté...
43
GLO-1901 ⎯ Plan de cours et introduction
Quiz
• Nommez six caractéristiques du Python • Nommez 4 compagnies bien connues qui
utilise le Python • Dans quel cas l’usage du Python peut-il
poser problème? • Que peut-on accomplir avec le Python? • Que fait la commande «import this»?
44
GLO-1901 ⎯ Plan de cours et introduction
Pour en savoir plus...
• Voir Wikipedia: ✓ http://fr.wikipedia.org/wiki/Python_(langage) ✓ http://en.wikipedia.org/wiki/List_of_Python_software ✓ http://en.wikipedia.org/wiki/
Comparison_of_programming_languages
• et python.org: ✓ http://www.python.org/
45