Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Algorithmique - Cours

  • Contexte 1: informatique
  • Contexte 2: pédagogie
  • Contexte 3: enibook
  • Objectif 1: affectation
  • Objectif 2: alternative
  • Objectif 3: itération
    • Définition
    • Méthode de l'invariant
    • Imbrications de boucles
    • Exercices
      • Itération - Exercices de compréhension
      • Itération - Exercices 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 - Exercices de compréhension

Information :

Liens utiles sur l'itération :

  • Cours
  • Exercices de programmation

  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
      
 
Algorithmique - Cours : Itération - Exercices de compréhension, 14 oct. 2024.