Première journée : Le langage Python ------------------------------------- +------------------------------------------------------+------------------------------------------------------------------------+ | Contenus | Précisions et commentaires | +======================================================+========================================================================+ | Recherche dans une liste, recherche du maximum dans | | | une liste de nombres, calcul de la moyenne et de la | | | variance. | | +------------------------------------------------------+------------------------------------------------------------------------+ | Recherche d’un mot dans une chaîne de caractères. | On se limite ici à l’algorithme "naïf", en estimant sa complexité. | +------------------------------------------------------+------------------------------------------------------------------------+ Séance 1 : Un apercu des possibles utilisations de Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Objectif de la formation + les outils de travail avec Python + éditeur de texte + IPython (commandes intéractives + `%run`) + environnement de développement intégré (ex. Spyder) + Notebook IPython (proche de Maple/Mathematica) Séance 2 : Éléments de base du langage ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - structures de données + (),[],{} + listes en compréhension - éléments du langage boucles, conditions, fonctions, itérateur, map , enumerate - Exemple en algorithmique de base :: In [1]: def tri1(): %timeit l1.sort() Séance 3 : Chaînes et fichiers ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + traitement des chaines de caractères + s.replace() + s1 + s2 + un exemple de regexp simple + type de fichiers + mode d'accès + glob.glob + Sans doute ces points peuvent être intégrés dans la séance 2. Séance 8 : Cas pratique de mise en oeuvre ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + écrire des instructions conditionnelles avec alternatives, + démontrer qu’une boucle se termine effectivement. + organisation modulaire des programmes + programmation structurée. 1. Récupérer des données physiques ouvertes sur le réseau (T°, ...) + **Variables** : notion de type et de valeur d’une variable, types simples. Les types simples présentés sont les entiers, flottants, booléens et chaînes de caractères. + **Expressions et instructions simples** : affectation, opérateurs usuels, distinction entre expression et instruction Les expressions considérées sont à valeurs numériques, booléennes ou de type chaîne de caractères. + **Instructions conditionnelles**: expressions booléennes et opérateurs logiques simples, structurer et comprendre plusieurs instruction if. Variantes avec alternative (else). Les étudiants devront être capables de niveaux d’alternatives implantées par des instructions conditionnelles imbriquées. + **Instructions itératives** : boucles for, boucles conditionnelles while. Les sorties de boucle (instruction break) peuvent être présentées et se justifient uniquement lorsqu’elles contribuent à simplifier notablement la programmation sans réelle perte de lisibilité des conditions d’arrêt. + **Fonctions** : notion de fonction (au sens informatique), définition dans le langage utilisé, paramètres (ou arguments) et résultats, portée des variables. On distingue les variables locales des variables globales et on décourage l’utilisation des variables globales autant que possible. La récursivité sera présentée plus tard. + **Manipulation de quelques structures de données**: chaînes de caractères (création, accès à un caractère, concaténation), listes (création, ajout d’un élément, suppression d’un élément, accès à un élément, extraction d’une partie de liste), tableaux à une ou plusieurs dimensions. On met en évidence le fait que certaines opérations d’apparence simple cachent un important travail pour le processeur. On met à profit la structure de tableau d’entiers à deux dimensions pour introduire la notion d’image ponctuelle (« bitmap »). Les algorithmes de traitement d’image seront abordés plus tard. + **Fichiers** : notion de chemin d’accès, lecture et écriture de données numériques ou de type chaîne de caractères depuis ou vers un fichier. On encourage l’utilisation de fichiers en tant que supports de données ou de résultats avant divers traitements, par exemple graphiques. + **Piles** Algorithmes de manipulation : fonctions 'push' et 'pop'. On utilise des listes (ou tableaux à 1 dimension) pour leur implantation. + **Récursivité** On en présente les avantages et les inconvénients. + **Tris** d’un tableau à une dimension de valeurs numériques : tri par insertion, tri rapide (ou 'quicksort'), tri par fusion. Application à la recherche de la médiane d’une liste de nombres. On étudie et on compare ces algorithmes de tri du point de vue des complexités temporelles dans le meilleur et dans le pire cas.