From b49b0690b998875fdee9598781619ad4a2e4818c Mon Sep 17 00:00:00 2001 From: gwen Date: Thu, 27 Apr 2017 14:46:31 +0200 Subject: [PATCH] =?UTF-8?q?=20exercices=20sur=20les=20structures=20de=20do?= =?UTF-8?q?nn=C3=A9es=20de=20base=20(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- algorithmique/cours/donnees.txt | 175 ++++++++++++++--------------- algorithmique/cours/modularite.txt | 7 +- 2 files changed, 89 insertions(+), 93 deletions(-) diff --git a/algorithmique/cours/donnees.txt b/algorithmique/cours/donnees.txt index 2a7593c..9a1fcb2 100644 --- a/algorithmique/cours/donnees.txt +++ b/algorithmique/cours/donnees.txt @@ -1,18 +1,16 @@ -Structures de données simples -============================= +Les structures de données +=========================== -FIXME +Les séquences +------------- -- tableaux -- piles -- files +Les types séquences (listes) +.. code-block:: ocaml -- Recherche dans une liste, recherche du maximum dans une liste -- Recherche d’un mot dans une chaîne de caractères. + # 4::1::5::8::1::[];; + - : int list = [4 ;1 ;5 ;8 ;1] -Les listes ------------ Un ensemble de valeurs portant le même nom de variable et repérées par un nombre, s’appelle un tableau, ou encore une liste, ou une variable indicée. Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle l’indice. @@ -30,86 +28,8 @@ Chaque fois que l’on doit désigner un élément du tableau, on fait figurer l - Lists Versus Tuples : types mutables, immutables - Lists Versus Sets : non ordonné, collection simple - -Traduction d'une structure de données dans une autre ------------------------------------------------------ - -.. code-block:: python - - >>> listOfStrings = ['One', 'Two', 'Three'] - >>> strOfStrings = ' '.join(listOfStrings) - >>> print(strOfStrings) - One Two Three - >>> - >>> # List Of Integers to a String - ... listOfNumbers = [1, 2, 3] - >>> strOfNumbers = ''.join(str(n) for n in listOfNumbers) - >>> print(strOfNumbers) - 123 - >>> - -.. code-block:: python - - >>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')] - >>> result = [] - >>> for hostname, ip, macaddress in l: - ... result.append(dict(hostname=hostname, ip=ip, macaddress=macaddress)) - ... - >>> result - [{'hostname': 'host1', 'ip': '10.1.2.3', 'macaddress': '6E:FF:56:A2:AF:18'}, - {'hostname': 'host3', 'ip': '10.1.2.5', 'macaddress': '6E:FF:56:A2:AF:19'}] - >>> - - -Structures de données complexes -------------------------------- - -- graphes -- arbres -- hachages -- le parcours de graphes -- les calculs de dates - - -Les types produits nommés (enregistrements) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. code-block:: ocaml - - # type adresse = { rue : string ; ville : string ; cp : int};; - # type fiche = { - nom : string ; - prenom : string ; - adresse : adresse ; - date naissance : int * int * int ; - tel fixe : string ; - portable : string - };; - # let v1 = { a = 1 ; b = false ; c = 'r'};; - -- les sommes (constructeurs) - -.. code-block:: ocaml - - # type couleur = Pique | Coeur | Carreau | Trefle;; - # let v = (Pique , Coeur);; - val v : couleur * couleur = (Pique , Coeur) - -.. code-block:: ocaml - - type nombre = - Ent of int | Reel of float | Cplx of float × float - Ent, Reel, Cplx sont les constructeurs du type. - -On voit qu'une expression peut-être complexe, mais dans tous les cas une valeur -est renvoyée. - -- les types séquences (listes) - -.. code-block:: ocaml - - # 4::1::5::8::1::[];; - - : int list = [4 ;1 ;5 ;8 ;1] +- Recherche dans une liste, recherche du maximum dans une liste +- Recherche d’un mot dans une chaîne de caractères. Algorithme de la longueur d'une liste -------------------------------------- @@ -204,3 +124,78 @@ Les listes chaînées int elt ; struct list* suivant ; } ; + +Traduction d'une structure de données dans une autre +----------------------------------------------------- + +.. code-block:: python + + >>> listOfStrings = ['One', 'Two', 'Three'] + >>> strOfStrings = ' '.join(listOfStrings) + >>> print(strOfStrings) + One Two Three + >>> + >>> # List Of Integers to a String + ... listOfNumbers = [1, 2, 3] + >>> strOfNumbers = ''.join(str(n) for n in listOfNumbers) + >>> print(strOfNumbers) + 123 + >>> + +.. code-block:: python + + >>> l = [('host1', '10.1.2.3', '6E:FF:56:A2:AF:18'), ('host3', '10.1.2.5', '6E:FF:56:A2:AF:19')] + >>> result = [] + >>> for hostname, ip, macaddress in l: + ... result.append(dict(hostname=hostname, ip=ip, macaddress=macaddress)) + ... + >>> result + [{'hostname': 'host1', 'ip': '10.1.2.3', 'macaddress': '6E:FF:56:A2:AF:18'}, + {'hostname': 'host3', 'ip': '10.1.2.5', 'macaddress': '6E:FF:56:A2:AF:19'}] + >>> + + +Structures de données complexes +------------------------------- + +Les types produits nommés +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +On les appelle enregistrements, dictionnaires ou tables de hachage. + +.. code-block:: ocaml + + # type adresse = { rue : string ; ville : string ; cp : int};; + # type fiche = { + nom : string ; + prenom : string ; + adresse : adresse ; + date naissance : int * int * int ; + tel fixe : string ; + portable : string + };; + # let v1 = { a = 1 ; b = false ; c = 'r'};; + +- les sommes (constructeurs) + +.. code-block:: ocaml + + # type couleur = Pique | Coeur | Carreau | Trefle;; + # let v = (Pique , Coeur);; + val v : couleur * couleur = (Pique , Coeur) + +.. code-block:: ocaml + + type nombre = + Ent of int | Reel of float | Cplx of float × float + Ent, Reel, Cplx sont les constructeurs du type. + +Autres structures de données complexes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- arbres +- graphes +- dates + +- le parcours de graphes +- les calculs de dates diff --git a/algorithmique/cours/modularite.txt b/algorithmique/cours/modularite.txt index 93dc803..075a128 100644 --- a/algorithmique/cours/modularite.txt +++ b/algorithmique/cours/modularite.txt @@ -278,12 +278,13 @@ et l'implémentation effective de l'algorithme # supprime l'entrée avec vérification que les données fournies # sont bien dans l'enregistrement à supprimer # applique la nouvelle conf DHCP - route_to_del = (1, "host2","10.1.2.4","6E:FF:56:A2:AF:17") # FIXME + route_to_del = (1, "host2","10.1.2.4","6E:FF:56:A2:AF:17") routes = get_routes() if route_to_del in routes: - c = creole_loader(load_extra=True, rw=True, owner=MODNAME, mandatory_permissive=False) + c = creole_loader(load_extra=True, rw=True) c_id = c.dhcp.dhcp.id_dhcp.id_dhcp.index(route_to_del[0]) - if c.dhcp.dhcp.id_dhcp.macaddress[c_id]==route_to_del[2] and c.dhcp.dhcp.id_dhcp.ip[c_id]==route_to_del[1]: + if c.dhcp.dhcp.id_dhcp.macaddress[c_id]==route_to_del[2] + and c.dhcp.dhcp.id_dhcp.ip[c_id]==route_to_del[1]: c.dhcp.dhcp.id_dhcp.id_dhcp.pop(c_id) config_save_values(c, MODNAME) return True