Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Algorithmique - Cours

  • Contexte 1: informatique
  • Contexte 2: pédagogie
  • Contexte 3: enibook
  • Objectif 1: affectation
  • Objectif 2: alternative
  • Objectif 3: itération
  • Objectif 4: définition
  • Objectif 5: appels
    • Passage des paramètres
    • Portée des variables
    • Exercices
      • Appels - Exercices de programmation
  • Objectif 6: récursivité
Index

Téléchargements

  • Site
  • Sources
  • EniBook 1.618033988
logo

Crédits

© 2008-2017, Enib

Aide

En-tête

MenuContenu
Sommaire,
Téléchargements
Aide sur les outils

Pied de page

ChevronAction
Aller en haut de la page courante
Aller en bas de la page courante
Passer à la page précédente
Passer à la page suivante

Appels - Exercices de programmation

Information :

Liens utiles sur les appels de fonctions :

  • Cours

  1. Tests sur les types
    • Question
    • Solution

    Dans de nombreux algorithmes, il est nécessaire de s'assurer du type d'un objet.

    • tester si x est de type bool ou si x est membre de la liste [0,1]:

      ok = isBoolean(x)
      
    • tester si x est de type int ou de type float:

      ok = isNumber(x)
      
    • tester si t est de type str, tuple ou list:

      ok = isSequence(x)
      
    • tester si les éléments de la séquence t sont de même type:

      ok = isHomogeneousSequence(t)
      
    • tester si t est une matrice \(n \times n\):

      ok = isMatrix(t,n,m)
      
    1. Définir les 5 fonctions précédentes : isBoolean, isNumber, isSequence, isHomogeneousSequence et isMatrix.
    2. On vérifiera un à un les différents tests.
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-types.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      # vérification 1
      booleans = [True,False,0,1,2,'True','False']
      for b in booleans :
          print 'v1 :',b,isBoolean(b)
      print
      
      # vérification 2
      import math
      numbers = [True,False,0,1,2,'12','3,14',45.1,2.e-6,math.pi,math.sin(math.pi/2)]
      for n in numbers :
          print 'v2 :',n,isNumber(n)
      print
      
      # vérification 3
      sequences = ["",(),[],"hello",(1),(1,),[[[]]],([1,2,3])]
      for s in sequences :
          print 'v3 :',s,isSequence(s)
      print
      
      # vérification 4
      sequences = ["",(),[],"hello",(1),(1,),[[[]]],([1,2,3])]
      sequences += [[[1,(1,2)],["e",[1,"r"]]],[1,2.2,'e'],([1,2],['e','r'],['e',3])]
      for s in sequences :
          print 'v4 :',s,isHomogeneousSequence(s)
      print
      
      # vérification 5
      n, m = 3, 2
      obj = [[1,2,3], [[1,2,3],[3,2,1]], [[2,1],[3,2],[4,2]], [[1,[2]],[[2],1],[[1],[2]]] ]
      for t in obj :
          print 'v5 :',t,n,m,isMatrix(t,n,m)
      
  2. Opérateurs booléens dérivés
    • Question
    • Solution
    1. Définir la fonction xor(a,b) qui correspond à l'opérateur logique « ou exclusif ».

    2. En utilisant la fonction précédente, définir la fonction circuit(a,b,c) qui retourne les sorties s et t du circuit logique ci-dessous.

      _images/appels-add3.png
    3. En utilisant la fonction précédente, définir une fonction table() qui affiche la table de vérité du circuit précédent. Les entrées-sorties seront représentées par des 0 et des 1 (non par False ou True).

    opérateurs booléens
    _images/alternative-booleens-1.png _images/alternative-booleens-2.png _images/alternative-booleens-3.png
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-boolean.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Ce circuit correspond à un additionneur à 3 entrées \(a\), \(b\), \(c\) et 2 sorties \(s\), \(t\) tel que le nombre binaire \((ts)_2\) est la somme binaire \((a+b+c)_2\) des 3 entrées :

      _images/appels-a+b+c.png

      Par un simple calcul « à la main », on trouve que cet additionneur « 3 bits » a pour table de vérité :

      \(\displaystyle \begin{array}{ccc|cc} a & b & c & s & t \\ 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 1 & 0 \\ 0 & 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 0 & 1 \\ 1 & 0 & 0 & 1 & 0 \\ 1 & 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 & 1 \end{array}\)

      Le programme Python obtient bien la même table de vérité.

  3. Codage/décodage d'un nombre
    • Question
    • Solution
    1. Définir la fonction codage(n,b,k) qui code en base \(b\) un entier \(n\) sur \(k\) chiffres.
    2. Définir la fonction decodage(c,b) qui décode en base 10 le code \(c\) d'un entier codé en base \(b\).
    3. Vérifier que :
      1. decodage(codage(n,b,k),b) == n
      2. codage(decodage(c,b),b,len(c)) == c
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-number-1.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      import random, sys
      
      # vérification 1
      n = random.randint(0,200)
      b = random.randint(2,16)
      k = random.randint(1,16)
      while b**k <= n : k = random.randint(1,16)
      code = codage(n,b,k)
      verif1 = (n == decodage(code,b))
      print 'v1 :',n,b,k,code,verif1
      
      # vérification 2
      b = random.randint(2,16)
      k = random.randint(1,10)
      while b**k >= sys.maxsize : k = random.randint(1,10)
      i, code = 0, []
      while i < k :
          code.append(random.randint(0,b-1))
          i = i + 1
      n = decodage(code,b)
      verif2 = (code == codage(n,b,len(code)))
      print 'v2 :',n,b,k,code,verif2
      
  4. Palindrome
    • Question
    • Solution
    1. Définir la fonction inverse(s,d,f) qui retourne une copie de la chaîne de caractères s dans laquelle la sous-chaîne entre les rangs d inclus et f exclu a été inversée.

      Exemples :

      • inverse("bonjour",2,5) \(\rightarrow\) "boojnur"
      • inverse("bonjour",0,4) \(\rightarrow\) "jnobour"
    2. En utilisant la fonction précédente, définir la fonction palindrome(s) qui teste si la chaîne de caractères s est un palindrome.

    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-string.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      mots = ["oui","non","kayak","bonjour","laval","mon nom"]
      for m in mots :
          print m,palindrome(m)
      
  5. Piles
    • Question
    • Solution

    Dans de nombreux cas, les seules opérations à effectuer sur les listes sont des insertions et des suppressions aux extrémités de la liste. C'est le cas en particulier des piles (stack).

    Exemple : pile d'assiettes

    Dans une pile d'assiettes, on ajoute des assiettes au sommet de la pile, et on les récupère dans l'ordre inverse, en commençant par la dernière ajoutée.

    _images/appels-assiettes.jpg

    Définition : pile

    Une pile est une séquence dans laquelle on ne peut ajouter et ne supprimer un élément qu'à une seule extrémité : le « sommet » de la pile.

    Dans le cas des piles, on ajoute (on empile) et on supprime (on dépile) à une seule extrémité. Une pile est ainsi basée sur le principe « dernier arrivé, premier sorti » (structure Lifo : Last In, First Out) : le dernier élément ajouté au sommet de la pile sera le premier à être récupéré.

    Les principales opérations nécessaires pour une pile sont ainsi :

    • créer une pile vide p:

      p = Stack()
      
    • tester si la pile p est vide:

      ok = empty(p)
      
    • accéder au sommet x de la pile p:

      x = top(p)
      
    • empiler un élément x au sommet de la pile p:

      push(p,x)
      
    • dépiler l'élément x qui se trouve au sommet de la pile p:

      x = pop(p)
      
    • sérialiser une pile p sous la forme d'une chaîne de caractères s ("[e1,e2...]"):

      s = toString(p)
      
    1. Définir les 6 fonctions précédentes concernant les piles : Stack, empty, top, push, pop et toString. Une pile sera implémentée par une liste.
    2. Vérifier que :
      1. empty(Stack()) == True
      2. top(p) == pop(p) et que pop(p) != top(p);
      3. x == pop(p) juste après avoir empiler x sur la pile p (push(p,x));
      4. p est inchangée après l'opération push(p,pop(p)).
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-list-1.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      # initialisation
      p = Stack()
      
      # vérification 1
      verif1 = empty(p)
      print u'vérification 1 :',toString(p),verif1
      
      for i in range(9) :
          push(p,i)
          print i, toString(p)
      
      # vérification 2
      verif2 = top(p) == pop(p)
      print u'vérification 2 :',toString(p),verif2
      
      # vérification 3
      verif3 = pop(p) != top(p)
      print u'vérification 3 :',toString(p),verif3
      
      # vérification 4
      x = 9
      push(p,x)
      verif4 = x == pop(p)
      print u'vérification 4 :',toString(p),verif4
      
      # vérification 5
      p1 = toString(p)
      push(p,pop(p))
      p2 = toString(p)
      verif5 = p1 == p2
      print u'vérification 5 :',toString(p),verif5
      
      # vérification 6
      while not empty(p) :
          print pop(p),toString(p)
      
  6. Files
    • Question
    • Solution

    Dans de nombreux cas, les seules opérations à effectuer sur les listes sont des insertions et des suppressions aux extrémités de la liste. C'est le cas en particulier des files (queue).

    Exemple : file d'attente de voitures

    A un péage, la première voiture à être entrée dans une file d'attente sera la première sortie de la file.

    _images/appels-attente.jpg

    Définition : file

    Une file est une séquence dans laquelle on ne peut ajouter un élément qu'à une seule extrémité et ne supprimer un élément qu'à l'autre extrémité : la « tête » de la file.

    Dans le cas des files, on ajoute (on enfile) à une extrémité et on supprime (on défile) à l'autre extrémité. Une file est ainsi basée sur le principe « premier arrivé, premier sorti » (Fifo : First In, First Out) : le premier élément ajouté sera le premier à être récupéré en tête de file.

    Les principales opérations nécessaires pour une file sont ainsi :

    • créer une file vide p:

      p = Queue()
      
    • tester si la file p est vide:

      ok = empty(p)
      
    • accéder à la tête x de la file p:

      x = top(p)
      
    • enfiler un élément x en fin de la file p:

      push(p,x)
      
    • défiler l'élément x de la tête de la pile p:

      x = pop(p)
      
    • sérialiser une file p sous la forme d'une chaîne de caractères s ("[e1,e2...]"):

      s = toString(p)
      
    1. Définir les 6 fonctions précédentes concernant les files : Queue, empty, top, push, pop et toString. Une file sera implémentée par une liste.
    2. Vérifier que :
      1. empty(Queue()) == True
      2. x == pop(p) and empty(p) après avoir effectué p = Queue(); push(p,x)
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-list-2.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      # initialisation
      p = Queue()
      
      # vérification 1
      verif1 = empty(p) == True
      print u'vérification 1 :',toString(p),verif1
      
      # vérification 2
      push(p,9)
      x = pop(p)
      verif2 = (x == 9) and empty(p)
      print toString(p),x,verif2
      
      # vérification 3
      print toString(p)
      for i in range(9) :
          push(p,i)
          print i, toString(p)
      
      verif3 = not empty(p)
      print u'vérification 3 :',toString(p),verif3
      
      # vérification 4
      while not empty(p) :
          print pop(p),toString(p)
      
  7. Ensembles
    • Question
    • Solution
    Définition : ensemble

    Un ensemble (set) est une collection d'éléments où chaque élément est unique.

    Les principales opérations nécessaires pour un ensemble sont ainsi :

    • tester si x est unique dans la liste p:

      ok = unique(p,x)
      
    • tester si une liste p peut être considérée comme un ensemble (ie. pas de doublons):

      ok = isSet(p)
      
    • créer un ensemble vide p:

      p = Set()
      
    • tester si l'ensemble p est vide:

      ok = empty(p)
      
    • tester si x est élément de l'ensemble p:

      ok = member(p,x)
      
    • ajouter un élément x à l'ensemble p:

      insert(p,x)
      

      L'élément ne sera pas ajouté s'il appartient déjà à l'ensemble (pas de doublons).

    • supprimer un élément x de l'ensemble p:

      x = remove(p,x)
      
    • déterminer l'intersection de 2 ensembles p1 et p2:

      p = inter(p1,p2)
      
    • déterminer l'union de 2 ensembles p1 et p2:

      p = union(p1,p2)
      
    • déterminer la différence de 2 ensembles p1 et p2:

      p = diff(p1,p2)
      
    • sérialiser une ensemble p sous la forme d'une chaîne de caractères s ("{e1,e2...}"):

      s = toString(p)
      
    1. Définir les 9 fonctions précédentes concernant les ensembles : Set, empty, member, insert, remove, inter, union, diff et toString. Un ensemble sera implémenté par une liste.
    2. On vérifiera une à une les différentes opérations sur les ensembles.
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer les fonctions demandées.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-type-list-3.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      # initialisation
      p1, p2 = Set(), Set()
      
      # vérification 1
      verif1 = empty(p1) and empty(p2)
      print u'vérification 1 :',toString(p1),toString(p2),verif1
      
      # vérification 2
      for i in range(5) :
          add(p1,i)
          add(p1,i)
          add(p2,i+3)
      verif2 = isSet(p1) and member(p1,4) and isSet(p2) and member(p2,7)
      print u'vérification 2 :',toString(p1),toString(p2),verif2
      
      # vérification 3
      p3 = inter(p1,p2)
      p3.sort()
      verif3 = p3 == [3,4]
      print u'vérification 3 :',toString(p1),toString(p2),toString(p3),verif3
      
      # vérification 4
      p4 = union(p1,p2)
      p4.sort()
      verif4 = p4 == [0,1,2,3,4,5,6,7]
      print u'vérification 4 :',toString(p1),toString(p2),toString(p4),verif4
      
      # vérification 5
      p5 = diff(p1,p2)
      p5.sort()
      verif5 = p5 == [0,1,2]
      print u'vérification 5 :',toString(p1),toString(p2),toString(p5),verif5
      
      # vérification 6
      p6 = diff(p2,p1)
      p6.sort()
      verif6 = p6 == [5,6,7]
      print u'vérification 6 :',toString(p1),toString(p2),toString(p6),verif6
      
      # vérification 7
      for i in [5,6,7] :
          remove(p2,i)
      p2.sort()
      verif7 = p2 == p3
      print u'vérification 7 :',toString(p2),toString(p3),verif7
      
  8. Fleurs polygonales
    • Question
    • Solution

    Définir une fonction qui dessine une fleur à pétales polygonaux. Pour cela, on pourra décomposer le problème en 2 fonctions :

    • polygone(t,m,d) : la tortue t dessine un polygone régulier de m côtés de longueur d.
    • fleur(t,n,m,d) : la tortue t dessine une fleur composée de n pétales sous forme de n polygones réguliers de m cotés de longueur d tournés les uns par rapport aux autres de 360/n.
    aide Python
    Module turtle

    Ce module permet de simuler la tortue Logo.

    Exemple:

    import turtle
    
    t = turtle.Turtle()
    s = turtle.Screen()
    t.forward(100)
    t.left(360./7)
    s.exitonclick()
    
    Classes :

    Screen, Turtle

    Méthodes :
    • Screen : addshape, bgcolor, bye, clear, clearscreen, delay, done, exitonclick, getshapes, listen, mainloop, onclick, onkey, onscreenclick, ontimer, register_shape, reset, resetscreen, setup, setworldcoordinates, tracer, turtles, update, window_height, window_width
    • Turtle : back, backward, begin_fill, bk, circle, clear, clone, color, degrees, delay, distance, done, dot, down, end_fill, fd, fill, fillcolor, forward, getpen, getscreen, getturtle, heading, hideturtle, home, ht, isdown, isvisible, left, lt, mainloop, onclick, ondrag, onrelease, pd, pencolor, pendown, pensize, penup, pos, position, pu, radians, reset, right, rt, seth, setheading, setpos, setposition, setundobuffer, setx, sety, shape, showturtle, speed, st, stamp, towards, tracer, undo, undobufferentries, up, update, width, window_height, window_width, write, xcor, ycor
    Documentation officielle :

    module turtle

    Module random

    Ce module permet de générer des nombres pseudo-aléatoires.

    Exemple:

    import random
    
    n = random.randint(0,100)
    e = random.choice([1,2,3,4,5,6])
    p = random.random()
    
    Fonctions :

    choice, randint, random, randrange, seed, shuffle, uniform

    Documentation officielle :

    module random

    Module math

    Ce module permet de manipuler les principales fonctions mathématiques.

    Exemple:

    import math
    
    pi = math.pi
    y = math.log(math.sin(math.pi/2))
    
    Constantes :

    pi, e

    Fonctions :

    acos, acosh, asin, asinh, atan, atan2, atanh, ceil, copysign, cos, cosh, degrees, exp, fabs, factorial, floor, hypot, isnan, log, log10, pow, radians, sin, sinh, sqrt, tan, tanh, trunc

    Documentation officielle :

    module math

    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-logo-2.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé.

      Le tracé de fleurs doit rendre compte de ce qu'est une fleur à pétales polygonaux:

      import turtle
      t = turtle.Turtle()
      t.speed(10)
      fleur(t,12,6,40)
      
  9. Code de César
    • Question
    • Solution

    Le code de César est une méthode de cryptage très simple utilisée par Jules César dans ses correspondances secrètes.

    Le texte crypté s'obtient en remplaçant chaque lettre du texte original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Dans un décalage à droite, on reprend au début de l'alphabet pour les dernières lettres de l'alphabet : ...x,y,z,a,b,c... Dans un décalage à gauche, on reprend à la fin de l'alphabet pour les premières lettres : ...c,b,a,z,y,x...

    _images/iteration-jeux-4.png

    Exemples :

    texte original décalage traduction
    hal 1 ibm
    kzbuoiorgzxgjaizout -6 etvoicilatraduction
    nzopopufwpdnpdlc -11 codedejulescesar
    ljvsluhapvuhslkpunluplbyzkliylza 19 ecolenationaledingenieursdebrest
    1. Définir la fonction cesar(t,d) qui propose la traduction du texte original t lorsqu'on connaît le décalage d. On n'utilisera que les 26 lettres minuscules abcdef...xyz de l'alphabet.
    2. Vérifier en appliquant 2 fois de suite la fonction cesar pour retrouver le texte original.
    rappels sur le chiffrement
    • Chiffre de César

      Le code de César est une méthode de cryptage où le texte crypté s'obtient en remplaçant chaque lettre du texte original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Dans un décalage à droite, on reprend au début de l'alphabet pour les dernières lettres de l'alphabet : ...x,y,z,a,b,c... Dans un décalage à gauche, on reprend à la fin de l'alphabet pour les premières lettres : ...c,b,a,z,y,x...

    • Chiffre de Trithemius

      Johannes Trithemius (abbé bénédictin allemand, 1462-1516) proposa une amélioration du code de César où chaque lettre du texte original est décalée de 1 par rapport à la lettre précédente.

      Ainsi, pour le texte original « bonjour », si la première lettre « b » est décalée de 3, la deuxième lettre « o » sera décalée de 4 (3+1), la troisième lettre « n » de 5 (4+1) et ainsi de suite jusqu’à la dernière lettre « r » qui sera finalement décalée de 9 (3+1+1+1+1+1+1).

    • Chiffre de Vigenère

      Blaise de Vigenère (diplomate français, 1523-1596) proposa une amélioration du chiffre de Trithemius où chaque lettre t[i] du texte original t est décalée de k[i%len(k)] lettres si k est la clé de chiffrement. Les 26 lettres abc...yz sont numérotées de 0 (a) à 25 (z).

      Ainsi, pour le texte original « bonjour » et la clé « azerty », la première lettre « b » sera décalée de 0 (la première lettre de la clé : « a » vaut 0), la deuxième lettre « o » sera décalée de 25 (la deuxième lettre de la clé : « z » vaut 25), la troisième lettre « n » de 4 (la troisième lettre de la clé : « e » vaut 4) et ainsi de suite jusqu’à la septième et dernière lettre « r » qui sera finalement décalée de 0 (k[i%len(k)] = k[6%6] = k[0] : « a » vaut 0).

    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-jeux-1.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      tests = [('hal',1,'ibm'),
               ('kzbuoiorgzxgjaizout',-6,'etvoicilatraduction'),
               ('nzopopufwpdnpdlc',-11,'codedejulescesar'),
               ('ljvsluhapvuhslkpunluplbyzkliylza',19,'ecolenationaledingenieursdebrest'),
               ('',-158,''),
               ('pareil',0,'pareil')]
      for (e1,e2,s1) in tests :
          r = cesar(e1,e2)
          verif1 = (r == s1)
          s = cesar(cesar(e1,e2),-e2)
          verif2 = (e1 == s)
          print e1,e2,r,s,verif1,verif2
      

      Le double appel cesar(cesar(t,d),-d) redonne bien le texte original t.

  10. Chiffre de Trithemius
    • Question
    • Solution

    Johannes Trithemius (abbé bénédictin allemand, 1462-1516) proposa une amélioration du code de César où chaque lettre du texte original est décalée de 1 par rapport à la lettre précédente.

    Ainsi, pour le texte original « bonjour », si la première lettre « b » est décalée de 3, la deuxième lettre « o » sera décalée de 4 (3+1), la troisième lettre « n » de 5 (4+1) et ainsi de suite jusqu'à la dernière lettre « r » qui sera finalement décalée de 9 (3+1+1+1+1+1+1).

    Exemples :

    texte original décalage initial décalage à chaque étape traduction
    hal 1 1 ico
    kbfawsafwrrchakducd -6 -2 etvoicilatraduction
    nwigcamhvdoingpk -11 3 codedetrithemius
    lndebofcvfizoloxgdfsrrlmrglmgxpu 19 -4 ecolenationaledingenieursdebrest
    1. Définir la fonction trithemius(t,d,s) qui propose la traduction du texte original t en appliquant un décalage initial de d lettres et en ajoutant s lettres à chaque étape. On n'utilisera que les 26 lettres minuscules abcdef...xyz de l'alphabet.
    2. Vérifier en appliquant 2 fois de suite la fonction trithemius pour retrouver le texte original.
    rappels sur le chiffrement
    • Chiffre de César

      Le code de César est une méthode de cryptage où le texte crypté s'obtient en remplaçant chaque lettre du texte original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Dans un décalage à droite, on reprend au début de l'alphabet pour les dernières lettres de l'alphabet : ...x,y,z,a,b,c... Dans un décalage à gauche, on reprend à la fin de l'alphabet pour les premières lettres : ...c,b,a,z,y,x...

    • Chiffre de Trithemius

      Johannes Trithemius (abbé bénédictin allemand, 1462-1516) proposa une amélioration du code de César où chaque lettre du texte original est décalée de 1 par rapport à la lettre précédente.

      Ainsi, pour le texte original « bonjour », si la première lettre « b » est décalée de 3, la deuxième lettre « o » sera décalée de 4 (3+1), la troisième lettre « n » de 5 (4+1) et ainsi de suite jusqu’à la dernière lettre « r » qui sera finalement décalée de 9 (3+1+1+1+1+1+1).

    • Chiffre de Vigenère

      Blaise de Vigenère (diplomate français, 1523-1596) proposa une amélioration du chiffre de Trithemius où chaque lettre t[i] du texte original t est décalée de k[i%len(k)] lettres si k est la clé de chiffrement. Les 26 lettres abc...yz sont numérotées de 0 (a) à 25 (z).

      Ainsi, pour le texte original « bonjour » et la clé « azerty », la première lettre « b » sera décalée de 0 (la première lettre de la clé : « a » vaut 0), la deuxième lettre « o » sera décalée de 25 (la deuxième lettre de la clé : « z » vaut 25), la troisième lettre « n » de 4 (la troisième lettre de la clé : « e » vaut 4) et ainsi de suite jusqu’à la septième et dernière lettre « r » qui sera finalement décalée de 0 (k[i%len(k)] = k[6%6] = k[0] : « a » vaut 0).

    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-jeux-2.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      tests = [('hal',1,1,'ico'),
               ('kbfawsafwrrchakducd',-6,-2,'etvoicilatraduction'),
               ('nwigcamhvdoingpk',-11,3,'codedetrithemius'),
               ('lndebofcvfizoloxgdfsrrlmrglmgxpu',19,-4,'ecolenationaledingenieursdebrest'),
               ('',-158,-2,''),
               ('pareil',0,0,'pareil')]
      for (e1,e2,e3,s1) in tests :
          r = trithemius(e1,e2,e3)
          verif1 = (r == s1)
          s = trithemius(trithemius(e1,e2,e3),-e2,-e3)
          verif2 = (e1 == s)
          print e1,e2,e3,r,s,verif1,verif2
      

      Le double appel trithemius(trithemius(t,d,s),-d,-s) redonne bien le texte original t.

  11. Chiffre de Vigenère
    • Question
    • Solution

    Blaise de Vigenère (diplomate français, 1523-1596) proposa une amélioration du chiffre de Trithemius où chaque lettre t[i] du texte original t est décalée de k[i%len(k)] lettres si k est la clé de chiffrement. Les 26 lettres abc...yz sont numérotées de 0 (a) à 25 (z).

    Ainsi, pour le texte original « bonjour » et la clé « azerty », la première lettre « b » sera décalée de 0 (la première lettre de la clé : « a » vaut 0), la deuxième lettre « o » sera décalée de 25 (la deuxième lettre de la clé : « z » vaut 25), la troisième lettre « n » de 4 (la troisième lettre de la clé : « e » vaut 4) et ainsi de suite jusqu'à la septième et dernière lettre « r » qui sera finalement décalée de 0 (k[i%len(k)] = k[6%6] = k[0] : « a » vaut 0).

    Exemples :

    texte original clé traduction
    hal enibook lnt
    agnnuoyhnlqmpkyganz enibook etvoicilatraduction
    gblfrsfmtmosfo enibook codedevigenere
    apgkqzqpvgmmxuzvffqzyahjrpqrnrks enibook ecolenationaledingenieursdebrest
    bonjour azerty bnrahsr
    1. Définir la fonction vigenere(t,k,s) qui propose la traduction du texte original t selon la méthode de Vigenère en utilisant la clé k dans le sens s (+1 ou -1). On n'utilisera que les 26 lettres minuscules abcdef...xyz de l'alphabet.
    2. Vérifier en appliquant 2 fois de suite la fonction vigenere pour retrouver le texte original.
    rappels sur le chiffrement
    • Chiffre de César

      Le code de César est une méthode de cryptage où le texte crypté s'obtient en remplaçant chaque lettre du texte original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet. Dans un décalage à droite, on reprend au début de l'alphabet pour les dernières lettres de l'alphabet : ...x,y,z,a,b,c... Dans un décalage à gauche, on reprend à la fin de l'alphabet pour les premières lettres : ...c,b,a,z,y,x...

    • Chiffre de Trithemius

      Johannes Trithemius (abbé bénédictin allemand, 1462-1516) proposa une amélioration du code de César où chaque lettre du texte original est décalée de 1 par rapport à la lettre précédente.

      Ainsi, pour le texte original « bonjour », si la première lettre « b » est décalée de 3, la deuxième lettre « o » sera décalée de 4 (3+1), la troisième lettre « n » de 5 (4+1) et ainsi de suite jusqu’à la dernière lettre « r » qui sera finalement décalée de 9 (3+1+1+1+1+1+1).

    • Chiffre de Vigenère

      Blaise de Vigenère (diplomate français, 1523-1596) proposa une amélioration du chiffre de Trithemius où chaque lettre t[i] du texte original t est décalée de k[i%len(k)] lettres si k est la clé de chiffrement. Les 26 lettres abc...yz sont numérotées de 0 (a) à 25 (z).

      Ainsi, pour le texte original « bonjour » et la clé « azerty », la première lettre « b » sera décalée de 0 (la première lettre de la clé : « a » vaut 0), la deuxième lettre « o » sera décalée de 25 (la deuxième lettre de la clé : « z » vaut 25), la troisième lettre « n » de 4 (la troisième lettre de la clé : « e » vaut 4) et ainsi de suite jusqu’à la septième et dernière lettre « r » qui sera finalement décalée de 0 (k[i%len(k)] = k[6%6] = k[0] : « a » vaut 0).

    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-jeux-3.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Des vérifications par jeux de tests sont proposées dans l'énoncé:

      tests = [('hal','enibook',1,'lnt'),
               ('agnnuoyhnlqmpkyganz','enibook',1,'etvoicilatraduction'),
               ('gblfrsfmtmosfo','enibook',-1,'codedevigenere'),
               ('apgkqzqpvgmmxuzvffqzyahjrpqrnrks','enibook',1,'ecolenationaledingenieursdebrest'),
               ('','enibook',1,''),
               ('pareil','enibook',1,'tnzfwz')]
      for (e1,e2,e3,s1) in tests :
          r = vigenere(e1,e2,e3)
          verif1 = (r == s1)
          s = vigenere(vigenere(e1,e2,e3),e2,-e3)
          verif2 = (e1 == s)
          print e1,e2,e3,r,s,verif1,verif2
      

      Le double appel vigenere(vigenere(t,k,s),k,-s) redonne bien le texte original t.

  12. Ensembles « en compréhension »
    • Question
    • Solution

    En mathématiques un sous-ensemble d'un ensemble \(E\) peut être défini « en compréhension » par \(\{x \in E | P(x) \}\) : le sous-ensemble des éléments \(x\) de \(E\) vérifiant la propriété \(P\).

    Exemples :

    sous-ensemble définition en compréhension
    entiers impairs \(\{n \in \mathbb{N} | n \mod 2 = 1 \}\)
    entiers pairs \(\{n \in \mathbb{N} | n \mod 2 = 0 \}\)
    entiers carrés parfaits non nuls \(\{n \in \mathbb{N} | \exists y \in \mathbb{N}\ (y > 0 \mathrm{\ et\ } x = y^2)\}\)
    entiers relatifs dans \([-4,+4]\) \(\{n \in \mathbb{N} | -4 \leq n \leq +4 \}\)
    points \((x,y)\) du plan situés sur une droite de pente \(a\) et d'ordonnée à l'origine \(b\) \(\{(x,y) \in \mathbb{R}^2 | y = ax + b \}\)

    En utilisant les listes « en compréhension » de Python, définir les opérations ensemblistes suivantes :

    1. l'intersection de 2 ensembles p1 et p2:

      p = inter(p1,p2)
      
    2. la différence de 2 ensembles p1 et p2:

      p = diff(p1,p2)
      

      puis:

      p = diff(p2,p1)
      
    3. l'union de 2 ensembles p1 et p2:

      p = union(p1,p2)
      
    aide Python

    Certains langages comme Python proposent des listes « en compréhension », des listes dont les éléments sont définis par filtrage du contenu d'une autre liste. En Python, la syntaxe est la suivante:

    [f(x) for x in E if P(x)]
    

    Cette expression est une liste qui contient les éléments f(x) où x est un élément de E qui vérifient la propriété P:

    # E : liste des 10 premiers entiers
    >>> E = range(10)
    >>> E
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # liste inchangée (le test ``if P(x)`` est facultatif)
    >>> [x for x in E]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    # liste des carrés des éléments de E
    >>> [x*x for x in E]
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    
    # liste des nombres pairs dans E
    >>> [x for x in E if x%2 == 0]
    [0, 2, 4, 6, 8]
    
    # liste des carrés des nombres pairs dans E
    >>> [x*x for x in E if x%2 == 0]
    [0, 4, 16, 36, 64]
    
    # liste des nombres positifs multiples de 4 dans E
    >>> [x for x in E if x > 0 and x%4 == 0]
    [4, 8]
    
    Votre réponse :
    1. AAV4_APP: Résultat

      Utiliser l'interpréteur Python ci-dessous pour programmer l'algorithme demandé.

      python : essai.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Vérification

      Appliquer cette technique au résultat proposé.

      Si cette technique nécessite d'être implémentée en Python, le faire dans l'interpréteur Python ci-dessus (cf. Résultat), sinon développer la technique de vérification dans l'éditeur de texte ci-dessous.

      Zone de saisie de texte

      ClavierAction
      F1Afficher une aide technique
      F2Afficher une aide pédagogique
      Ctrl-ATout sélectionner
      Ctrl-CCopier la sélection dans le presse-papier
      Ctrl-VCopier le presse-papier dans la sélection
      Ctrl-XCouper la sélection et la copier dans le presse-papier
      Ctrl-ZAnnuler la modification
      Maj-Ctrl-ZRétablir la modification

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Valider la zone de saisie
      Initialiser la zone de saisie
      Charger le contenu d'un fichier dans la zone de saisie
      Sauvegarder le contenu de la zone de saisie dans un fichier
      Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. AAV4_APP: Répondre explicitement à la question posée

      Les fonctions demandées sont définies ci-dessous :

      python : appels-prop-1.py
      
          
      >>>
      Output
      
                      

      Interpréteur

      MenuAction
      Ré-initialiser les sorties
      Faire apparaître le menu d'aide
      Interpréter le programme

      Editeur

      MenuRaccouciAction
      Ctrl+N Initialiser l'éditeur
      Ctrl+O Charger le contenu d'un fichier dans l'éditeur
      Ctrl+S Sauvegarder le contenu de l'éditeur dans un fichier
      Ctrl+P Imprimer le contenu de l'éditeur
      Ctrl+Z Annuler la dernière modification
      Maj+Ctrl+Z Rétablir la modification précedente
      Ctrl+F Chercher une expression dans l'éditeur
      Maj+Ctrl+F Chercher et remplacer une expression par une autre
      F10 Ouvrir une documentation du langage

      RaccourciAction
      F1 Afficher cette aide
      Tab Indenter la sélection
      Maj+Tab Désindenter la sélection
      Ctrl+A Sélectionner le contenu de l'éditeur
      Ctrl+C Copier la sélection dans le presse-papier
      Ctrl+V Remplacer la sélection par le contenu du presse-papier
      Ctrl+X Supprimer la sélection et la copier dans le presse-papier
      Maj+Ctrl+R Chercher et remplacer une expression par une autre dans tout l'éditeur
    2. AAV4_APP: Choisir et appliquer une technique de vérification

      Une simple vérification par calcul « à la main » suffira ici:

      e1, e2 = [1,2,5,6,7], [0,2,3,4,6,8]
      print u'intersection     :',inter(e1,e2)
      print u'différence e1-e2 :',diff(e1,e2)
      print u'différence e2-e1 :',diff(e2,e1)
      print u'union            :',union(e1,e2)
      
 
Algorithmique - Cours : Appels - Exercices de programmation, 14 oct. 2024.