Initiation à la programmation à l`aide du langage

publicité
Initiation à la programmation
à l'aide du langage Python
http://perso.wanadoo.fr/x.dupre/programmation/langage_python/
- document présentant le langage Python
- document regroupant plusieurs exemples implémentés en langage
Python (tri, dessin d'une ligne à l'écran, images de synthèse,
optimisation, file d'attente)
- document regroupant des énoncés de TD
- énoncés des TD (en cours)
Cours : 9 séances
- 5 séances : algorithmes et langages Python
- 4 séances : l'informatique au quotidien
- dans l'assurance
- dans la finance
- dans la reconnaissance d'images
TD : 9 séances
- 8 séances : exercices en langage Python
- 1 séances : évaluation
Evaluation :
- une séance de TD notée au premier semestre
- examen au premier semestre
- projet au second semestre
Examen et séance de TD notée :
- proche d'un entretien d'évaluation
Projet :
- choix d'un sujet parmi une liste de sujets disponibles ou
proposition d'un sujet validée par un chargé de TD
- réalisation d'un programme informatique (Python ou autre
langage)
- 4 suivis d'une demi-heure
- un rapport
- une soutenance orale
Utiliser Internet
Site de Python :
http://www.python.org/doc/2.4.1/
Google :
python regex
Regular Expression HOWTO - [ Traduire cette page ] (The first edition covered Python's now-obsolete regex
module, which won't help you much.) Consider checking it out from your library. ... www.amk.ca/python/howto/regex/ - 80k En cache - Pages similaires
Python re Module - Use Regular Expressions with Python - Regex Support - [ Traduire cette page ] Learn how to
use regular expressions with Python's re module. www.regular-expressions.info/python.html - 17k - 29 août 2005 - En cache Pages similaires
Kodos - The Python Regex Debugger - [ Traduire cette page ] ... regular expressions, develop regular expressions, debug
regular expressions, python regex, python re, python gui regex, python gui regular expressions ... kodos.sourceforge.net/ - 4k En cache - Pages similaires
FAQ : Frequently Asked Questions
http://www.python.org/doc/faq/
1.1.5 My program is too slow. How do I speed it up?
1.3.2 Why does -22 / 10 return -3?
Plan de la séance :
1- algorithme de tri (description, coût)
2- présentation abrégée des variables
3- présentation abrégée des structures du langage (test, boucles)
Algorithme :
- nombre fini d'étapes
- nombre fini d'opérations
- nombre fini d'objectifs
- fonctionne à chaque fois quelque soit les données
pour lesquelles il est conçu
Programmation : 3 concepts
- séquence
- test
- boucle
= enchaîner les instructions
= décider d'exécuter telle ou telle instruction
= répéter une séquence d'instructions
Tri
2
3
9
8
7
6
5
10
4
1
Imaginer une méthode systématique pour trier ?
Tri : 2 étapes
- choisir le minimum parmi les éléments restant à trier
- le ranger (ou l'ajouter à une liste triée)
9
8
7
6
5
10
1
2
4
3
Nommer les éléments pour les manipuler
n3
n1
n2
8
1
2
n8
6
5
n6
10
n7
n10
7
n5
n4
9
4
n9
3
Choisir le plus petit
- on décide que n1 est le plus petit parmi ceux qui restent à trier
- on regarde n2, si n2 est plus petit, on décide que n2 est le plus petit
- ...
n3
- manipulation de données
n1
n2
8
1
2
n8
6
5
n6
10
n7
n10
7
n5
n4
9
4
n9
3
Ranger l'élément le plus petit
- ce n'est plus une méthode : c'est plutôt donner un nom au résultat
- mémorisation de données
n3
n1
n2
8
1
2
n8
6
5
n6
10
n7
n10
7
n5
n4
9
4
n9
3
Voir poly exemple
Notations
- les éléments du tableau non trié sont notés : a [0] ... a [9]
- les éléments du tableau trié sont notés : b [0] ... b [9]
Initialisation
- tous les éléments sont dans le tableau a
- le tableau b est vide
a : 1 4 5 10 6 9 3 2 7 8
b:
Chercher l'élément le plus petit
a = [ 1, 4, 5, 10, 6, 9, 3, 2, 7, 8 ]
nb = len (a)
petit = a [0]
for i in range (1,nb) :
if a [i] < petit :
petit = a [i]
décalage obligatoire : toute
ligne décalée fait partie de
la boucle ou du test
(indentation)
print "petit = ", petit
Mémoriser l'élément le plus petit
b [0] = petit
Choisir le second élément le plus petit ?
Chercher l'élément le plus petit parmi ceux
qui restent à trier
petit2 = None
for i in range (0,nb) :
if not a [i] in b and (petit2 == None or a [i] < petit2) :
petit2 = a [i]
Mémoriser l'élément le plus petit
b [1] = petit2
Choisir le troisième élément le plus petit et
les suivants ?
Introduction d'une seconde boucle
a = [ 1, 4, 5, 10, 6, 9, 3, 2, 7, 8 ]
b = []
while len (b) < len (a) :
petit = None
for i in range (0,len(a)) :
if not a [i] in b and (petit == None or a [i] < petit) :
petit = a [i]
b.append (petit)
Cet algorithme marche-t-il dans tous les cas ?
Et si le tableau contient deux fois le même élément ?
Programme
a = [ 1, 4, 5, 10, 6, 9, 3, 2, 8, 8 ]
b = []
while len (b) < len (a) :
petit = None
for i in range (0,len(a)) :
if not a [i] in b and (petit == None or a [i] < petit) :
petit = a [i]
b.append (petit)
print b
Résultat
[1, 2, 3, 4, 5, 6, 8, 9, 10, None]
Adapter l'algorithme ?
Programme 2
a = [ 1, 4, 5, 10, 6, 9, 3, 2, 8, 8 ]
t = [ False, False, False, False, False, False, False, False, False, False ]
b = []
while len (b) < len (a) :
petit = None
pos = None
for i in range (0,len(a)) :
if not t [i] and (petit == None or a [i] < petit) :
petit = a [i]
pos = i
t [pos] = True
b.append (petit)
print b
Résultat
[1, 2, 3, 4, 5, 6, 8, 8, 9, 10]
Coût de l'algorithme
= le nombre d'opérations effectuées lors de son exécution
exprimé en fonction de la dimension des données
Coût de l'algorithme de tri : observations
- n nombres à classer
- chercher le minimum : un multiple de n
O(n)
- ranger ce nombre : indépendant de n (on n'en tient pas compte)
- on cherche n fois un nombre minimum dans une liste
Coût de l'algorithme de tri : résultat final
O(n2)
Présentation abrégée des variables du
langage Python
- types non modifiables
- rien
- booléen
- entier
- réel
- complexe
- chaîne de caractères
- vecteur
None
bool
int
float
complex
string
tuple
True
3
3.3
(1.1, 2.2)
"exemple"
(1, 2.2, "exemple")
- type modifiables
- liste
- dictionnaire
list
dict
[1, 2.2, "exemple"]
{ 1: "un", 2.2: 4.5}
Opérations usuelles avec les nombres
=
+-*/
+= -= *= /=
%
%=
affectation
4 opérations standards
opération + affectation
modulo
modulo + affectation
x = 3.3
x + 4.4
x += 4.4
13 % 10
i %= 10
x=x+4
La multiplication est prioritaire sur l'addition.
Addition sur les chaînes" de caractères et les t-uples
L'addition pour ces deux types est une concaténation.
"aze" + "erty"
(0,1) + ("e", 3.3)
"azeerty"
(0, 1, "e", 3.3)
Longueur d'une chaîne de caractères ou d'un t-uples
len ("azeerty")
len ( (0,1, "e", 3.3) )
7
4
Les éléments d'une chaîne de caractères et d'un t-uple
s = "abcdefghijkl"
s [i]
ième caractère
s [i:j]
caractères i à j exclu
s [i:]
careactères i à la fin
Caractère non modifiables d'une chaîne
de caractères ou d'un t-uple
"
s = ( 0, 1, "e", 3.3)
Il est possible d'écrire :
Mais pas :
Il faudrait :
x
s [1]
= s [1]
=x
s = s [0:1] + (x) + s [2:]
Listes
Les listes sont des tableaux modifiables.
l = [ 0, 1.1, "e", (0,1) ]
l [1] = 3.3
x = l [2]
l.append ("plus")
l [i:j]
len (l)
del l [i:j]
l = []
changer le second élément
x reçoit le troisième élément
"plus" est ajouté en fin de liste
désigne la sous liste composée
des éléments i à j exclu
longueur de la liste
supprime les éléments i à j exclu
l reçoit une liste vide
x in l
est vrai si x appartient à la liste l
Dictionnaires
Dans les listes, les éléments sont indicés par des entiers.
Dans les dictionnaires, les éléments sont indicés par ce qu'on veut, ces
indices sont appelés clés.
Les clés sont des variables de type non modifiables.
d ["e"] = 2
l'élément 2 est associé à la clé "e" et
ajouté au dictionnaire d l = {}
création d'un dictionnaire vide
x in d
est vrai si la clé x appartient au dictionnaire
Les dictionnaires sont utilisés pour faire des recherches.
On cherche par exemple des élèves par leur nom de famille.
d [“dupre”] = “Xavier”
Ce type de variable sera plus étudié en TD.
Structures du langage
- tests
- boucles
Les tests et les boucles permettent de modifier le comportement
d'un programme en fonction des données qu'il manipule.
Test : if elif else
if condition :
instruction1
instruction2
...
ou
if condition :
instruction1
instruction2
...
else :
instruction3
instruction4
...
ou encore
if condition1 :
instruction1
instruction2
...
elif condition2 :
instruction3
instruction4
...
elif condition3 :
instruction5
instruction6
...
else :
instruction7
instruction8
...
Boucle : for in, while
for variable in ensemble :
instruction1
instruction2
...
while condition :
instruction1
instruction2
...
ensemble peut-être une liste, un
dictionnaire, une chaîne de
caractères, un t-uple ou encore
range (a,b) = [a, a+1, ..., b-1]
Téléchargement