Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Algorithmique - Tests

  • Contexte 1: informatique
  • Objectif 1: affectation
  • Objectif 2: alternative
  • Objectif 3: itération
    • Test de compréhension
    • Test de programmation
  • Objectif 4: définition
  • Objectif 5: appels
  • 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

Itération

Objectif :

Ce chapitre propose de tester les acquis d'apprentissage concernant les instructions de base pour construire les algorithmes et plus particulièrement l'itération.

Deux types de tests sont proposés :

  • un test de compréhension d'une durée indicative de 30',
  • un test de programmation d'une durée indicative de 60'.

Test de compréhension

  1. 1/9 Comprendre
    1. Boucle « do...while »
      • Question
      • Solution

      Certains langages, comme Javascript ou C, définissent une boucle do ... while:

      instruction1;
      do  { blocDoWhile; } while condition;
      instruction3;
      

      L'instruction do...while est une instruction de contrôle du flux d'instructions. Elle crée une boucle qui exécute un bloc d'instructions blocDoWhile jusqu'à ce qu'une condition de test ne soit plus vérifiée. La condition est testée après que l'instruction blocDoWhile soit exécutée; l'instruction définie dans la boucle est donc exécutée au moins une fois.

      L'exemple ci-dessous est programmé en Javascript :

      javascript : iteration-dowhile.js
      
          
      >
      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

      Le langage Python ne dispose pas d'une telle structure do...while. Proposer en Python un algorithme équivalent à la structure do...while du programme Javascript précédent à l'aide d'une boucle while.

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.

        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
      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On choisit une méthode par analogie de comportement :

        • le bloc doWhile doit être exécuté au moins une fois;
        • la condition est une condition de continuité (not condition d'arrêt).

        Ainsi, pour reprendre l'exemple du code Javascript :

        • Etat initial:

          y = random.randint(0,9)
          n, somme = 0, y
          
        • blocDoWhile exécuté une fois avant la boucle while:

          n = n + 1
          somme = somme + random.randint(0,9)
          
        • Boucle while:

          while not somme >= 30 :
              n = n + 1
              somme = somme + random.randint(0,9)
          
        Remarque

        D'une manière générale, la boucle do...while:

        do bloc while condition;
        

        peut toujours s'écrire en Python avec une boucle while:

        bloc
        while condition :
            bloc
        
      2. AAV1_ITE: Répondre explicitement à la question posée

        Le code Python équivalent au code Javascript est présenté ci-dessous.

        python : iteration-dowhile.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. Boucle « repeat...until »
      • Question
      • Solution

      Certains langages, comme Pascal, définissent une boucle repeat...until:

      instruction1;
      repeat  { blocRepeat; } until condition;
      instruction3;
      

      L'instruction repeat...until est une instruction de contrôle du flux d'instructions. Elle crée une boucle qui exécute un bloc d'instructions blocRepeat jusqu'à ce qu'une condition de test soit vérifiée. La condition est testée après que l'instruction blocRepeat soit exécutée; l'instruction définie dans la boucle est donc exécutée au moins une fois.

      L'exemple ci-dessous est programmé en langage Pascal :

      (* exemple de boucle repeat...until *)
      
      PROGRAM repeatuntil;
      
      Var n, y, somme : Integer;
      
      BEGIN
          Randomize;
          n := 0;
          y := Random(10);
          somme := y;
          Repeat
              Inc(n,1); (* Inc comme incrémentation : n := n + 1 *)
              Inc(somme,Random(10));
          Until somme >= 30;
          WriteLn(y,' puis ',n,' passages : ',somme);
      END.
      

      Le langage Python ne dispose pas d'une telle structure repeat...until. Proposer en Python un algorithme équivalent à la structure repeat...until du programme Pascal précédent à l'aide d'une boucle while.

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.

        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
      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On choisit une méthode par analogie de comportement :

        • le blocRepeat doit être exécuté au moins une fois;
        • la condition est une condition d'arrêt.

        Ainsi, pour reprendre l'exemple du code Pascal :

        • Etat initial:

          y = random.randint(0,9)
          n, somme = 0, y
          
        • blocReapeat exécuté une fois avant la boucle while:

          n = n + 1
          somme = somme + random.randint(0,9)
          
        • Boucle while:

          while not somme >= 30 :
              n = n + 1
              somme = somme + random.randint(0,9)
          
        Remarque

        D'une manière générale, la boucle repeat...until:

        repeat bloc until condition;
        

        peut toujours s'écrire en Python avec une boucle while:

        bloc
        while not condition :
            bloc
        
      2. AAV1_ITE: Répondre explicitement à la question posée

        Le code Python équivalent au code Pascal est présenté ci-dessous.

        python : iteration-repeat.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
    3. Boucle « for...min to max »
      • Question
      • Solution

      Certains langages, comme Pascal, définissent une boucle for...min to max:

      instruction1;
      for variable := min to max do { blocFor; }
      instruction3;
      

      L'instruction for...min to max est une instruction de contrôle du flux d'instructions. Elle crée une boucle qui exécute max - min + 1 fois le bloc d'instructions blocFor (avec max >= min). Entre chaque passage, la variable est incrémentée de 1.

      L'exemple ci-dessous est programmé en langage Pascal :

      (* exemple de boucle for...to *)
      
      PROGRAM forto;
      
      Var n, y, somme : Integer;
      Var min, max : Integer;
      
      BEGIN
          Randomize;
          y := Random(10);
          somme := y;
          min := 0;
          max := 9;
          For n := min To max Do
              BEGIN
                  Inc(somme,Random(10)); (* Inc comme incrémenter : somme = somme + Random(10) *)
              END;
          WriteLn(y,' puis ',max-min+1,' passages : ',somme);
      END.
      

      Le langage Python ne dispose pas d'une telle structure for...min to max. Proposer en Python un algorithme équivalent à la structure for...min to max du programme Pascal précédent à l'aide d'une boucle while.

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.

        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
      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On choisit une méthode par analogie de comportement :

        • le blocFor doit être exécuté max - min + 1 fois;
        • la condition d'arrêt est n > max.

        Ainsi, pour reprendre l'exemple du code Pascal :

        • Etat initial:

          y = random.randint(0,9)
          n, somme = 0, y
          min, max = 0, 9
          
        • blocFor à exécuter max - min + 1 fois dans la boucle while:

          somme = somme + random.randint(0,9)
          
        • Boucle while:

          n = min
          while not n > max :
              somme = somme + random.randint(0,9)
              n = n + 1
          
        Remarque

        D'une manière générale, la boucle for...min to max:

        for var := min to max do bloc;
        

        peut toujours s'écrire en Python avec une boucle while:

        var = min
        while not var > max :
            bloc
            var = var + 1
        
      2. AAV1_ITE: Répondre explicitement à la question posée

        Le code Python équivalent au code Pascal est présenté ci-dessous.

        python : iteration-forto.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
    4. Boucle « for...in »
      • Question
      • Solution

      Un langage comme Python définit une boucle for...in pour parcourir les éléments d'une séquence:

      instruction1
      for element in sequence : blocFor
      instruction3
      

      L'instruction for...in est une instruction de contrôle du flux d'instructions. Elle crée une boucle qui parcourt un par un et dans l'ordre les éléments d'une séquence. Pour chaque élément de la séquence, elle exécute le blocFor.

      L'exemple ci-dessous est programmé en langage Python :

      python : iteration-forin.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

      Proposer en Python un algorithme équivalent à la structure for...in du programme Python précédent à l'aide d'une boucle while.

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.

        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
      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On choisit une méthode par analogie de comportement : une séquence est une suite ordonnée d'éléments, éventuellement vide, accessibles par leur rang dans la séquence. Par convention, le premier élément a le rang 0 (sequence[0]), le deuxième le rang 1 (sequence[1])... et le dernier le rang len(sequence)-1 (sequence[len(sequence)-1]).

        Ainsi, pour reprendre l'exemple de l'énoncé :

        • Etat initial:

          sequence = [random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9),random.randint(0,9)]
          
        • Boucle while:

          rang, somme = 0, 0
          while not rang >= len(sequence) :
              element = sequence[rang]
              somme = somme + element
          
        Remarque

        D'une manière générale, la boucle for...in en Python:

        for element in sequence : bloc
        

        peut toujours s'écrire avec une boucle while:

        rang = 0
        while not rang >= len(sequence) :
            element = sequence[rang]
            bloc
            rang = rang + 1
        
      2. AAV1_ITE: Répondre explicitement à la question posée

        Le code while équivalent au code for..in est présenté ci-dessous.

        python : iteration-forin-while.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
    5. Boucle « for »
      • Question
      • Solution

      Certains langages, comme Javascript ou C, définissent une boucle for très générale:

      instruction1;
      for (initialisation; condition; postbloc) { bloc; }
      instruction3;
      

      L'instruction for est une instruction de contrôle du flux d'instructions. Elle commence par évaluer l'expression d'initialisation puis elle évalue la condition. Si la condition est vérifiée, on « rentre » dans la boucle : le bloc d'instructions est exécuté puis l'expression postbloc est évaluée. On ré-évalue la condition et tant qu'elle est vérifiée on ré-exécute le bloc puis postbloc. On sort de la boucle dès que la condition n'est plus vérifiée.

      L'exemple ci-dessous est programmé en langage Javascript :

      javascript : iteration-for.js
      
          
      >
      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

      Proposer en Python un algorithme équivalent à la structure for du programme Javascript précédent à l'aide d'une boucle while.

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        Utiliser l'interpréteur Python ci-dessous pour répondre et vérifier.

        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
      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On choisit une méthode par analogie de comportement :

        • l'initialisation doit être exécutée avant d'entrer dans la boucle;
        • la condition est une condition de continuité (not condition d'arrêt);
        • l'instruction postbloc fait partie du corps de la boucle.

        Ainsi, pour reprendre l'exemple du code Javascript :

        • Etat initial:

          y = random.randint(0,9)
          
        • Boucle while:

          i, somme = 0, 0
          while i < y :
              somme = somme + i
              i = i + 1
          
        Remarque

        D'une manière générale, la boucle for:

        for (initialisation; condition; postbloc) { bloc; }
        

        peut toujours s'écrire avec une boucle while:

        initialisation
        while condition :
            bloc
            postbloc
        
      2. AAV1_ITE: Répondre explicitement à la question posée

        Le code Python équivalent au code Javascript est présenté ci-dessous.

        python : iteration-for.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
    6. Elévation à la puissance
      • Question
      • Solution

      Déterminer « à la main » la valeur des variables x, i et p après la séquence d'instructions suivante :

      1
      2
      3
      4
      n, x, i, p = 5, 4, 0, 1
      while i < n :
          p = p * x
          i = i + 1
      
      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        A la fin de l'algorithme, l'instruction print n,x,i,p affiche ?

      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'empathie numérique.

        On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction.

        line cond   n   x   i    p
           1    -   5   4   0    1
           2    1   5   4   0    1
           3    -   5   4   0    4
           4    -   5   4   1    4
           2    1   5   4   1    4
           3    -   5   4   1   16
           4    -   5   4   2   16
           2    1   5   4   2   16
           3    -   5   4   2   64
           4    -   5   4   3   64
           2    1   5   4   3   64
           3    -   5   4   3  256
           4    -   5   4   4  256
           2    1   5   4   4  256
           3    -   5   4   4 1024
           4    -   5   4   5 1024
           2    0   5   4   5 1024
        

        On constate que :

        • à la fin de chaque étape i, p == x**i;
        • au final : \(p = 1024 = 4^5 = x^n\) comme le suggère le titre de cet exercice.
      2. AAV1_ITE: Répondre explicitement à la question posée

        A la fin de l'algorithme, l'instruction print n,x,i,p affiche 5 4 5 1024:

        >>> print n,x,i,p
        5 4 5 1024
        
    7. Suite arithmétique
      • Question
      • Solution

      Déterminer « à la main » la valeur des variables n, a, r, k et u après la séquence d'instructions suivante :

      1
      2
      3
      4
      n, a, r, k, u = 5, 1, 2, 0, 1
      while k < n :
          k = k + 1
          u = u + a + k*r
      
      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        A la fin de l'algorithme, l'instruction print n,a,r,k,u affiche ?

      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'empathie numérique.

        On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:

        line cond   n   a   r   k   u
           1    -   5   1   2   0   1
           2    1   5   1   2   0   1
           3    -   5   1   2   1   1
           4    -   5   1   2   1   4
           2    1   5   1   2   1   4
           3    -   5   1   2   2   4
           4    -   5   1   2   2   9
           2    1   5   1   2   2   9
           3    -   5   1   2   3   9
           4    -   5   1   2   3  16
           2    1   5   1   2   3  16
           3    -   5   1   2   4  16
           4    -   5   1   2   4  25
           2    1   5   1   2   4  25
           3    -   5   1   2   5  25
           4    -   5   1   2   5  36
           2    0   5   1   2   5  36
        

        On constate que :

        • à la fin de chaque étape \(k\), \(\displaystyle u = \sum_{i = 0}^{k}(a + ir)\);

        • au final :

          \(\displaystyle u = 36 = \sum_{k = 0}^{5} (1 + 2k) = \sum_{k = 0}^{n} (a + rk) = (n+1)a + r\frac{n(n+1)}{2} = 6 + 30 = 36\).

          C'est la somme d'une suite arithmétique comme le suggère le titre de cet exercice.

      2. AAV1_ITE: Répondre explicitement à la question posée

        A la fin de l'algorithme, l'instruction print n,a,r,k,u affiche 5 1 2 5 36:

        >>> print n,a,r,k,u
        5 1 2 5 36
        
    8. Factorielle
      • Question
      • Solution

      Déterminer « à la main » la valeur des variables n, k et f après la séquence d'instructions suivante :

      1
      2
      3
      4
      n, k, f = 5, 0, 1
      while k < n :
          k = k + 1
          f = f * k
      
      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        A la fin de l'algorithme, l'instruction print n,k,f affiche ?

      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'empathie numérique.

        On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:

        line cond   n   k    f
           1    -   5   0    1
           2    1   5   0    1
           3    -   5   1    1
           4    -   5   1    1
           2    1   5   1    1
           3    -   5   2    1
           4    -   5   2    2
           2    1   5   2    2
           3    -   5   3    2
           4    -   5   3    6
           2    1   5   3    6
           3    -   5   4    6
           4    -   5   4   24
           2    1   5   4   24
           3    -   5   5   24
           4    -   5   5  120
           2    0   5   5  120
        

        On constate que :

        • à la fin de chaque étape \(k\) : \(f = k!\)
        • au final : \(f = 120 = 5! = n!\) comme le suggère le titre de cet exercice.
      2. AAV1_ITE: Répondre explicitement à la question posée

        A la fin de l'algorithme, l'instruction print n,k,f affiche 5 5 120:

        >>> print n,k,f
        5 5 120
        
    9. Racine carrée entière
      • Question
      • Solution

      Déterminer « à la main » la valeur des variables n et r après la séquence d'instructions suivante :

      1
      2
      3
      n, r = 351, 0
      while not n < (r+1)*(r+1) :
          r = r + 1
      
      Rappel

      La racine carrée entière \(r\) d'un entier \(n\) est telle que : \(\displaystyle \forall n,r \in \mathbb{N},\ r = \sqrt[\mathbb{N}]{n} \Leftrightarrow r^2 \leq n < (r+1)^2\).

      Votre réponse :
      1. AAV1_ITE: Méthode

        Application de la méthode

        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
      2. AAV1_ITE: Résultat

        A la fin de l'algorithme, l'instruction print n,r affiche ?

      Une solution possible :
      1. AAV1_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'empathie numérique.

        On dresse le tableau d'évolution des valeurs des variables et des conditions instruction après instruction:

        line cond   n   r
           1    - 351   0
           2    1 351   0
           3    - 351   1
           2    1 351   1
           3    - 351   2
           2    1 351   2
           3    - 351   3
           2    1 351   3
           3    - 351   4
           2    1 351   4
           3    - 351   5
           2    1 351   5
           3    - 351   6
           2    1 351   6
           3    - 351   7
           2    1 351   7
           3    - 351   8
           2    1 351   8
           3    - 351   9
           2    1 351   9
           3    - 351  10
           2    1 351  10
           3    - 351  11
           2    1 351  11
           3    - 351  12
           2    1 351  12
           3    - 351  13
           2    1 351  13
           3    - 351  14
           2    1 351  14
           3    - 351  15
           2    1 351  15
           3    - 351  16
           2    1 351  16
           3    - 351  17
           2    1 351  17
           3    - 351  18
           2    0 351  18
        

        On constate que \(r^2 = 18^2 = 324 \leq 351 = n < 361 = 19^2 = (r+1)^2\), donc \(r = 18 = \sqrt[\mathbb{N}]{351} = \sqrt[\mathbb{N}]{n}\) comme le suggère le titre de cet exercice.

      2. AAV1_ITE: Répondre explicitement à la question posée

        A la fin de l'algorithme, l'instruction print n,r affiche 351 18:

        >>> print n,r
        351 18
        

Test de programmation

  1. 1/15 Appliquer
    1. Décodeur logique
      • Question
      • Solution

      On considère le circuit logique ci-dessous où \(a\), \(b\) et \(c\) sont les entrées et \(s_0, s_1, \ldots, s_7\) les sorties.

      _images/decodeur.png

      Proposer un algorithme qui affiche la table de vérité du circuit à l'aide d'itérations conditionnelles.

      opérateurs booléens
      _images/alternative-booleens-1.png _images/alternative-booleens-2.png _images/alternative-booleens-3.png
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. opérateurs booléens (documentation Python)

        not a

        négation : \(\overline{a}\)

        a and b

        conjonction : \(a\cdot b\)

        a or b

        disjonction : \(a + b\)

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise une représentation analytique. En effet, lorsque un objet est représenté sous une forme graphique, il est préférable de le transformer en sa représentation analytique (lorsqu'elle existe) pour étudier cet objet à l'aide d'un programme informatique.

        Le circuit logique de l'énoncé a 3 entrées \(a\), \(b\) et \(c\) et 8 sorties \(s_0, s_1, \ldots, s_7\) telles que:

        # description du circuit
        s0 = not a and not b and not c
        s1 = not a and not b and c
        s2 = not a and b and not c
        s3 = not a and b and c
        s4 = a and not b and not c
        s5 = a and not b and c
        s6 = a and b and not c
        s7 = a and b and c
        

        Il faut 3 boucles imbriquées pour explorer les \(2^3 = 8\) combinaisons possibles en entrée:

        a = 0
        while not a > 1 :
            b = 0
            while not b > 1 :
                c = 0
                while not c > 1 :
                    # description du circuit
                    # ...
                    # affichage des résultats
                    c = c + 1
                b = b + 1
            a = a + 1
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui établit la table de vérité du circuit est présenté ci-dessous.

        python : iteration-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On établit par un calcul « à la main » la table de vérité` du circuit proposé et on vérifie bien que le code Python précédent donne le même résultat.

        On pourrait également utiliser le simulateur de circuits logiques ci-dessous pour établir la table de vérité du circuit.

        Circuit logique : iteration-decodeur.json

        Entrées/Sorties

        Portes 1/1

        Portes 2/1

        Portes 3/1

        Vue d'ensemble

        On constate que ce circuit réalise un décodage des entrées vers une seule sortie : pour chaque combinaison des entrées, une seule sortie est activée et jamais la même.

    2. Conversion décimal/binaire
      • Question
      • Solution

      Proposer un algorithme qui code un entier décimal \(n\) en base \(b = 2\). Le nombre binaire sera codé sous forme d'une chaîne de caractères composée de 0 et de 1.

      Exemples :

      décimal binaire
      2 "10"
      5 "101"
      13 "1101"
      23 "10111"
      128 "10000000"
      numération en base b

      Un entier \(n\) en base \(b\) est représenté par une suite de chiffres \((r_mr_{m-1}\ldots r_1r_0)_b\) où les \(r_i\) sont des chiffres de la base \(b\) (\(0\leq r_i < b\)). Ce nombre \(n\) a pour valeur :

      \[n = r_mb^m + r_{m-1}b^{m-1} + \ldots + r_1b^1 + r_0b^0 = \sum^{i=m}_{i = 0} r_ib^i\]

      L'algorithme de conversion en base \(b\) consiste à diviser successivement le nombre \(n\) par la base \(b\) (\(n = bq + r\)) tant que le quotient \(q\) n'est pas nul. L'ordre inverse des restes \(r_i\) des différentes divisions (du dernier au premier reste, écrits de gauche à droite) donne la représentation du nombre \(n\) en base \(b\).

      \[\begin{array}{lll} n &=& q_0b + r_0 = q_0b^1 + {r_0b^0}\\ n &=& (q_1b^1 + r_1)b^1 + r_0b^0 = q_1b^2 + {r_1b^1 + r_0b^0} \\ n &=& (q_2b^1 + r_2)b^2 + r_1b^1 + r_0b^0 = q_2b^3 + {r_2b^2 + r_1b^1 + r_0b^0}\\ n &=& \ldots\\ n &=& 0\cdot b^{m+1} + {r_mb^m + \ldots + r_2b^2 + r_1b^1 + r_0b^0} = \displaystyle \sum^{i=m}_{i = 0} r_ib^i\\ n &=& (r_mr_{m-1}\ldots r_1r_0)_b \end{array}\]
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. opérateurs arithmétiques (documentation Python)

        x/y

        quotient de la division entière si arguments entiers : \(x\div y\), division réelle sinon : \(x/y\).

        x%y

        reste de la division entière : \(x\mod y\).

        x**n

        élévation à la puissance : \(x^n\).

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va réaliser les divisions successives, l'ordre inverse des restes des différentes divisions (du dernier au premier reste, écrits de gauche à droite) donnant la représentation du nombre, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Codage binaire
        initialisation q, r = n/b, n%b ; code = str(r)
        invariant à chaque étape k : \(\displaystyle code = \sum_{i=0}^k r_i2^i\)
        condition d'arrêt q == 0
        progression insérer le nouveau reste dans le code avant de re-diviser le quotient par b
        boucle
        q, r = n/b, n%b
        code = str(r)
        while q != 0 :
            r = q%b
            code = str(r) + code
            q = q/b
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python de codage en base b est présenté ci-dessous.

        python : iteration-type-number.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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On propose un jeu de tests pour vérifier le codage obtenu. On utilise pour cela les 5 exemples de couples entrées-sorties de l'énoncé.

        Le programme Python retrouve bien les 5 exemples donnés dans l'énoncé.

    3. Dessin d'étoiles
      • Question
      • Solution

      Proposer un algorithme qui dessine la figure ci-dessous composée de l'« étoile » * (astérisque):

      **********
      ****  ****
      ***    ***
      **      **
      *        *
      
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. opérateurs de séquences (documentation Python)

        x in s

        True si x appartient à la séquence s, False sinon.

        x not in s

        False si x appartient à la séquence s, True sinon.

        s + t

        concaténation (mise bout à bout) de s et t.

        n*s

        concaténation de s avec elle-même, n fois.

        s[i]

        élément de rang i+1 dans la séquence s (le premier élément a pour rang 0).

        s[i:j]

        séquence formée des éléments de la séquence s des rangs i inclus à j exclu.

        len(s)

        nombre d'éléments (longueur) de la séquence s.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va dessiner les lignes successives, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Dessin d'étoiles
        initialisation
        n, blancs = 5, 0
        ligne = (n-blancs)*'*' + 2*blancs*' ' + (n-blancs)*'*'
        
        invariant à chaque étape ligne == (n-blancs)*'*' + 2*blancs*' ' + (n-blancs)*'*'
        condition d'arrêt blancs == n
        progression insérer un blanc de chaque côté
        boucle
        n, blancs = 5, 0
        ligne = (n-blancs)*'*' + 2*blancs*' ' + (n-blancs)*'*'
        while blancs < n :
            print ligne
            blancs = blancs + 1
            ligne = (n-blancs)*'*' + 2*blancs*' ' + (n-blancs)*'*'
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python de ce dessin d'étoiles est présenté ci-dessous.

        python : iteration-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de figures suffit ici : le programme Python redonne bien la figure de l'énoncé.

    4. Palindrome
      • Question
      • Solution

      Proposer un algorithme qui teste si un n-uplet est un palindrome.

      Exemples de n-uplets palindromes:

      (1,2,3,3,2,1)
      ('n','o','n')
      ('k','a','y','a','k')
      ([],[1],[2,3],[4,5,6],[2,3],[1],[])
      
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. opérateurs de séquences (documentation Python)

        x in s

        True si x appartient à la séquence s, False sinon.

        x not in s

        False si x appartient à la séquence s, True sinon.

        s + t

        concaténation (mise bout à bout) de s et t.

        n*s

        concaténation de s avec elle-même, n fois.

        s[i]

        élément de rang i+1 dans la séquence s (le premier élément a pour rang 0).

        s[i:j]

        séquence formée des éléments de la séquence s des rangs i inclus à j exclu.

        len(s)

        nombre d'éléments (longueur) de la séquence s.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va tester 2 à 2 les éléments du n-uplets, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Palindrome
        initialisation
        rang, palindrome = 0, True
        
        invariant à chaque étape k, p[k] représente le \(k^{\grave eme}\) élément de la liste p.
        condition d'arrêt rang == len(p)/2 or palindrome
        progression comparer p[rang] à p[len(p)-1-rang] et avancer d'un élément si ok, sinon arrêter.
        boucle
        rang, palindrome = 0, True
        while rang < len(p)/2 and palindrome :
            if p[rang] != p[len(p)-1-rang] :
                palindrome = False
            else :
                rang = rang + 1
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui teste les n-uplets palindromes est présenté ci-dessous.

        python : iteration-type-tuple.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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On utilise un jeu de tests composé des 4 exemples de l'énoncé et de quelques exemples qui ne sont pas des palindromes.

        Le programme Python donne des résultats corrects dans les 4 cas attendus ainsi que dans 3 cas qui ne sont pas des palindromes.

    5. Recherche d'un élément
      • Question
      • Solution

      Proposer un algorithme qui trouve le rang de la première occurrence d'un élément au sein d'une liste.

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. opérateurs de séquences (documentation Python)

        x in s

        True si x appartient à la séquence s, False sinon.

        x not in s

        False si x appartient à la séquence s, True sinon.

        s + t

        concaténation (mise bout à bout) de s et t.

        n*s

        concaténation de s avec elle-même, n fois.

        s[i]

        élément de rang i+1 dans la séquence s (le premier élément a pour rang 0).

        s[i:j]

        séquence formée des éléments de la séquence s des rangs i inclus à j exclu.

        len(s)

        nombre d'éléments (longueur) de la séquence s.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant

        dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va passer en revue les éléments de la liste un par un jusqu'à trouver l'occurrence recherchée, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Recherche d'un élément
        initialisation
        rang, found = 0, False
        
        invariant à chaque étape k, t[k] représente le \(k^{\grave eme}\) élément de la liste t.
        condition d'arrêt rang == len(t) or found
        progression comparer t[rang] à l'élément x recherché et avancer d'un élément si pas trouvé, sinon arrêter.
        boucle
        rang, found = 0, False
        while rang < len(t) and not found :
            if t[rang] == x :
                found = True
            else :
                rang = rang + 1
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python de recherche d'un élément est présenté ci-dessous.

        python : iteration-type-list.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
      3. AAV3_ITE: hoisir et appliquer une technique de vérification

        On utilise un jeu de tests pour vérifier le bon fonctionnement de cet algorithme de recherche.

        Au moins 3 cas sont à prévoir :

        • l'élément recherché n'est pas dans la liste;
        • l'élément recherché n'apparaît qu'une seule fois dans la liste;
        • l'élément recherché apparaît plusieurs fois dans la liste.

        Le programme Python donne des résultats corrects dans les 3 types de cas attendus :

        • Pas d'occurrence de x : 1 [7, 9, 4, 5, 0] 5 False

          found est à False.

        • Une seule occurrence de x : 3 [1, 3, 4, 1, 4] 1 True

          on a bien t[1] == 3 et found == True.

        • Plusieurs occurrences de x : 2 [7, 1, 2, 2, 0] 2 True

          la première occurrence de 2 est bien telle que t[2] == 2 et found == True.

    6. Spirales rectangulaires
      • Question
      • Solution

      Ecrire un algorithme qui trace une spirale rectangulaire de \(n\) côtés dont le côté initial est \(d_0\) et l'accroissement entre deux côtés successifs \(dx\).

      _images/iteration-logo-1.png
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. tortue Logo (documentation Python)

        import turtle

        module Python à importer pour manipuler la tortue Logo.

        t = turtle.Turtle()

        crée une tortue t.

        t.down()

        tracer la trajectoire de la tortue Logo.

        t.up()

        ne pas tracer la trajectoire de la tortue Logo.

        t.setheading(a)

        oriente la tortue t dans une direction qui fait l'angle a (en degrés) avec l'axe horizontal (sens trigonométrique).

        t.forward(d)

        fait avancer la tortue t d'une distance d dans la direction courante.

        t.backward(d)

        fait reculer la tortue t d'une distance d dans la direction courante.

        t.left(a)

        fait tourner sur la gauche (sens trigonométrique) la tortue t (sans avancer, ni reculer) d'un angle a par rapport à la direction courante.

        t.right(a)

        fait tourner sur la droite (sens horaire) la tortue t (sans avancer, ni reculer) d'un angle a par rapport à la direction courante.

        t.goto(x,y)

        fait aller la tortue au point de coordonnées (x,y) quelle que soit son orientation.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va effectuer le suivi de trajectoire d'une spirale rectangulaire, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Spirale rectangulaire
        initialisation
        i, d = 0, d0
        
        invariant à chaque étape i, \(d = d_0 + i\cdot dx\)
        condition d'arrêt i == n
        progression avancer de d et tourner à angle droit.
        boucle
        i, d = 0, d0
        while i < n :
            t.forward(d)
            t.left(90)
            d = d + dx
            i = i + 1
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui dessine une spirale rectangulaire est présenté ci-dessous.

        python : iteration-logo-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de figures suffit pour constater qu'on obtient effectivement des spirales rectangulaires conformes à l'exemple de l'énoncé.

    7. Polygone régulier
      • Question
      • Solution

      Ecrire un algorithme qui trace un polygone régulier de \(n\) côtés de longueur \(d\).

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. tortue Logo (documentation Python)

        import turtle

        module Python à importer pour manipuler la tortue Logo.

        t = turtle.Turtle()

        crée une tortue t.

        t.down()

        tracer la trajectoire de la tortue Logo.

        t.up()

        ne pas tracer la trajectoire de la tortue Logo.

        t.setheading(a)

        oriente la tortue t dans une direction qui fait l'angle a (en degrés) avec l'axe horizontal (sens trigonométrique).

        t.forward(d)

        fait avancer la tortue t d'une distance d dans la direction courante.

        t.backward(d)

        fait reculer la tortue t d'une distance d dans la direction courante.

        t.left(a)

        fait tourner sur la gauche (sens trigonométrique) la tortue t (sans avancer, ni reculer) d'un angle a par rapport à la direction courante.

        t.right(a)

        fait tourner sur la droite (sens horaire) la tortue t (sans avancer, ni reculer) d'un angle a par rapport à la direction courante.

        t.goto(x,y)

        fait aller la tortue au point de coordonnées (x,y) quelle que soit son orientation.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultat).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour concevoir la boucle qui va effectuer le suivi de trajectoire d'un polygone régulier, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Polygone régulier
        initialisation
        i = 0
        
        invariant à chaque étape i, i côtés du polygone ont été tracés.
        condition d'arrêt i == n
        progression avancer de d et tourner de \((360/n)\) degrés.
        boucle
        i = 0
        while i < n :
            t.forward(d)
            t.left(360./n)
            i = i + 1
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui dessine une spirale rectangulaire est présenté ci-dessous.

        python : iteration-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de figures suffit pour constater qu'on obtient effectivement des polygones réguliers.

    8. Distribuer les cartes
      • Question
      • Solution

      Distribuer aléatoirement un jeu de 32 cartes à tour de rôle entre 4 joueurs.

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. nombres aléatoires (documentation Python)

        import random

        module Python à importer pour manipuler des nombres aléatoires.

        random.random()

        retourne un nombre réel aléatoirement compris entre 0 inclus et 1 exclu.

        random.randint(min,max)

        retourne un nombre entier aléatoirement compris entre min et max inclus.

      3. listes (documentation Python)

        s[i] = x

        l'élément de rang i de la liste s est remplacé par x.

        del s[i]

        l'élément de rang i de la liste s est supprimé; la longueur de la liste diminue d'une unité.

        s.append(x)

        x est ajouté à la fin de la liste s; la longueur de la liste augmente d'une unité.

        s.insert(i, x)

        x est inséré au rang i dans la liste s; la longueur de la liste augmente d'une unité.

        range(start=0, stop, step=1)

        génère la liste des entiers start inclus (0 par défaut) à stop exclu par pas de step (1 par défaut).

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour tirer au sort une carte et la distribuer au bon joueur en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Les « mains » des joueurs pourront être représentées par des listes de cartes.

        Soient :

        • jeu = range(1,33) le jeu de cartes;

        • j1, j2, j3, j4 = [], [], [], [] les « mains » respectives des 4 joueurs, initialement vides;

        • tour = [j1,j2,j3,j4] le tour de table.

        • Méthode de l'invariant Distribuer les cartes
          initialisation
          n, joueur = 0, tour[0]
          
          invariant à chaque étape n, la carte enlevée du jeu est celle donnée au joueur courant.
          condition d'arrêt jeu == [] (il n'y a plus de cartes à distribuer)
          progression tirer une carte du jeu; donner la carte au joueur courant et passer au joueur suivant.
          boucle
          n, joueur = 0, tour[0]
          while jeu != [] :
              # tirer une carte
              rang = random.randint(0,len(jeu)-1)
              carte = jeu[rang]
              # donner la carte au joueur
              joueur.append(carte)
              # supprimer la carte du jeu
              del jeu[rang]
              # passer au joueur suivant
              n = n + 1
              joueur = tour[n%4]
          
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui distribue les cartes est présenté ci-dessous.

        python : iteration-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de valeurs suffit : chaque joueur a bien 8 cartes, toutes différentes les unes des autres et différentes de celles des autres joueurs.

    9. Classer par couleurs
      • Question
      • Solution

      On ne s'intéresse ici qu'à la couleur d'une carte (pique=0, cœur=1, carreau=2, trèfle=3), pas à sa valeur (1, 2, 3, ..., 10, V, D, R).

      On considère une « main » de 7 cartes distribuées aléatoirement. Une main sera représentée par une liste de couleurs.

      Exemples de mains:

      [2, 0, 3, 2, 1, 2, 0]
      [0, 3, 1, 3, 1, 1, 0]
      [2, 1, 0, 2, 3, 3, 2]
      [2, 2, 3, 2, 2, 1, 3]
      

      Ecrire un algorithme qui classe les cartes d'une « main » par couleurs : tous les piques en premier, tous les cœurs en deuxième, puis les carreaux et enfin les trèfles.

      Exemples d'ordonnancements:

      avant : [2, 0, 3, 2, 1, 2, 0]
      après : [0, 0, 1, 2, 2, 2, 3]
      
      avant : [0, 3, 1, 3, 1, 1, 0]
      après : [0, 0, 1, 1, 1, 3, 3]
      
      avant : [3, 3, 0, 3, 0, 1, 0]
      après : [0, 0, 0, 1, 3, 3, 3]
      
      avant : [1, 1, 1, 1, 1, 1, 1]
      après : [1, 1, 1, 1, 1, 1, 1]
      
      avant : [3, 3, 2, 2, 2, 1, 0]
      après : [0, 1, 2, 2, 2, 3, 3]
      
      avant : [1, 2, 2, 2, 2, 3, 3]
      après : [1, 2, 2, 2, 2, 3, 3]
      
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. nombres aléatoires (documentation Python)

        import random

        module Python à importer pour manipuler des nombres aléatoires.

        random.random()

        retourne un nombre réel aléatoirement compris entre 0 inclus et 1 exclu.

        random.randint(min,max)

        retourne un nombre entier aléatoirement compris entre min et max inclus.

        random.choice(s)

        retourne un élément de la séquence s (s non vide) choisi aléatoirement.

      3. listes (documentation Python)

        s[i] = x

        l'élément de rang i de la liste s est remplacé par x.

        del s[i]

        l'élément de rang i de la liste s est supprimé; la longueur de la liste diminue d'une unité.

        s.append(x)

        x est ajouté à la fin de la liste s; la longueur de la liste augmente d'une unité.

        s.insert(i, x)

        x est inséré au rang i dans la liste s; la longueur de la liste augmente d'une unité.

        range(start=0, stop, step=1)

        génère la liste des entiers start inclus (0 par défaut) à stop exclu par pas de step (1 par défaut).

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour classer les cartes en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        On s’intéresse à la carte courante de la main, dont on teste la couleur, et selon le résultat on procède à des échanges, de sorte qu'on ait à chaque étape à gauche une zone de piques, puis une zone de cœurs, puis une zone de carreaux, puis une zone inconnue et enfin, à droite une zone de trèfles.

        _images/iteration-jeux-3.png

        On peut utiliser une variable \(N_{pique}\), indice de la première carte après la zone « pique » connue; une variable \(N_{coeur}\), indice de la première carte après la zone « coeur » connue; une variable \(N_{carreau}\), indice de la première carte après la zone « carreau » connue; et une variable \(N_{trefle}\), indice de la première carte avant la zone « trèfle » connue.

        Soient :

        • pique,coeur,carreau,trefle = 0,1,2,3 les couleurs du jeu;

        • couleurs = [pique,coeur,carreau,trefle] la liste des couleurs;

        • main = [random.choice(couleurs),...,random.choice(couleurs)] la « main » à ordonner.

        • Méthode de l'invariant Classer par couleurs
          initialisation
          npique,ncoeur,ncarreau,ntrefle = 0,0,0,len(main)-1
          
          invariant à chaque étape, les cartes à gauche de l'indice ncarreau sont classées par couleurs dans l'ordre pique, cœeur, carreau; les cartes à droite de ntrefle sont des trèfles.
          condition d'arrêt ncarreau > ntrefle
          progression selon la couleur de main[ncarreau], échanger les cartes concernées et faire évoluer les indices npique, ncoeur, ncarreau et ntrefle en conséquence.
          boucle
          npique,ncoeur,ncarreau,ntrefle = 0,0,0,len(main)-1
          while ncarreau <= ntrefle :
              if main[ncarreau] == carreau :
                  ncarreau = ncarreau + 1
              elif main[ncarreau] == coeur :
                  main[ncarreau], main[ncoeur] = main[ncoeur], main[ncarreau]
                  ncoeur = ncoeur + 1
                  ncarreau = ncarreau + 1
              elif main[ncarreau] == pique :
                  main[ncarreau], main[npique] = main[npique], main[ncarreau]
                  npique = npique + 1
                  if npique > ncoeur : ncoeur = ncoeur + 1
                  if ncoeur > ncarreau : ncarreau = ncarreau + 1
              else :
                  main[ncarreau], main[ntrefle] = main[ntrefle], main[ncarreau]
                  ntrefle = ntrefle - 1
          
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui classe les cartes par couleurs est présenté ci-dessous.

        python : iteration-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On utilise un jeu de tests pour vérifier le bon fonctionnement de cet algorithme de classement sur différents types de « main » : 1 seule couleur, plusieurs couleurs non classées, plusieurs couleurs déjà classées, plusieurs couleurs classées en ordre inverse...

        Les 6 exemples proposés dans l'énoncé sont bien vérifiés.

    10. 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

      Ecrire un algorithme qui propose la traduction du texte original lorsqu'on connaît le décalage. On n'utilisera que les 26 lettres minuscules abcdef...xyz de l'alphabet.

      Exemples :

      texte original décalage traduction
      hal 1 ibm
      kzbuoiorgzxgjaizout -6 etvoicilatraduction
      nzopopufwpdnpdlc -11 codedejulescesar
      ljvsluhapvuhslkpunluplbyzkliylza 19 ecolenationaledingenieursdebrest
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. codage des caractères (documentation Python)

        chr(n)

        retourne le caractère correspondant au code ASCII n (\(n \in [0,255]\)).

        ord(c)

        retourne le code ASCII du caractère c.

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour décoder les caractères du texte crypté, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Soient :

        • debut, fin = ord('a'), ord('z') les codes ASCII de a et de z;

        • texte le texte crypté;

        • decalage le décalage utilisé pour crypter le texte.

        • Méthode de l'invariant Code de César
          initialisation
          i, traduction = 0, ""
          
          invariant à chaque étape i, traduction représente la chaîne des i premiers caractères décodés.
          condition d'arrêt i == len(texte)
          progression décoder le caractère courant c et ajouter le caractère code obtenu à la fin de la chaîne traduction recherchée.
          boucle
          i, traduction = 0, ""
          while i < len(texte) :
              c = texte[i]
              code = (ord(c)-debut + decalage)%(fin-debut+1) + debut
              traduction = traduction + chr(code)
              i = i + 1
          
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui décrypte un texte est présenté ci-dessous.

        python : iteration-jeux-4.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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On utilise un jeu de tests pour vérifier le bon fonctionnement de cet algorithme de cryptage : les 5 exemples proposés dans l'énoncé sont bien retrouvés.

    11. Calcul de pi (somme)
      • Question
      • Solution

      Ecrire un algorithme qui calcule \(\pi\) à l'ordre \(n\) selon l'approximation :

      \[\frac{\pi}{4} = 1 - \frac{1}{3} + \frac{1}{5} - \cdots + (-1)^n\frac{1}{2n+1} = \sum_{k=0}^n (-1)^k\frac{1}{2k+1}\]
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour calculer la somme \(\displaystyle\sum_{k=0}^n (-1)^k\frac{1}{2k+1}\), en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Calcul de pi
        initialisation
        k, signe, somme = 0, 1.0, 1.0
        
        invariant à chaque étape k, somme représente la somme \(\displaystyle\sum_{i=0}^k (-1)^i\frac{1}{2i+1}\).
        condition d'arrêt k == n
        progression ajouter à somme le terme suivant \(\displaystyle (-1)^k\frac{1}{2k+1}\).
        boucle
        k, signe, somme = 0, 1.0, 1.0
        while k < n :
            k = k + 1
            signe = - signe
            somme = somme + signe/(2*k + 1)
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui calcule \(\pi\) est présenté ci-dessous.

        python : iteration-elem-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de valeurs avec la valeur bien connue de \(\pi\) (math.pi : 3.141592653589793) suffit : le programme Python retrouve bien la valeur de \(\pi\).

    12. Calcul de pi (produit)
      • Question
      • Solution

      Ecrire un algorithme qui calcule \(\pi\) à l'ordre \(n\) selon la formule :

      \[\pi = 2\cdot \frac{4}{3}\cdot\frac{16}{15}\cdot\frac{36}{35}\cdot\frac{64}{63}\cdots = 2\prod_{k=1}^n\frac{4k^2}{4k^2 - 1}\]
      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour calculer le produit \(\displaystyle\prod_{k=1}^n\frac{4k^2}{4k^2 - 1}\), en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Calcul de pi
        initialisation
        k, produit = 1, 4./3.
        
        invariant à chaque étape k, produit représente le produit \(\displaystyle\prod_{i=1}^k\frac{4i^2}{4i^2 - 1}\).
        condition d'arrêt k == n
        progression multiplier produit par le terme \(\displaystyle\frac{4k^2}{4k^2 - 1}\).
        boucle
        k, produit = 1, 4./3.
        while k < n :
            k = k + 1
            u = 4*k*k
            produit = produit*u/(u-1)
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui calcule \(\pi\) est présenté ci-dessous.

        python : iteration-elem-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de valeurs avec la valeur bien connue de \(\pi\) (math.pi : 3.141592653589793) suffit : le programme Python retrouve bien la valeur de \(\pi\).

    13. Calcul de pi (rectangles)
      • Question
      • Solution

      On se propose de calculer \(\pi\) selon la méthode des rectangles.

      Selon cette méthode, on calcule \(\pi\) à partir de l'expression de la surface \(S\) d'un cercle de rayon unité. On approche la surface du quart de cercle par \(n\) rectangles d'aire \(A_i = y_i/n\).

      _images/iteration-elem-3.png

      Ecrire un algorithme qui calcule \(\pi\) selon la méthode des rectangles à l'ordre \(n\).

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      2. Module math (documentation Python)

        math.sqrt(x)

        retourne la racine carrée de x : \(\sqrt{x}\).

      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour calculer la somme \(\displaystyle\sum_{k=0}^n \sqrt{1-\frac{k^2}{n^2}}\), en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Méthode de l'invariant Calcul de pi
        initialisation
        k, somme = 0, 1.0
        
        invariant à chaque étape k, somme représente la somme \(\displaystyle\sum_{i=0}^k \sqrt{1-\frac{i^2}{n^2}}\).
        condition d'arrêt k == n
        progression ajouter à pi le terme \(\displaystyle\sqrt{1-\frac{k^2}{n^2}}\).
        boucle
        k, somme = 0, 1.0
        while k < n :
            k = k + 1
            somme = somme + math.sqrt(1 - (1.*k*k)/(n*n))
        
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui calcule \(\pi\) est présenté ci-dessous.

        python : iteration-elem-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de valeurs avec la valeur bien connue de \(\pi\) (math.pi : 3.141592653589793) suffit : le programme Python retrouve bien la valeur de \(\pi\).

    14. Intégration numérique
      • Question
      • Solution

      Soit \(f(x)\) une fonction continue de \(R \rightarrow R\) à intégrer sur \([a,b]\). On supposera que \(f\) à toutes les bonnes propriétés mathématiques pour être intégrable sur l'intervalle considéré.

      On cherche à calculer son intégrale \(\displaystyle I = \int_a^b f(x)dx\) qui représente classiquement l'aire comprise entre la courbe représentative de \(f\) et les droites d'équations \(x=a\), \(x=b\) et \(y=0\). Les principales méthodes d'intégration numérique consistent essentiellement à trouver une bonne approximation de cette aire.

      Dans la méthode des rectangles, on subdivise l'intervalle d'intégration de longueur \(b-a\) en \(n\) parties égales de longueur \(\displaystyle\Delta x = \frac{b-a}{n}\).

      _images/iteration-prop-3.png

      Soient \(x_1\), \(x_2\), ..., \(x_n\) les points milieux de ces \(n\) intervalles. Les \(n\) rectangles formés avec les ordonnées correspondantes ont pour surface \(f(x_1)\Delta x\), \(f(x_2)\Delta x\), ..., \(f(x_n)\Delta x\). L'aire sous la courbe est alors assimilée à la somme des aires de ces rectangles, soit :

      \(\displaystyle I = \int_a^b f(x)dx \approx \left(f(x_1)+f(x_2)+\cdots+f(x_n)\right)\Delta x\)

      C'est la formule dite des rectangles qui repose sur une approximation par une fonction en escalier.

      Ecrire un algorithme qui calcule l'intégrale de \(\cos(x)\) sur \(\displaystyle \left[0,\frac{\pi}{2}\right]\) à l'ordre \(n\) par la méthode des rectangles.

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour le calcul de la somme des rectangles, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Soient :

        • f = math.cos la fonction à intégrer;

        • a, b = 0., math.pi/2 les bornes de l'intervalle d'intégration;

        • n le nombre de rectangles;

        • dx = (b - a)/n la largeur de chaque rectangle.

        • Méthode de l'invariant Intégration numérique
          initialisation
          k, x = 1, a + dx/2
          somme = f(x)*dx
          
          invariant à chaque étape k, \(\displaystyle somme = \sum_{i = 0}^{k}f(x_i)\Delta x\)
          condition d'arrêt k == n
          progression calculer l'aire du nouveau rectangle \(f(x)\Delta x\) et l'ajouter à la somme en cours.
          boucle
          k, x = 1, a + dx/2
          somme = f(x)*dx
          while k < n :
              k = k + 1
              x = x + dx
              aire = f(x) * dx
              somme = somme + aire
          
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui calcule l'intégrale est présenté ci-dessous.

        python : iteration-prop-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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        On effectue le calcul analytique direct pour comparer avec la valeur obtenue par programme : on retrouve bien le résultat mathématique selon lequel \(\displaystyle\int_0^{\frac{\pi}{2}} \cos(x) dx = \left[\sin(x)\right]_0^{\frac{\pi}{2}} = \sin(\frac{\pi}{2}) - \sin(0) = 1 - 0 = 1\).

    15. Zéro d'une fonction
      • Question
      • Solution

      On recherche le zéro d'une fonction \(f\) continue sur un intervalle \([a,b]\) telle que \(f(a).f(b) < 0\); il existe donc une racine de \(f\) dans \(]a,b[\) que l'on supposera unique.

      _images/iteration-prop-4.png

      Les principales méthodes de recherche du zéro d'une fonction reposent sur une méthode par dichotomie. On sépare l'espace de recherche de la solution (ici l'intervalle \([a,b]\)) en 2 sous-espaces disjoints et, si on dispose d'un critère pour déterminer le sous-espace qui contient la solution recherchée (ici la condition \(f(a).f(b) < 0\)), on réitère la méthode sur le sous-espace candidat. A chaque étape, l'espace de recherche est ainsi divisé en 2 sous-espaces plus petits. Lorsque le sous-espace restant est considéré comme suffisamment petit, on estime avoir trouvé la solution (ici le zéro de la fonction).

      Ici, notre critère de division de l'intervalle de recherche \([a,b]\) sera de le partager en deux par son milieu. Ainsi, on pose \(x_1 = a\), \(x_2 = b\) et \(x = (x_1+x_2)/2\) le milieu de \([x_1,x_2]\). Si \(f(x_1).f(x) < 0\), la racine est dans \(]x_1,x[\) et on pose \(x_2 = x\); sinon la racine est dans \(]x,x_2[\) et on pose \(x_1 = x\). Puis on réitère le procédé, la longueur de l'intervalle ayant été divisée par deux. Lorsque \(x_1\) et \(x_2\) seront suffisamment proches, on décidera que la racine est \(x\).

      Ecrire un algorithme qui détermine le zéro de \(\cos(x)\) dans \([1,2]\) selon cette méthode par dichotomie.

      aide Python
      1. itération conditionnelle (documentation Python)

        while condition :
            blocWhile
        
      Votre réponse :
      1. AAV2_ITE: Méthode

        Définir les 4 caractéristiques de la méthode de l'invariant dans le cas particulier de l'énoncé.

        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
      2. AAV5_ITE: 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
      3. AAV3_ITE: Vérification

        Appliquer cette technique au résultat proposé.

        Si la technique proposée nécessite Python, on la mettra en œuvre dans l'interpréteur ci-dessus (cf. Résultats).

        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. AAV2_ITE: Choisir et appliquer une méthode générique

        On utilise la méthode de l'invariant pour appliquer la méthode par dichotomie, en précisant les 4 caractéristiques de la méthode : initialisation, invariant, condition d'arrêt, progression.

        Soient :

        • f = math.cos la fonction concernée;

        • a, b les bornes de l'intervalle considéré;

        • s le seuil d'arrêt des calculs;

        • Méthode de l'invariant Zéro d'une fonction
          initialisation
          k, x1, x2 = 0, a, b
          x = (x1 + x2)/2
          
          invariant à chaque étape k, \(x\) est le milieu de l'intervalle \([x_1,x_2]\).
          condition d'arrêt \(|x_2 - x_1| < s\)
          progression déterminer le sous-intervalle \([x_1,x]\) ou \([x,x_2]\) où se trouve le zéro puis calculer le nouveau milieu \(x\).
          boucle
          k, x1, x2 = 0, a, b
          x = (x1 + x2)/2
          while math.fabs(x2 - x1) >= s :
              if f(x1)*f(x) < 0 :
                  x2 = x
              else :
                  x1 = x
              x = (x1 + x2)/2
          
      2. AAV5_ITE: Répondre explicitement à la question posée

        Le code Python qui calcule l'intégrale est présenté ci-dessous.

        python : iteration-prop-4.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
      3. AAV3_ITE: Choisir et appliquer une technique de vérification

        Une simple comparaison de valeurs avec la valeur facilement calculable du zéro de \(\cos(x)\) dans \([1,2]\) suffit : on retrouve bien que \(x = \pi/2 \approx 1.57\) est le zéro de \(\cos(x)\) dans l'intervalle \([1,2]\).

 
Algorithmique - Tests : Itération, 14 oct. 2024.