From c495caed0810f4d9430f2744577370d86ab3456e Mon Sep 17 00:00:00 2001 From: gwen Date: Fri, 12 May 2017 11:55:30 +0200 Subject: [PATCH] =?UTF-8?q?exercices=20suppl=C3=A9mentaires?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- algorithmique/cours/donnees.txt | 151 +++++++++++++++++++++++++++ algorithmique/cours/presentation.txt | 2 +- algorithmique/diapos/beamer.tex | 57 +++++++--- 3 files changed, 192 insertions(+), 18 deletions(-) diff --git a/algorithmique/cours/donnees.txt b/algorithmique/cours/donnees.txt index b1e12b6..fa866b2 100644 --- a/algorithmique/cours/donnees.txt +++ b/algorithmique/cours/donnees.txt @@ -320,6 +320,157 @@ Traduction d'une structure de données dans une autre >>> +.. ifconfig:: exercice + + **Exercice** : Proposer un algorithme de traduction de cette structure de donnée + + .. code-block:: python + + [ + { + 'address': '192.168.0.0', + 'mask': '255.255.255.0', + 'dynamicRanges': [ + { 'low': '192.168.0.5', 'high': '192.168.0.12', 'only_unknown': True }, + { 'low': '192.168.0.50', 'high': '192.168.0.55', 'only_unknown': False }, + ], + }, + { + 'address': '192.168.0.0', + 'mask': '255.255.255.0', + 'dynamicRanges': [ + { 'low': '192.168.0.12', 'high': '192.168.0.45', 'only_unknown': True }, + { 'low': '192.168.0.8', 'high': '192.168.0.35', 'only_unknown': False }, + ], + }, + ] + + En cette structure de données : + + .. code-block:: python + + [ + { + address: '192.168.0.0', + mask: '255.255.255.0', + dynamicRanges: [ + { low: '192.168.0.5', high: '192.168.0.12', only_unknown: true }, + { low: '192.168.0.50', high: '192.168.0.55', only_unknown: false },j + ], [ + { low: '192.168.0.12', high: '192.168.0.45', only_unknown: true }, + { low: '192.168.0.8', high: '192.168.0.35', only_unknown: false }, + ], + }, + ] + +.. ifconfig:: correction + + **Correction** : + + .. code-block:: python + + FIXME + >>> from pprint import pprint + pprint(l) + [{'address': '192.168.0.0', + 'dynamicRanges': [{'high': '192.168.0.12', + 'low': '192.168.0.5', + 'only_unknown': True}, + {'high': '192.168.0.55', + 'low': '192.168.0.50', + 'only_unknown': False}], + 'mask': '255.255.255.0'}, + {'address': '192.168.0.0', + 'dynamicRanges': [{'high': '192.168.0.45', + 'low': '192.168.0.12', + 'only_unknown': True}, + {'high': '192.168.0.35', + 'low': '192.168.0.8', + 'only_unknown': False}], + 'mask': '255.255.255.0'}] + >>> newdata = [] + >>> for i in l: + ... if i['add + KeyboardInterrupt + >>> addresses = [i['address'] for i in l] + >>> addresses + ['192.168.0.0', '192.168.0.0'] + >>> for i in l: + ... if i['address'] in [i['address'] for i in newdata]: + ... + File "", line 2 + if i['address'] in [i['address'] for i in newdata]: + + +.. ifconfig:: exercice + + **Exercice** : Proposer un algorithme qui permette de récupérer la liste + des adresses IP disponibles + + .. code-block:: python + + { + "local": { + "leases": [ + { + "mac": "02:00:c0:a8:00:66", + "name": "pcxubuntu", + "address": "192.168.0.200" + }, + { + "mac": "02:00:c0:a8:00:67", + "name": "pcxubuntu", + "address": "192.168.0.201" + }, + { + "mac": "02:00:c0:a8:00:68", + "name": "pcxubuntu", + "address": "192.168.0.202" + } + ] + } + } + +.. ifconfig:: correction + + **Correction** : + + .. code-block:: python + + >>> l = { + ... "local": { + ... "leases": [ + ... { + ... "mac": "02:00:c0:a8:00:66", + ... "name": "pcxubuntu", + ... "address": "192.168.0.200" + ... }, + ... { + ... "mac": "02:00:c0:a8:00:67", + ... "name": "pcxubuntu", + ... "address": "192.168.0.201" + ... }, + ... { + ... "mac": "02:00:c0:a8:00:68", + ... "name": "pcxubuntu", + ... "address": "192.168.0.202" + ... } + ... ] + ... } + ... } + >>> leases = l["local"]["leases"] + >>> from pprint import pprint + >>> pprint(leases) + [{'address': '192.168.0.200', 'mac': '02:00:c0:a8:00:66', 'name': 'pcxubuntu'}, + {'address': '192.168.0.201', 'mac': '02:00:c0:a8:00:67', 'name': 'pcxubuntu'}, + {'address': '192.168.0.202', 'mac': '02:00:c0:a8:00:68', 'name': 'pcxubuntu'}] + >>> addresses = [lease['address'] for lease in leases] + >>> addresses + ['192.168.0.200', '192.168.0.201', '192.168.0.202'] + >>> + + + Structures de données complexes ------------------------------- diff --git a/algorithmique/cours/presentation.txt b/algorithmique/cours/presentation.txt index e7dfd64..6263f9e 100644 --- a/algorithmique/cours/presentation.txt +++ b/algorithmique/cours/presentation.txt @@ -61,7 +61,7 @@ Il s'agit de : - maîtriser et concevoir un algorithme de base, - choisir une représentation appropriée des données, - décomposer en sous-problèmes et affinements successifs, -- organiser en fonction et en modules. +- savoir organiser son code en fonctions et en modules. Le développement raisonné d’algorithmes et leur implantation permet d'acquérir les qualités suivantes : diff --git a/algorithmique/diapos/beamer.tex b/algorithmique/diapos/beamer.tex index f7aa130..84a942b 100644 --- a/algorithmique/diapos/beamer.tex +++ b/algorithmique/diapos/beamer.tex @@ -17,7 +17,8 @@ \title[]{Algorithmique} -\subtitle{Cours du CESI} +\subtitle{CESI alternance} +\subtitle{promotion GMSI B3} \author[Gwenaël Rémond]{} @@ -33,27 +34,49 @@ \frame{\titlepage} \begin{frame} -\frametitle{Notion de groupe} -Un groupe est un ensemble $G$ muni d'une loi de composition interne $*$ telle que : +\frametitle{Avant propos} + +\texttt{ + "Il ne suffit pas d'avoir les mains propres, il faut avoir l'esprit pur."\\ + Thalès de Milet ; Sentences - VIe s. av. J.-C. +} + \begin{itemize} -\item La loi $*$ est associative; -\item La loi $*$ poss\`ede un \'el\'ement neutre; -\item Tout \'el\'ement de $G$ admet un sym\'etrique pour la loi $*$. +\item maîtriser et concevoir un algorithme de base, +\item choisir une représentation appropriée des données, +\item décomposer en sous-problèmes et affinements successifs, +\item savoir organiser son code en fonctions et en modules. +\end{itemize} +\end{frame} + + +\begin{frame} +\frametitle{L'art de programmer} +\begin{itemize} +\item Qu'est-ce qu'une machine ? +\item Qu'est-ce qu'un compilateur ? +\item Les niveaux d'abstraction par rapport à la machine +\end{itemize} +\end{frame} + + +\begin{frame} +\frametitle{Les langages de programmation} +\begin{itemize} +\item Les grands types de langages (compilés, dynamiques, fortement ou faiblement typés \dots) +\item Les grands paradigmes de programmation (procédural, objet, fonctionnel, modulaire \dots) \end{itemize} \end{frame} \begin{frame} - \frametitle{Introduction} - \begin{itemize} - \item Tiramisu : - \begin{itemize} - \item résultat d'une réflexion en gestation dès le début de EOLE 2.3 ; - \item première ligne de code environ septembre 2011 ; - \item un an de travail sur le code ; - \item 207 commits, 1 262 lignes de codes, 473 lignes de commentaires. - \end{itemize} - \end{itemize} +\frametitle{Les algorithmes} +\begin{itemize} +\item définition d'un algorithme +\item implémentation d'un algorithme +\item représentation d'un algorithme dans un langage cible +\end{itemize} \end{frame} -\end{document} + +\end{document}