GLO-1901 Introduction à la programmation avec Python Plan de cours et introduction Marc Parizeau (automne 2014) © Marc Parizeau, Département de génie électrique et de génie informatique 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 Échelle des cotes 13 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 Le cours • 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. 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 Qui utilise Python? • Google • YouTube • BitTorrent • EVE Online • Maya • Intel, Cisco, HP, Seagate, Qualcomm, IBM • Industrial Light & Magic, Pixar 19 • JPMorgan, Chase, UBS, Getco, Citadel • NASA, Los Alamos, Fermilab, JPL • iRobot • NSA • IronPort • One Laptop for Child • etc. 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) ✓ C (72) ✓ Smalltalk (72) ✓ Prolog (72) • Consolida- ✓ Tcl (88) • Age d’Internet ✓ Python (91) ✓ Ruby (93) ✓ Simula (62) tion ✓ BASIC (64) ✓ C++ (80) ✓ PHP (95) ✓ Ada (83) ✓ Javascript (95) ✓ Eiffel (85) ✓ XML (97) ✓ Erlang (86) ✓ Visual Basic ✓ Perl (87) ✓ etc. • Grands paradigmes ✓ Pascal (70) 22 ✓ Forth (70) ✓ Java (95) GLO-1901 ⎯ Plan de cours et introduction Langages anciens... 1950s: 1960s: 1970s: Simula Lisp Algol60 Algol68 Fortran Pascal BCPL COBOL Classic C PL\1 Red = major commercial use Yellow = will produce important “offspring” 23 GLO-1901 ⎯ Plan de cours et introduction Langages + modernes... Lisp Smalltalk Python PHP Fortran77 Simula67 C++ C89 Ada Pascal COBOL89 24 Java95 Eiffel Java04 C++0x C++98 Ada98 Object Pascal Visual Basic C# COBOL04 Javascript PERL 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 Pourquoi la programmation? • 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! 30 GLO-1901 ⎯ Plan de cours et introduction Colosse: 63e rang mondial en 2009 Commande du système de refroidissement de Colosse 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 GLO-1901 ⎯ Plan de cours et introduction