exercices supplémentaires
This commit is contained in:
parent
2840b2627b
commit
5728bb1834
|
@ -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
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
|
|
|
@ -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é d’algorithmes et leur implantation
|
Le développement raisonné d’algorithmes et leur implantation
|
||||||
permet d'acquérir les qualités suivantes :
|
permet d'acquérir les qualités suivantes :
|
||||||
|
|
|
@ -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}
|
||||||
|
|
Loading…
Reference in New Issue