From 310d8021b492564bfaa822b3570eb95cb0994c2b Mon Sep 17 00:00:00 2001 From: gwen Date: Fri, 28 Apr 2017 11:12:19 +0200 Subject: [PATCH] exercices (maximum d'une liste) --- algorithmique/cours/donnees.txt | 97 +++++++++++++++++++++++++++++++ algorithmique/cours/fonctions.txt | 2 +- algorithmique/cours/programme.txt | 28 ++++++--- 3 files changed, 118 insertions(+), 9 deletions(-) diff --git a/algorithmique/cours/donnees.txt b/algorithmique/cours/donnees.txt index 1d8c7ef..0b6397c 100644 --- a/algorithmique/cours/donnees.txt +++ b/algorithmique/cours/donnees.txt @@ -1,6 +1,22 @@ 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 ------------- @@ -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 d’un tableau, sert à repérer chaque valeur s’appelle l’indice. Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le nom du tableau, suivi de l’indice de l’élément. +**manipulation** : + +- `insert()` +- `append()` +- `remove()` +- `find()` +- `print()` +- ... + .. code-block:: python 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] >>> + +.. 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:: Matrice @@ -183,6 +244,23 @@ soit une liste l à trier : - : 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__() + + + Les listes chaînées ~~~~~~~~~~~~~~~~~~~~ @@ -193,6 +271,25 @@ Les listes chaînées 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 ----------------------------------------------------- diff --git a/algorithmique/cours/fonctions.txt b/algorithmique/cours/fonctions.txt index 39fcb39..c18776e 100644 --- a/algorithmique/cours/fonctions.txt +++ b/algorithmique/cours/fonctions.txt @@ -241,7 +241,7 @@ niveau cfg.read(CONFIG_FILE) 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": DHCP_PATH = cfg.get('eole', 'container_path_dhcp') return join('/', DHCP_PATH, 'var/lib/dhcp/dhcpd.leases') diff --git a/algorithmique/cours/programme.txt b/algorithmique/cours/programme.txt index 29969d4..51dbde1 100644 --- a/algorithmique/cours/programme.txt +++ b/algorithmique/cours/programme.txt @@ -348,17 +348,24 @@ 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 dans un fichier -- afficher du texte ou un nombre -- lire du texte ou un nombre -- manipuler les prompts +- afficher (du texte, un nombre...) +- lire (du texte, un nombre...) +- 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 " - # coding: utf-8 - prenom = raw_input("quel est ton prénom ? \n") - print("bonjour, je m'appelle " + prenom.capitalize()) +.. ifconfig:: correction + + **Correction** : (implémentation en python) + + .. code-block:: python + + # coding: utf-8 + prenom = raw_input("quel est ton prénom ? \n") + print("bonjour, je m'appelle " + prenom.capitalize()) La REPL (boucle d'interaction) @@ -415,3 +422,8 @@ Le prompt OCaml (utop):: val y : int = 3 # y * y;; - : int = 9 + +Lire et écrire dans un fichier +------------------------------ + +FIXME