exercices supplémentaires

This commit is contained in:
gwen 2017-05-12 11:55:30 +02:00 committed by Benjamin Bohard
parent eb3e054e8c
commit c495caed08
3 changed files with 192 additions and 18 deletions

View File

@ -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 "<stdin>", 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 Structures de données complexes
------------------------------- -------------------------------

View File

@ -61,7 +61,7 @@ Il s'agit de :
- maîtriser et concevoir un algorithme de base, - maîtriser et concevoir un algorithme de base,
- choisir une représentation appropriée des données, - choisir une représentation appropriée des données,
- décomposer en sous-problèmes et affinements successifs, - 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é dalgorithmes et leur implantation Le développement raisonné dalgorithmes et leur implantation
permet d'acquérir les qualités suivantes : permet d'acquérir les qualités suivantes :

View File

@ -17,7 +17,8 @@
\title[]{Algorithmique} \title[]{Algorithmique}
\subtitle{Cours du CESI} \subtitle{CESI alternance}
\subtitle{promotion GMSI B3}
\author[Gwenaël Rémond]{} \author[Gwenaël Rémond]{}
@ -33,27 +34,49 @@
\frame{\titlepage} \frame{\titlepage}
\begin{frame} \begin{frame}
\frametitle{Notion de groupe} \frametitle{Avant propos}
Un groupe est un ensemble $G$ muni d'une loi de composition interne $*$ telle que :
\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} \begin{itemize}
\item La loi $*$ est associative; \item maîtriser et concevoir un algorithme de base,
\item La loi $*$ poss\`ede un \'el\'ement neutre; \item choisir une représentation appropriée des données,
\item Tout \'el\'ement de $G$ admet un sym\'etrique pour la loi $*$. \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{itemize}
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Introduction} \frametitle{Les algorithmes}
\begin{itemize} \begin{itemize}
\item Tiramisu : \item définition d'un algorithme
\begin{itemize} \item implémentation d'un algorithme
\item résultat d'une réflexion en gestation dès le début de EOLE 2.3 ; \item représentation d'un algorithme dans un langage cible
\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} \end{itemize}
\end{frame} \end{frame}
\end{document}
\end{document}