reorganisation du cours

This commit is contained in:
gwen 2017-04-10 17:47:40 +02:00
parent 44c153b95c
commit 9fb80c6b48
4 changed files with 146 additions and 197 deletions

View File

@ -110,10 +110,10 @@ Exemple d'algorithme
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}
Exemple d'algorithme avec deux implémentations Exemple d'algorithme avec son implémentation
----------------------------------------------- ---------------------------------------------
Soit l'algorithme de factorielle suivant : Soit l'algorithme de factorielle suivant,
.. raw:: latex .. raw:: latex
@ -123,40 +123,37 @@ Soit l'algorithme de factorielle suivant :
\Function{factorielle}{$n$}\Comment{La fonction récursive factorielle} \Function{factorielle}{$n$}\Comment{La fonction récursive factorielle}
\BState \emph{parametre} : $n$ entier \BState \emph{parametre} : $n$ entier
\If{$n = 1$} \If{$n = 1$}
\BState \emph{Return} : 1 \BState \emph{Sortie} : 1
\Else \Else
\BState \emph{Return} : $n * \Call{factorielle}{n-1}$ \BState \emph{Sortie} : $n * \Call{factorielle}{n-1}$ \Comment{On appelle la fonction dans l'algorithme lui-même}
\EndIf \EndIf
\EndFunction \EndFunction
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}
et son implémentation en python :
Ou encore, en **pseudocode** (algorithme vague) :
.. function:: factorielle(n:int)
::
begin
if n=1
return 1
else
return n * factoriel(n-1)
end if
end
Implémentation en python :
.. literalinclude:: code/factorielle.py .. literalinclude:: code/factorielle.py
:language: python :language: python
Implémentation en OCaml : En voici une autre implémentation (en OCaml) :
.. literalinclude:: code/factorielle.ml .. literalinclude:: code/factorielle.ml
:language: ocaml :language: ocaml
On remarque que le **pseudocode** (l'algorithme vague) est très proche de
la syntaxe du python :
.. function:: factorielle(n:int)
::
if n=1
return 1
else
return n * factorielle(n-1)
end if
Qualité d'un algorithme Qualité d'un algorithme
----------------------- -----------------------

View File

@ -53,123 +53,70 @@ Séance 3 : Chaînes et fichiers
+ glob.glob + glob.glob
+ Sans doute ces points peuvent être intégrés dans la séance 2. + 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 Séance 8 : Cas pratique de mise en oeuvre
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ écrire des instructions conditionnelles avec alternatives, + écrire des instructions conditionnelles avec alternatives,
+ démontrer quune boucle se termine effectivement. + démontrer quune boucle se termine effectivement.
+ organisation modulaire des programmes + organisation modulaire des programmes
+ programmation structurée. + programmation structurée.
1. Récupérer des données physiques ouvertes sur le réseau (T°, ...) 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 dune variable, types simples. + **Variables** : notion de type et de valeur dune variable, types simples.
Les types simples présentés sont les entiers, flottants, booléens et chaînes de caractères. Les types simples présentés sont les entiers, flottants, booléens et chaînes de caractères.
+ **Expressions et instructions simples** : + **Expressions et instructions simples** :
affectation, opérateurs usuels, distinction entre expression et instruction 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. Les expressions considérées sont à valeurs numériques, booléennes ou de type chaîne de caractères.
+ **Instructions conditionnelles**: + **Instructions conditionnelles**:
expressions booléennes et opérateurs logiques simples, structurer et comprendre plusieurs expressions booléennes et opérateurs logiques simples, structurer et comprendre plusieurs
instruction if. Variantes avec alternative (else). instruction if. Variantes avec alternative (else).
Les étudiants devront être capables de niveaux dalternatives implantées par des instructions conditionnelles imbriquées. Les étudiants devront être capables de niveaux dalternatives implantées par des instructions conditionnelles imbriquées.
+ **Instructions itératives** : + **Instructions itératives** :
boucles for, boucles conditionnelles while. boucles for, boucles conditionnelles while.
Les sorties de boucle (instruction break) peuvent être présentées et se Les sorties de boucle (instruction break) peuvent être présentées et se
justifient uniquement lorsquelles contribuent à simplifier notablement la justifient uniquement lorsquelles contribuent à simplifier notablement la
programmation sans réelle perte de lisibilité des conditions darrêt. programmation sans réelle perte de lisibilité des conditions darrêt.
+ **Fonctions** : + **Fonctions** :
notion de fonction (au sens informatique), définition dans le langage utilisé, paramètres (ou arguments) et résultats, portée des variables. 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 lutilisation des variables globales autant que possible. On distingue les variables locales des variables globales et on décourage lutilisation des variables globales autant que possible.
La récursivité sera présentée plus tard. La récursivité sera présentée plus tard.
+ **Manipulation de quelques structures de données**: + **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 chaînes de caractères (création, accès à un caractère, concaténation), listes (création, ajout
dun élément, suppression dun élément, accès à un élément, extraction dune partie de liste), tableaux à une ou plusieurs dimensions. dun élément, suppression dun élément, accès à un élément, extraction dune partie de liste), tableaux à une ou plusieurs dimensions.
On met en évidence le fait que certaines opérations dapparence simple cachent On met en évidence le fait que certaines opérations dapparence simple cachent
un important travail pour le processeur. On met à profit la structure de un important travail pour le processeur. On met à profit la structure de
tableau dentiers à deux dimensions pour introduire la notion dimage tableau dentiers à deux dimensions pour introduire la notion dimage
ponctuelle (« bitmap »). Les algorithmes de traitement dimage seront abordés ponctuelle (« bitmap »). Les algorithmes de traitement dimage seront abordés
plus tard. plus tard.
+ **Fichiers** : + **Fichiers** :
notion de chemin daccès, lecture et écriture de données numériques ou de type chaîne de caractères depuis ou vers un fichier. notion de chemin daccès, lecture et écriture de données numériques ou de type chaîne de caractères depuis ou vers un fichier.
On encourage lutilisation de fichiers en tant que supports de données ou de résultats avant divers traitements, par exemple graphiques. On encourage lutilisation de fichiers en tant que supports de données ou de résultats avant divers traitements, par exemple graphiques.
+ **Piles** + **Piles**
Algorithmes de manipulation : fonctions 'push' et 'pop'. On utilise des listes Algorithmes de manipulation : fonctions 'push' et 'pop'. On utilise des listes
(ou tableaux à 1 dimension) pour leur implantation. (ou tableaux à 1 dimension) pour leur implantation.
+ **Récursivité** + **Récursivité**
On en présente les avantages et les inconvénients. On en présente les avantages et les inconvénients.
+ **Tris** dun tableau à une dimension de valeurs + **Tris** dun tableau à une dimension de valeurs
numériques : tri par insertion, tri rapide (ou 'quicksort'), numériques : tri par insertion, tri rapide (ou 'quicksort'),
tri par fusion. Application à la tri par fusion. Application à la
recherche de la médiane dune liste de nombres. recherche de la médiane dune 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 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. pire cas.

View File

@ -62,8 +62,10 @@ L'instruction de test
\begin{algorithm} \begin{algorithm}
\caption{Exemple d'instruction de test} \caption{Exemple d'instruction de test}
\begin{algorithmic}[1] \begin{algorithmic}[1]
\Require $quality\gets 0$ ; $a\gets ""$ \BState \emph{entrée}: $quality\gets 0$ \Comment{C'est cette valeur qui sera testée}
\BState Begin \BState \emph{locale}: $a\gets ""$
\BState \emph{sortie}: $a$ \Comment{La sortie est la valeur de $a$}
\BState \emph{corps}:
\If{$quality\ge 9$} \If{$quality\ge 9$}
\State $a\gets perfect$ \State $a\gets perfect$
\ElsIf{$quality\ge 7$} \ElsIf{$quality\ge 7$}
@ -75,7 +77,6 @@ L'instruction de test
\Else \Else
\State $a\gets unusable$ \State $a\gets unusable$
\EndIf \EndIf
\BState End
\end{algorithmic} \end{algorithmic}
\end{algorithm} \end{algorithm}

View File

@ -7,37 +7,6 @@ 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) ;
expression
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
- 4.5 est une expression de type float
- 'c' est une expression de type char
- true est une expression de type bool
- print ('c') est une expression de type None
- 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
- lors d'une déclaration d'une expression
- lorsque deux expressions sont équivalentes
Suivant les langages, il y a deux symboles différents, ou alors
ils sont identiques.
Production d'un programme : Production d'un programme :
1. on écrit le code source du programme ; 1. on écrit le code source du programme ;
@ -63,38 +32,76 @@ 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 Les expressions
------------------------------ ~~~~~~~~~~~~~~~
.. FIXME expression
- lire et écrire dans un fichier Une expression est une valeur caculée du langage, une opération arithmétique
- afficher du texte ou un nombre qui retourne une valeur du langage (entier, texte, valeur logique...)
- lire du texte ou un nombre
- les prompts
Par exemple, la ligne suivante est une expression effectuant une addition::
La REPL 5 + 6
--------
.. glossary:: Autres exemples d'expressions :
REPL - 5 est une expression de type int
- 4.5 est une expression de type float
- 'c' est une expression de type char
- true est une expression de type bool
- print ('c') est une expression de type None
- raw_input est une expression de type string
Read Eval Print Loop : outil principal de communication avec un programme Un autre exemple d'expression :
ou avec un système. Exemples : la console python, le prompt OCaml.
interface .. raw:: latex
outil de communication avec un programme. \begin{algorithm}
\caption{Exemple d'expression}
\begin{algorithmic}[1]
\BState \emph{sortie}: $l$ \Comment{C'est l'expression calculée renvoyée}
\ForAll {$v \in V(G)$}
\State $l(v) \leftarrow \infty$
\EndFor
\State $l(u) \leftarrow 0$
\Repeat
\For {$i \leftarrow 1, n$}
\State $min \leftarrow l(v_i)$
\For {$j \leftarrow 1, n$}
\If {$min > e(v_i, v_j) + l(v_j)$}
\State $min \leftarrow e(v_i, v_j) + l(v_j)$
\State $p(i) \leftarrow v_j$
\EndIf
\EndFor
\State $l(i) \leftarrow min$
\EndFor
\State $changed \leftarrow l \not= l$
\State $l \leftarrow l$
\Until{$\neg changed$}
\end{algorithmic}
\end{algorithm}
- interface texte On voit qu'une expression peut-être complexe, dans tous les cas une valeur
- interface graphique est renvoyée.
Les déclarations Les déclarations
---------------- ~~~~~~~~~~~~~~~~
Renseigner une variable Exemple de déclarations :
- `a = 1`
- `b = 'c'`
.. important:: Le signe égal est utilisé de deux manières
- lors d'une déclaration d'une expression
- lorsque deux expressions sont équivalentes
Suivant les langages, il y a deux symboles différents, ou alors
ils sont identiques.
Il s'agit de **renseigner** une valeur dans une expression nommée
- en javascript : - en javascript :
@ -182,38 +189,35 @@ Voir aussi :
x1 = e1, x2 = e2, ... xn = en; x1 = e1, x2 = e2, ... xn = en;
Les expressions Interaction avec l'utilisateur
--------------- ------------------------------
.. raw:: latex Il est possible de communiquer de la manière suivante avec un programme :
\begin{algorithm} - lire et écrire sur l'entrée/sortie standard
\caption{Exemple d'expression} - lire et écrire dans un fichier
\begin{algorithmic}[1] - afficher du texte ou un nombre
\ForAll {$v \in V(G)$} - lire du texte ou un nombre
\State $l(v) \leftarrow \infty$ - manipuler les prompts
\EndFor
\State $l(u) \leftarrow 0$ La REPL
\Repeat --------
\For {$i \leftarrow 1, n$}
\State $min \leftarrow l(v_i)$ .. glossary::
\For {$j \leftarrow 1, n$}
\If {$min > e(v_i, v_j) + l(v_j)$} REPL
\State $min \leftarrow e(v_i, v_j) + l(v_j)$
\State $p(i) \leftarrow v_j$ Read Eval Print Loop : outil principal de communication avec un programme
\EndIf ou avec un système. Exemples : la console python, le prompt OCaml.
\EndFor
\State $l(i) \leftarrow min$ interface
\EndFor
\State $changed \leftarrow l \not= l$ outil de communication avec un programme.
\State $l \leftarrow l$
\Until{$\neg changed$} - interface texte
\end{algorithmic} - interface graphique
\end{algorithm}
.. FIXME mieux définir une expression
Une expression est une portion de code qui renvoie une valeur
Les fonctions Les fonctions
------------- -------------