GLO-1901 Introduction à la programmation avec Python

publicité
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
Téléchargement