GLO-1901 Introduction à la programmation avec...

45
© 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)

Transcript of GLO-1901 Introduction à la programmation avec...

© 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

É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

• 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

• Google

• 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

Colosse: 63e rang mondial en 2009

Commande du système de

refroidissement de Colosse

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