presentation du cours d'algo
This commit is contained in:
parent
f5670a7321
commit
07d2fa69ed
|
@ -1,5 +1,5 @@
|
||||||
Les méthodes agile
|
La planification agile
|
||||||
===================
|
========================
|
||||||
|
|
||||||
Le mode itératif
|
Le mode itératif
|
||||||
-----------------
|
-----------------
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
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 4 : Python Objet & Bases de données
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
+ Classe
|
||||||
|
+ Méthodes
|
||||||
|
+ Surcharge d'opérateurs
|
||||||
|
|
||||||
|
+ Construire un exemple de classe progressivement
|
||||||
|
|
||||||
|
Idéalement un exemple avec l'utilisation d'une base de données MySQL
|
||||||
|
utiliser `pymysql`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Deuxième journée : Python Scientifique
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
Séance 5 : Calcul numérique avec Numpy
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
+ Lecture fichiers (type structuré)
|
||||||
|
|
||||||
|
+ Algèbre de base
|
||||||
|
|
||||||
|
+ broadcasting
|
||||||
|
|
||||||
|
+ stacking(hstack,vstack,dstack)
|
||||||
|
|
||||||
|
+ boucle ou pas boucle einsum vs numba comme exemple
|
||||||
|
|
||||||
|
Séance 6 : Graphiques avec Matplotlib
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
+ `visite de la grande galerie <http://matplotlib.org/gallery.html>`_
|
||||||
|
et de `la petite galerie <http://www.loria.fr/~rougier/coding/gallery/>`_
|
||||||
|
+ construction d'un graphe simple en 2d en ajoutant des éléments
|
||||||
|
graduellement pour enrichir le graphe (légendes, titre, ....)
|
||||||
|
|
||||||
|
+ imshow , contouplot
|
||||||
|
|
||||||
|
+ 3D ?
|
||||||
|
|
||||||
|
Séance 7 : Calcul scientifique avec Scipy
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
+ optimisation
|
||||||
|
+ intégration, ode
|
||||||
|
+ stats
|
||||||
|
|
||||||
|
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°, ...)
|
||||||
|
2. Appliquer un traitement
|
||||||
|
3. Mettre en forme une représentation graphique des données
|
||||||
|
|
||||||
|
|
||||||
|
+ **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.
|
|
@ -4,6 +4,6 @@ Annexes
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
|
exercices
|
||||||
agile
|
agile
|
||||||
scrum
|
scrum
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
Avant propos
|
Avant propos
|
||||||
-------------
|
============
|
||||||
|
|
||||||
**Présentation de ce cours**
|
Introduction
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
- L'accent est mis sur l'approche **algorithmique scientifique**, dite algorithmique
|
- L'accent est mis sur l'approche **algorithmique scientifique**, dite algorithmique
|
||||||
algébrique. L'algorithmique est un sous-domaine de l'algèbre et des
|
algébrique. L'algorithmique est un sous-domaine de l'algèbre et des
|
||||||
|
@ -30,3 +31,22 @@ Avant propos
|
||||||
limiterons l'exposé à deux langages d'implémentation des algorithmes : le **Python** pour la programmation
|
limiterons l'exposé à deux langages d'implémentation des algorithmes : le **Python** pour la programmation
|
||||||
impérative, modulaire et objet, et nous évoquerons aussi certains exemples en langage **OCaml**
|
impérative, modulaire et objet, et nous évoquerons aussi certains exemples en langage **OCaml**
|
||||||
à propos de la programmation fonctionnelle, modulaire et générique.
|
à propos de la programmation fonctionnelle, modulaire et générique.
|
||||||
|
|
||||||
|
Objectifs de ce cours
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Il s'agit de :
|
||||||
|
|
||||||
|
- maîtriser et concevoir un algorithmes de base,
|
||||||
|
- choisir une représentations appropriée des données,
|
||||||
|
- décomposer en sous-problèmes et affinements successifs,
|
||||||
|
- organiser les modules ou fonctions.
|
||||||
|
|
||||||
|
Le développement raisonné d’algorithmes et leur implantation
|
||||||
|
permet d'acquérir les qualités suivantes :
|
||||||
|
|
||||||
|
+ Analyser et modéliser un problème,
|
||||||
|
+ Spécifier,
|
||||||
|
+ Exprimer, une problématique, une solution ou un algorithme,
|
||||||
|
+ Traduire un algorithme dans un langage de programmation,
|
||||||
|
+ Concevoir un algorithme répondant à un problème précisément posé.
|
||||||
|
|
|
@ -7,12 +7,17 @@ Qu'est-ce qu'un programme ?
|
||||||
- Un **programme** est une suite de **phrases** ;
|
- Un **programme** est une suite de **phrases** ;
|
||||||
- Une **phrase** est une **déclaration** ou une **expression** (*statement* en anglais) ;
|
- Une **phrase** est une **déclaration** ou une **expression** (*statement* en anglais) ;
|
||||||
|
|
||||||
Exemple de déclarations :
|
|
||||||
|
|
||||||
- `a = 1`
|
expression
|
||||||
- `b = 'c'`
|
|
||||||
|
|
||||||
Exemple d'expressions :
|
Une expression est une valeur caculée du langage, une opération arithmétique
|
||||||
|
qui retourne une valeur du langage (entier, texte, valeur logique...)
|
||||||
|
|
||||||
|
Par exemple, la ligne suivante est une expression effectuant une addition::
|
||||||
|
|
||||||
|
5 + 6
|
||||||
|
|
||||||
|
Autres exemples d'expressions :
|
||||||
|
|
||||||
- 5 est une expression de type int
|
- 5 est une expression de type int
|
||||||
- 4.5 est une expression de type float
|
- 4.5 est une expression de type float
|
||||||
|
@ -21,6 +26,10 @@ Exemple d'expressions :
|
||||||
- print ('c') est une expression de type None
|
- print ('c') est une expression de type None
|
||||||
- raw_input est une expression de type string
|
- raw_input est une expression de type string
|
||||||
|
|
||||||
|
Exemple de déclarations :
|
||||||
|
|
||||||
|
- `a = 1`
|
||||||
|
- `b = 'c'`
|
||||||
|
|
||||||
.. important:: Le signe égal est utilisé de deux manières
|
.. important:: Le signe égal est utilisé de deux manières
|
||||||
|
|
||||||
|
@ -55,6 +64,17 @@ programme :
|
||||||
2. communiquer avec des fichiers,
|
2. communiquer avec des fichiers,
|
||||||
3. communiquer avec d'autres programmes.
|
3. communiquer avec d'autres programmes.
|
||||||
|
|
||||||
|
Interaction avec l'utilisateur
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
.. FIXME
|
||||||
|
|
||||||
|
- lire et écrire dans un fichier
|
||||||
|
- afficher du texte ou un nombre
|
||||||
|
- lire du texte ou un nombre
|
||||||
|
- les prompts
|
||||||
|
|
||||||
|
|
||||||
La REPL
|
La REPL
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue