Algorithmique Programmation Objet Python



Documents pareils
Initiation à la programmation en Python

STAGE IREM 0- Premiers pas en Python

TP 1. Prise en main du langage Python


1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Découverte de Python

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Recherche dans un tableau

INF 321 : mémento de la syntaxe de Java

Programmation en Java IUT GEII (MC-II1) 1

Cours d Algorithmique et de Langage C v 3.0

Conventions d écriture et outils de mise au point

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Une introduction à Java

Chapitre 2 Devine mon nombre!

Langage Java. Classe de première SI

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Bases de programmation. Cours 5. Structurer les données

Plan du cours. Historique du langage Nouveautés de Java 7

Les bases du langage Python

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Programmation système I Les entrées/sorties

1. Structure d'un programme FORTRAN 95

1 Recherche en table par balayage

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Utilisation d objets : String et ArrayList

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TD3: tableaux avancées, première classe et chaînes

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Programmer en JAVA. par Tama

Cours: Administration d'une Base de Données

LES TYPES DE DONNÉES DU LANGAGE PASCAL

1 Lecture de fichiers

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

I. Introduction aux fonctions : les fonctions standards

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

V- Manipulations de nombres en binaire

Programmation système de commandes en C

Le Langage De Description De Données(LDD)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction au langage C

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

2 Comment fonctionne un ordinateur, dans les grandes lignes

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Les chaînes de caractères

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Solutions du chapitre 4

Claude Delannoy. 3 e édition C++

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

as Architecture des Systèmes d Information

Introduction à MATLAB R

Cours d initiation à la programmation en C++ Johann Cuenin

Présentation du langage et premières fonctions

Initiation à la Programmation en Logique avec SISCtus Prolog

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle CISII,

Représentation d un entier en base b

TP3 : Manipulation et implantation de systèmes de fichiers 1

ACTIVITÉ DE PROGRAMMATION

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à l algorithmique et à la programmation M1102 CM n 3

Initiation à LabView : Les exemples d applications :

Cours 7 : Utilisation de modules sous python

L informatique en BCPST

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Introduction à JDBC. Accès aux bases de données en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Bernard HAMM, Évelyne LAVOISIER

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Algorithmique avec Algobox

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

4. Groupement d objets

UE Programmation Impérative Licence 2ème Année

Informatique Générale

SUPPORT DE COURS. Langage C

Programmation Web. Madalina Croitoru IUT Montpellier

Python - introduction à la programmation et calcul scientifique

Java DataBaseConnectivity

Perl Orienté Objet BioPerl There is more than one way to do it

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Codage d information. Codage d information : -Définition-

Programmation C++ (débutant)/instructions for, while et do...while

Cours Informatique Master STEP

Classes et Objets en Ocaml.

Corrigé des TD 1 à 5

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Cours 14 Les fichiers

DM 1 : Montre Autoquartz ETA

Transcription:

Algorithmique Programmation Objet Python Andrea G. B. Tettamanzi Université de Nice Sophia Antipolis Département Informatique andrea.tettamanzi@unice.fr Andrea G. B. Tettamanzi, 2015 1

CM - Séance 3 Introduction au langage Python Andrea G. B. Tettamanzi, 2015 2

Plan Introduction générale au langage Python Présentation des éléments de base du langage La partie «orientée objet» du langage sera traitée dans la suite Notre première structure de données : le tableau Andrea G. B. Tettamanzi, 2015 3

Sources et Remerciments La première partie de cette présentation est basée sur la documentation officielle du langage, disponible sur le site www.python.org. La deuxième partie de cette présentation est une adaptation de l'excellent mémento sur les bases de Python 3 de Laurent Pointal. Andrea G. B. Tettamanzi, 2015 4

Introduction Python est un langage de programmation Multi-paradigme Haut-niveau. Il favorise la programmation impérative structurée. Il supporte la programmation orientée objet. Il supporte la programmation fontionnelle. Il est doté de typage dynamique fort, gestion automatique de la mémoire par ramasse-miettes système de gestion d'exceptions Il est, pour certains aspects, similaire à Perl, Ruby, Scheme, Smalltalk et Tcl. Andrea G. B. Tettamanzi, 2015 5

Caractéristiques principales Langage Interprété Introspection Support intuitif pour la programmation orientée objet Modulaire, packages hierarchiques Gestion des erreurs basée sur les exceptions Types de données dynamiques haut-niveau Possède une riche bibliothèque standard Facilement extensible Documentation en ligne Open Andrea G. B. Tettamanzi, 2015 6

Curiosités Créé en 1990 par Guido van Rossum Droits détenus par la Python Software Foundation Le langage est nommé après le groupe de comédiens anglais Monty Python Les versions successives à la 3.0 ont aboli la compatibilité descendante avec les versions 2.x Andrea G. B. Tettamanzi, 2015 7

Bibliothèque standard Un point de force de python est la présence d'une grande bibliothèque standard (comme c'est le cas pour Java) Organisée hierarchiquement par modules Quelques modules : os : interface avec le système d'exploitation sys : accès à stdin, stdout, stderr, argv math : fonctions mathématiques random : générateur de nombres pseudo-aléatoires urllib : accès au Web... Andrea G. B. Tettamanzi, 2015 8

Types de base entier, flottant, booléen, chaîne int float bool str 783 0-192 9.23 0.0-1.7e-6 True False 10-6 "Un\nDeux" 'L\'âme' retour à la ligne multiligne non modifiable, séquence ordonnée de caractères ' échappé """X\tY\tZ 1\t2\t3""" tabulation Andrea G. B. Tettamanzi, 2015 9

Identificateurs Pour noms de variables, fonctions, modules, classes a za Z_ suivi de a za Z_0 9 accents possibles mais à éviter mots clés du langage interdits distinction casse min/maj a toto x7 y_max BigOne 8y and Andrea G. B. Tettamanzi, 2015 10

Affectation de variables x = 1.2+8+sin(0) valeur ou expression de calcul nom de variable (identificateur) y,z,r = 9.2,-7.6,"bad" noms de variables x+=3 x=none conteneur de plusieurs valeurs (ici un tuple) incrémentation décrémentation x-=2 valeur constante «non défini» Andrea G. B. Tettamanzi, 2015 11

Types conteneurs séquences ordonnées, accès index rapide, valeurs répétables list [1,5,9] ["x",11,8.9] ["mot"] [] tuple (1,5,9) 11,"y",7.4 ("mot",) () non modifiable str expression juste avec des virgules en tant que séquence ordonnée de caractères sans ordre a priori, clé unique, accès par clé rapide ; clés = types de base ou tuples dict dictionnaire couples clé/valeur {"clé":"valeur"} {} {1:"un",3:"trois",2:"deux",3.14:"π"} ensemble set {"clé1","clé2"} {1,9,3,0} set() Andrea G. B. Tettamanzi, 2015 12

Conversions type(expression) int("15") int(15.56) on peut spécifier la base du nombre entier en 2 ème paramètre troncature de la partie décimale (round(15.56) pour entier arrondi) float("-11.24e8") str(78.3) et pour avoir la représentation littérale voir aussi le formatage de chaînes, qui permet un contrôle fin repr("texte") bool utiliser des comparateurs (avec ==,!=, <, >, ), résultat logique booléen list("abc") utilise chaque élément de la séquence en paramètre ['a','b','c'] Andrea G. B. Tettamanzi, 2015 13

Conversions dict([(3,"trois"),(1,"un")]) {1:'un',3:'trois'} set(["un","deux"]) utilise chaque élément de la séquence en paramètre {'un','deux'} ":".join(['toto','12','pswd']) chaîne de jointure séquence de chaînes 'toto:12:pswd' "des mots espacés".split() "1,4,8,2".split(",") chaîne de séparation ['des','mots','espacés'] ['1','4','8','2'] Andrea G. B. Tettamanzi, 2015 14

Indexation des séquences Valable pour les listes, tuples, chaînes de caractères, index négatif index positif tranche positive tranche négative -6-5 -4-3 -2-1 0 1 2 3 4 5 lst=[11, 67, "abc", 3.14, 42, 1968] 0 1 2 3 4 5 6-6 -5-4 -3-2 -1 len(lst) 6 accès individuel aux éléments par [index] lst[1] 67 lst[0] 11 lst[-2] 42 lst[-1] 1968 le premier le dernier Andrea G. B. Tettamanzi, 2015 15

Indexation des séquences lst=[11, 67, "abc", 3.14, 42, 1968] Accès à des sous-séquences par [tranche début:tranche fin:pas] lst[:-1] [11,67,"abc",3.14,42] lst[1:-1] [67,"abc",3.14,42] lst[::2] [11,"abc",42] lst[:] [11,67,"abc",3.14,42,1968] lst[1:3] [67,"abc"] lst[-3:-1] [3.14,42] lst[:3] [11,67,"abc"] lst[4:] [42,1968] Indication de tranche manquante à partir du début / jusqu'à la fin. Sur les séquences modifiables, utilisable pour suppression del lst[3:5] et modification par affectation lst[1:4]=['hop',9] Andrea G. B. Tettamanzi, 2015 16

Logique booléenne Comparateurs: < > <= >= ==!= = a and b a or b not a True False conjontion logique les deux en même temps disjonction logique l'un ou l'autre ou les deux négation logique valeur constante vrai valeur constante faux Andrea G. B. Tettamanzi, 2015 17

Blocs d'instructions instruction parente: bloc d'instructions 1 instruction parente: bloc d'instructions 2 indentation! instruction suivante après bloc 1 Andrea G. B. Tettamanzi, 2015 18

Instruction conditionnelle if expression logique: bloc d'instructions bloc d'instructions exécuté uniquement si une condition est vraie Combinable avec des sinon si, sinon si... et un seul sinon final, exemple : if x==42: # bloc si expression logique x==42 vraie print("vérité vraie") elif x>0: # bloc sinon si expression logique x>0 vraie print("positivons") elif btermine: # bloc sinon si variable booléenne btermine vraie print("ah, c'est fini") else: # bloc sinon des autres cas restants print("ça veut pas") Andrea G. B. Tettamanzi, 2015 19

Maths nombres flottants valeurs approchées! Opérateurs: + - * / // % ** a b entière reste (1+5.3)*2 12.6 abs(-3.2) 3.2 round(3.57,1) 3.6 angles en radians from math import sin,pi sin(pi/4) 0.707 cos(2*pi/3) -0.4999 acos(0.5) 1.0471 sqrt(81) 9.0 log(e**2) 2.0 etc. (cf doc) Andrea G. B. Tettamanzi, 2015 20

Instruction boucle conditionnelle Bloc d'instructions exécuté tant que la condition est vraie while expression logique: bloc d'instructions s = 0 i = 1 initialisations avant la boucle condition avec au moins une valeur variable (ici i) while i <= 100: # bloc exécuté tant que i 100 s = s + i**2 i = i + 1 faire varier la variable de condition! print("somme:",s) résultat de calcul après la boucle attention aux boucles sans fin! i=100 s= i 2 i=1 Andrea G. B. Tettamanzi, 2015 21

Contrôle de boucle break sortie immédiate continue itération suivante Andrea G. B. Tettamanzi, 2015 22

Instruction boucle itérative bloc d'instructions exécuté pour chaque élément d'une séquence de valeurs ou d'un itérateur for variable in séquence: bloc d'instructions Parcours des valeurs de la séquence s = "Du texte" initialisations avant la boucle cpt = 0 variable de boucle, valeur gérée par l'instruction for for c in s: if c == "e": cpt = cpt + 1 print("trouvé",cpt,"'e'") Comptage du nombre de e dans la chaîne. boucle sur dict/set = boucle sur séquence des clés utilisation des tranches pour parcourir un sous-ensemble de la séquence Andrea G. B. Tettamanzi, 2015 23

Instruction boucle itérative Parcours des index de la séquence changement de l'élément à la position accès aux éléments autour de la position (avant/après) lst = [11,18,9,12,23,4,17] perdu = [] for idx in range(len(lst)): val = lst[idx] if val> 15: perdu.append(val) lst[idx] = 15 print("modif:",lst,"-modif:",perdu) Bornage des valeurs supérieures à 15, mémorisation des valeurs perdues. Andrea G. B. Tettamanzi, 2015 24

Génération de séquences d'entiers Très utilisée pour les boucles itératives for par défaut 0 non compris range([début,] fin [,pas]) range(5) 0 1 2 3 4 range(3,8) 3 4 5 6 7 range(2,12,3) 2 5 8 11 range retourne un «générateur», faire une conversion en liste pour voir les valeurs, par exemple: print(list(range(4))) Andrea G. B. Tettamanzi, 2015 25

Opérations sur conteneurs len(c) min(c) max(c) sum(c) sorted(c) nb d'éléments for idx,val in enumerate(c): bloc d'instructions reversed(c) c.index(val) copie triée Spécifique aux conteneurs de séquences (listes, tuples, chaînes) : itérateur inversé position Note: Pour dictionnaires et ensembles, ces opérations travaillent sur les clés. Boucle directe sur index et valeur en même temps val in c booléen, opérateur in de test de présence (not in d'absence) c*5 duplication c+c2 concaténation c.count(val) nb d'occurences Andrea G. B. Tettamanzi, 2015 26

Opérations sur listes modification de la liste originale lst.append(item) lst.extend(seq) lst.pop(idx) lst.sort() lst.reverse() ajout d'un élément à la fin ajout d'une séquence d'éléments à la fin lst.insert(idx,val) insertion à une position lst.remove(val) suppression d'un élément à partir de sa valeur tri / inversion de la liste sur place suppression de l'élément à une position et retour de la valeur Andrea G. B. Tettamanzi, 2015 27

Opération sur dictionnaires d[clé]=valeur d[clé] valeur d.clear() del d[clé] d.update(d2) mise à jour/ajout d.keys() des couples d.values() vues sur les clés, valeurs, couples d.items() d.pop(clé) Andrea G. B. Tettamanzi, 2015 28

Opérations sur ensembles Opérateurs: union (caractère barre verticale) & intersection - ^ différence/diff symétrique < <= > >= relations d'inclusion s.update(s2) s.add(clé) s.remove(clé) s.discard(clé) Andrea G. B. Tettamanzi, 2015 29

Complexité des opérations sur conteneurs Liste Append : O(1) Insert : O(n) Get/Set item : O(1) Delete item : O(n) Itération : O(n) Get tranche : O(k) Delete tranche : O(n) Set tranche : O(n + k) Min, max, x in s : O(n) Tri : O(n log n) Ensemble x in S : O(n) Union : O(n + m) Intersection : O(nm) Différence : O(n) Diff. Symmetrique : O(mn) Dictionnaire Get/Set item : O(n) Delete item : O(n) Itération : O(n) Andrea G. B. Tettamanzi, 2015 30 Source : http://wiki.python.org/moin/timecomplexity

Définition de fonction nom de la fonction (identificateur) paramètres nommés def nomfct(p_x,p_y,p_z): """documentation""" # bloc instructions, calcul de res, etc. return res valeur résultat de l'appel. si pas de résultat calculé à retourner : return None les paramètres et toutes les variables de ce bloc n'existent que dans le bloc et pendant l'appel à la fonction («boite noire») r = nomfct(3,i+2,2*i) un argument par paramètre récupération du résultat retourné (si nécessaire) Appel de fonction Andrea G. B. Tettamanzi, 2015 31

Arguments Normalement, les arguments sont positionnels Il sont réconnus par leur position dans la défintion d'une fonction D'autres types d'arguments sont disponibles. Arguments par mots clés (keyword arguments) : Syntaxe : mot_clé=valeur Ils doives toujours suivre les arguments positionnels Arguments variadiques : Syntaxe : *arg Prend une tuple contenant tous les arguments passés à une fonction Syntaxe : **arg même chose, mais dictionnaire Andrea G. B. Tettamanzi, 2015 32

Fichiers f = open("fic.txt","w",encoding="utf8") variable fichier pour les opérations nom du fichier sur le disque (+chemin ) cf fonctions des modules os et os.path mode d'ouverture 'r' lecture (read) 'w' écriture (write) 'a' ajout (append) encodage des caractères pour les fichiers textes: utf8 ascii latin1 Andrea G. B. Tettamanzi, 2015 33

Écriture et Lecture en écriture f.write("coucou") fichier texte lecture / écriture de chaînes uniquement, convertir de/vers le type désiré chaîne vide si fin de fichier s = f.read(4) lecture ligne suivante s = f.readline() en lecture si nb de caractères pas précisé, lit tout le fichier f.close() ne pas oublier de refermer le fichier après son utilisation! Fermeture automatique Pythonesque : with f as open( ): très courant : boucle itérative de lecture des lignes d'un fichier texte : for ligne in f : bloc de traitement de la ligne Andrea G. B. Tettamanzi, 2015 34

Formatage de chaînes directives de formatage "modele{} {} {}".format(x,y,r) "{sélection:formatage!conversion}" Sélection : 2 x 0.nom 4[clé] 0[2] Exemples valeurs à formater str "{:+2.3f}".format(45.7273) '+45.727' "{1:>10s}".format(8,"toto") ' toto' "{!r}".format("l'ame") '"L\'ame"' Formatage : car-rempl. alignement signe larg.mini.précision~larg.max type < > ^ = + - espace 0 au début pour remplissage avec des 0 entiers: b binaire, c caractère, d décimal (défaut), o octal, x ou X hexa flottant: e ou E exponentielle, f ou F point fixe, g ou G approprié (défaut), % pourcentage chaîne : s Conversion : s (texte lisible) ou r (représentation littérale) Andrea G. B. Tettamanzi, 2015 35

Tableaux Un tableau (array en anglais) est une structure de données de base qui est un ensemble d éléments, auquel on accède à travers un numéro d index. Le temps d'accès à un élément par son index est constant, quel que soit l'élément désiré Les éléments d'un tableau sont contigus dans l'espace mémoire. Avec l'index, on sait donc à combien de cases mémoire se trouve l'élément en partant du début du tableau. On désigne habituellement les tableaux par des lettres majuscules. SI T est un tableau alors T[i] représente l élément à l index i. Andrea G. B. Tettamanzi, 2015 36

Tableaux Avantages : accès direct au ième élément Inconvénients : les opérations d insertion et de suppression sont impossibles sauf si on crée un nouveau tableau, de taille plus grande ou plus petite (selon l'opération). Il est alors nécessaire de copier tous les éléments du tableau original dans le nouveau tableau. Cela fait donc beaucoup d'opérations. Andrea G. B. Tettamanzi, 2015 37

Tableaux Un tableau peut avoir une dimension, on parle alors de vecteur Un tableau peut avoir plusieurs dimensions, on dit qu il est multidimensionnel. On le note T[i][k] La taille d un tableau doit être définie avant son utilisation et ne peut plus être changée. Les seules opérations possibles sont set et get (on affecte un élément à un indice et on lit un élément à un indice). On peut linéarizer un tableau à plusieur dimensions : Étant donné un tableau bidimensionnel T, n m, Un peut construir un tableau linéaire L de taille nm, tel que L[im + j] = T[i][j]. Andrea G. B. Tettamanzi, 2015 38

Merci de votre attention Andrea G. B. Tettamanzi, 2015 39