exercices (maximum d'une liste)

This commit is contained in:
gwen 2017-04-28 11:12:19 +02:00
parent b0f56186f5
commit 63a96dbbc3
3 changed files with 118 additions and 9 deletions

View File

@ -1,6 +1,22 @@
Les structures de données Les structures de données
=========================== ===========================
.. glossary::
ATD
Abstract Data Type, structure de données abstraites.
La représentation des données est forcément un choix.
Il est impossible de rendre compte globalement d'un élément du réel,
il faut en faire une interprétation abstraite.
**Exemple**:
- Un être humain peut être représenté par les données présentes dans sa
carte d'identité. Mais un être humain n'est pas sa carte d'identité.
- Un être humain peut être représenté par les données présentes dans ses préférences
de surf sur internet. Mais un être humain **n'est pas** l'ensemble de ses logs de surf sur le net.
Les séquences Les séquences
------------- -------------
@ -16,6 +32,15 @@ Un ensemble de valeurs portant le même nom de variable et repérées par un nom
Le nombre qui, au sein dun tableau, sert à repérer chaque valeur sappelle lindice. Le nombre qui, au sein dun tableau, sert à repérer chaque valeur sappelle lindice.
Chaque fois que lon doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de lindice de lélément. Chaque fois que lon doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de lindice de lélément.
**manipulation** :
- `insert()`
- `append()`
- `remove()`
- `find()`
- `print()`
- ...
.. code-block:: python .. code-block:: python
zoo = ['bear', 'lion', 'panda', 'zebra'] zoo = ['bear', 'lion', 'panda', 'zebra']
@ -73,6 +98,42 @@ Cette fonction est prédéfinie en Ocaml : `List.length`
[0, 1, 2, 3, 4, 5] [0, 1, 2, 3, 4, 5]
>>> >>>
.. ifconfig:: exercice
**Exercice** : Calcul du premier élément maximal dans une liste,
proposer une implémentation en python qui renvoie le maximum et
la position du max dans la liste.
.. ifconfig:: correction
**Correction** :
.. code-block: python
def max_list(L) :
k = len(L)
max, x = L[0], 0
i = 1
while i < k :
if max < L[i]:
max = L[i]
x = i
i = i + 1
return max, x
couple = max_list([4,5,6,9,12,5,10,3,18,5,6,7])
print Max de L est , couple[0]
print et se trouve à la position , couple[1]
Exemple de généricité : ce code fonctionne avec une chaîne de caractères.
.. code-block: python
couple = max_list(totovaaumarche)
print Max de L est , couple[0]
print et se trouve à la position , couple[1]
.. glossary:: .. glossary::
Matrice Matrice
@ -183,6 +244,23 @@ soit une liste l à trier :
- : int list = [1 ; 2 ; 3 ; 4 ; 5 ; 7 ; 9] - : int list = [1 ; 2 ; 3 ; 4 ; 5 ; 7 ; 9]
Définition d'un itérateur
~~~~~~~~~~~~~~~~~~~~~~~~~~
.. code-block:: python
>>> l = range(10)
>>> for i in l:
... print l[i]
...
0
...
8
9
>>> l.__iter__()
<listiterator object at 0x7f78bb450410>
Les listes chaînées Les listes chaînées
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
@ -193,6 +271,25 @@ Les listes chaînées
struct list* suivant ; struct list* suivant ;
} ; } ;
**Outils de manipulation** :
- `next()`
- `pointer()`
- `insert(l, a)`
- `remove(a, n)`
Les piles
----------
**manipulation**
- `insert()` : insérer un élément à la fin de la pile
- `dequeue()` : (remove and return) : retirer un élément du haut de la pile
- FIFO : "first in first out"
Traduction d'une structure de données dans une autre Traduction d'une structure de données dans une autre
----------------------------------------------------- -----------------------------------------------------

View File

@ -241,7 +241,7 @@ niveau
cfg.read(CONFIG_FILE) cfg.read(CONFIG_FILE)
if name == "SUBNETS": if name == "SUBNETS":
return eval(cfg.get('eole', 'subnets')) # c'est une liste de tuple # FIXME return eval(cfg.get('eole', 'subnets'))
elif name == "LEASES_FILE": elif name == "LEASES_FILE":
DHCP_PATH = cfg.get('eole', 'container_path_dhcp') DHCP_PATH = cfg.get('eole', 'container_path_dhcp')
return join('/', DHCP_PATH, 'var/lib/dhcp/dhcpd.leases') return join('/', DHCP_PATH, 'var/lib/dhcp/dhcpd.leases')

View File

@ -348,13 +348,20 @@ Il est possible de communiquer de la manière suivante avec un programme :
- lire et écrire sur l'entrée/sortie standard - lire et écrire sur l'entrée/sortie standard
- lire et écrire dans un fichier - lire et écrire dans un fichier
- afficher du texte ou un nombre - afficher (du texte, un nombre...)
- lire du texte ou un nombre - lire (du texte, un nombre...)
- manipuler les prompts - interagir avec les prompts
Exemple de lecture d'une entrée utilisateur .. ifconfig:: exercice
.. code-block:: python **Exercice** : écrire un algorithme qui demande le prénom d'une personne
et renvoie "bonjour, je m'appelle <Prénom>"
.. ifconfig:: correction
**Correction** : (implémentation en python)
.. code-block:: python
# coding: utf-8 # coding: utf-8
prenom = raw_input("quel est ton prénom ? \n") prenom = raw_input("quel est ton prénom ? \n")
@ -415,3 +422,8 @@ Le prompt OCaml (utop)::
val y : int = 3 val y : int = 3
# y * y;; # y * y;;
- : int = 9 - : int = 9
Lire et écrire dans un fichier
------------------------------
FIXME