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
    • Variable
    • Définition
    • Séquences d'affectations
    • Exercices
      • Affectation - Exercices de compréhension
      • Affectation - Exercices de programmation
  • Objectif 2: alternative
  • Objectif 3: itération
  • 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

Affectation - Exercices de compréhension

Information :

Liens utiles sur l'affectation :

  • Cours
  • Exercices de programmation

  1. Division entière
    • Question
    • Solution

    Déterminer « à la main » les valeurs des variables a, b, q et r après la séquence d'affectations suivante :

    a = 23
    b = 5
    q = 0
    r = a
    r = r - b
    q = q + 1
    r = r - b
    q = q + 1
    r = r - b
    q = q + 1
    r = r - b
    q = q + 1
    
    opérateurs arithmétiques
    a+b

    somme : \(a+b\)

    a-b

    différence : \(a-b\)

    a*b

    produit : \(a*b\)

    a/b

    division : \(a/b\)

    Remarque : division entière si a et b sont entiers, le résultat est alors le quotient de la division entière.

    a%b

    reste de la division entière : \(a\%b = a \mod b\)

    x**n

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

    Votre réponse :
    1. AAV1_AFF: 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_AFF: Résultat

      A la fin de l'algorithme, l'instruction print a, b, q, r affiche ?

    Une solution possible :
    AAV1_AFF: Méthode

    On dresse, instruction après instruction, le tableau d'évolution des valeurs de toutes les variables qui interviennent dans l'algorithme.

    inst   a   b   q   r
       1  23   ?   ?   ?
       2  23   5   ?   ?
       3  23   5   0   ?
       4  23   5   0  23
       5  23   5   0  18
       6  23   5   1  18
       7  23   5   1  13
       8  23   5   2  13
       9  23   5   2   8
      10  23   5   3   8
      11  23   5   3   3
      12  23   5   4   3
    
    AAV1_AFF: Résultat

    A la fin de l'algorithme, les valeurs des variables a, b, q et r sont respectivement 23, 5, 4 et 3.

    >>> print a, b, q, r
    23 5 4 3
    

    Remarque : a = b * q + r

  2. Plus grand commun diviseur
    • Question
    • Solution

    Déterminer « à la main » les valeurs des variables a, b et r après la séquence d'affectations suivante:

    a = 63
    b = 270
    r = a % b # reste de la division de a par b
    a = b
    b = r
    r = a % b
    a = b
    b = r
    r = a % b
    a = b
    b = r
    r = a % b
    a = b
    b = r
    
    opérateurs arithmétiques
    a+b

    somme : \(a+b\)

    a-b

    différence : \(a-b\)

    a*b

    produit : \(a*b\)

    a/b

    division : \(a/b\)

    Remarque : division entière si a et b sont entiers, le résultat est alors le quotient de la division entière.

    a%b

    reste de la division entière : \(a\%b = a \mod b\)

    x**n

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

    Votre réponse :
    1. AAV1_AFF: 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_AFF: Résultat

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

    Une solution possible :
    AAV1_AFF: Méthode

    On dresse, instruction après instruction, le tableau d'évolution des valeurs de toutes les variables qui interviennent dans l'algorithme.

    inst   a   b   r
       1  63   ?   ?
       2  63 270   ?
       3  63 270  63
       4 270 270  63
       5 270  63  63
       6 270  63  18
       7  63  63  18
       8  63  18  18
       9  63  18   9
      10  18  18   9
      11  18   9   9
      12  18   9   0
      13   9   9   0
      14   9   0   0
    
    AAV1_AFF: Résultat

    A la fin de l'algorithme, les valeurs des variables a, b et r sont respectivement 9, 0 et 0.

    >>> print a, b, r
    9 0 0
    

    Remarque : 9 = pgcd(63, 270)

  3. Nombres de Fibonacci
    • Question
    • Solution

    Déterminer « à la main » les valeurs des variables n, f1, f2 et f après la séquence d'affectations suivante:

    n = 3
    f1 = 2
    f2 = 1
    f = f1 + f2
    n = n + 1
    f2 = f1
    f1 = f
    f = f1 + f2
    n = n + 1
    f2 = f1
    f1 = f
    f = f1 + f2
    n = n + 1
    f2 = f1
    f1 = f
    f = f1 + f2
    
    opérateurs arithmétiques
    a+b

    somme : \(a+b\)

    a-b

    différence : \(a-b\)

    a*b

    produit : \(a*b\)

    a/b

    division : \(a/b\)

    Remarque : division entière si a et b sont entiers, le résultat est alors le quotient de la division entière.

    a%b

    reste de la division entière : \(a\%b = a \mod b\)

    x**n

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

    Votre réponse :
    1. AAV1_AFF: 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_AFF: Résultat

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

    Une solution possible :
    AAV1_AFF: Méthode

    On dresse, instruction après instruction, le tableau d'évolution des valeurs de toutes les variables qui interviennent dans l'algorithme.

    inst   n  f1  f2   f
       1   3   ?   ?   ?
       2   3   2   ?   ?
       3   3   2   1   ?
       4   3   2   1   3
       5   4   2   1   3
       6   4   2   2   3
       7   4   3   2   3
       8   4   3   2   5
       9   5   3   2   5
      10   5   3   3   5
      11   5   5   3   5
      12   5   5   3   8
      13   6   5   3   8
      14   6   5   5   8
      15   6   8   5   8
      16   6   8   5  13
    
    AAV1_AFF: Résultat

    A la fin de l'algorithme, les valeurs des variables n, f1, f2 et f sont respectivement

    >>> print n, f1, f2 ,f
    6 8 5 13
    
    Remarque :

    La valeur finale de f (13) est le nombre de Fibonacci à l'ordre n (6) :

    \(\displaystyle\left|\begin{array}{llll} f_0 &=& 1 & \\ f_1 &=& 1 & \\ f_n &=& f_{n-1} + f_{n-2} & \forall n \in \mathbb{N}, n > 1 \end{array}\right.\Rightarrow\left|\begin{array}{llll} f_2 &=& 1+1 &=& 2\\ f_3 &=& 2+1 &=& 3\\ f_4 &=& 3+2 &=& 5\\ f_5 &=& 5+3 &=& 8\\ f_6 &=& 8+5 &=& 13\\ f_7 &=& 13+8 &=& 21\\ f_8 &=& 21+13 &=& 34\\ f_9 &=& 34+21 &=& 55\\ f_{10} &=& 55+34 &=& 89\\ \ldots \end{array}\right.\)

  4. Elévation à la puissance
    • Question
    • Solution

    Déterminer « à la main » les valeurs des variables x, n et p après la séquence d'affectations suivante :

    x = 3
    n = 0
    p = 1
    n = n + 1
    p = p * x
    n = n + 1
    p = p * x
    n = n + 1
    p = p * x
    n = n + 1
    p = p * x
    
    opérateurs arithmétiques
    a+b

    somme : \(a+b\)

    a-b

    différence : \(a-b\)

    a*b

    produit : \(a*b\)

    a/b

    division : \(a/b\)

    Remarque : division entière si a et b sont entiers, le résultat est alors le quotient de la division entière.

    a%b

    reste de la division entière : \(a\%b = a \mod b\)

    x**n

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

    Votre réponse :
    1. AAV1_AFF: 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_AFF: Résultat

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

    Une solution possible :
    AAV1_AFF: Méthode

    On dresse, instruction après instruction, le tableau d'évolution des valeurs de toutes les variables qui interviennent dans l'algorithme.

    inst   x   n    p
       1   3   ?    ?
       2   3   0    ?
       3   3   0    1
       4   3   1    1
       5   3   1    3
       6   3   2    3
       7   3   2    9
       8   3   3    9
       9   3   3   27
      10   3   4   27
      11   3   4   81
    
    AAV1_AFF: Résultat

    A la fin de l'algorithme, les valeurs des variables x, n et p sont respectivement

    >>> print x, n, p
    3 4 81
    
    Remarque :

    La valeur finale de p (81) correspond à la valeur de x (3) élevée à la puissance n (4) : \(p = x ^ n\ (81 = 3 ^ 4)\).

  5. Décalage à gauche
    • Question
    • Solution

    Remettre les 5 instructions ci-dessous dans le bon ordre pour obtenir un algorithme qui opère un décalage à gauche des valeurs des 3 variables u, v, w.

    Exemple de décalage à gauche:

    Avant décalage :

    u, v, w = 1, 2, 3

    Après décalage à gauche :

    u, v, w = 2, 3, 1

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

      AAV1_AFF: Résultat

      1. Ordonner les instructions

      1. u, v, w = 1, 2, 3
      2. tmp = u
      3. u = v
      4. v = w
      5. w = tmp
      /0/:Commencer par initialiser les variables.
      /1/:Sauvegarder une des valeurs initiales dans une variable temporaire.

      En utilisant les n-uplets de Python, on aurait pu écrire plus directement:

      u, v, w = 1, 2, 3
      u, v, w = v, w, u
      
      
          
    2. AAV1_AFF: Vérification

      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. AAV1_AFF: Répondre explicitement à la question posée

      L'ordre recherché est donc le suivant:

      u, v, w = 1, 2, 3
      tmp = u
      u = v
      v = w
      w = tmp
      
    2. AAV1_AFF: Choisir et appliquer une technique de vérification

      On utilise la méthode de l'empathie numérique pour vérifier « à la main » le résultat proposé:

      inst   u   v   w tmp
         1   1   2   3   ?
         2   1   2   3   1
         3   2   2   3   1
         4   2   3   3   1
         5   2   3   1   1
      
  6. Décalage à droite
    • Question
    • Solution

    Remettre les 7 instructions ci-dessous dans le bon ordre pour obtenir un algorithme qui opère un décalage à droite des valeurs des 5 variables u, v, x, y, z.

    Exemple décalage à droite:

    Avant décalage :

    u, v, x, y, z = 1, 2, 3, 4, 5

    Après décalage à droite :

    u, v, x, y, z = 5, 1, 2, 3, 4

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

      AAV1_AFF: Résultat

      1. Ordonner les instructions

      1. u, v, x, y, z = 1, 2, 3, 4, 5
      2. tmp = z
      3. z = y
      4. y = x
      5. x = v
      6. v = u
      7. u = tmp
      /0/:On commence par initialiser les variables.
      /1/:On sauvegarde une des valeurs initiales dans une variable temporaire.

      En utilisant les n-uplets de Python, on aurait pu écrire plus directement:

      u, v, x, y, z = 1, 2, 3, 4, 5
      u, v, x, y, z = z, u, v, x, y
      
      
          
    2. AAV1_AFF: Vérification

      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. AAV1_AFF: Répondre explicitement à la question posée

      L'ordre recherché est donc le suivant:

      u, v, x, y, z = 1, 2, 3, 4, 5
      tmp = z
      z = y
      y = x
      x = v
      v = u
      u = tmp
      
    2. AAV1_AFF: Choisir et appliquer une technique de vérification

      On utilise la méthode de l'empathie numérique pour vérifier « à la main » le résultat proposé:

      inst   u   v   x   y   z tmp
         1   1   2   3   4   5   ?
         2   1   2   3   4   5   5
         3   1   2   3   4   4   5
         4   1   2   3   3   4   5
         5   1   2   2   3   4   5
         6   1   1   2   3   4   5
         7   5   1   2   3   4   5
      
  7. Décalages alternés
    • Question
    • Solution

    Remettre les 9 instructions ci-dessous dans le bon ordre pour obtenir un algorithme qui opère d'abord un décalage à gauche des valeurs des 3 variables de rang impair u, w et y puis un décalage à droite des valeurs des 3 variables de rang pair v, x et z.

    Exemple de décalage alterné :

    Avant décalage :

    u, v, w, x, y, z = 1, 2, 3, 4, 5, 6

    Après le décalage alterné proposé :

    u, v, w, x, y, z = 3, 6, 5, 2, 1, 4

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

      AAV1_AFF: Résultat

      1. Décalages

      1. u, v, w, x, y, z = 1, 2, 3, 4, 5, 6
      2. t1 = u
      3. t2 = z
      4. u = w
      5. w = y
      6. y = t1
      7. z = x
      8. x = v
      9. v = t2
      /0/:On commence par initialiser les variables.
      /1/:On sauvegarde une des valeurs initiales dans une variable temporaire.
      /5/:On sauvegarde une des valeurs initiales dans une variable temporaire.

      En utilisant les n-uplets de Python, on aurait pu écrire plus directement:

      u, v, w, x, y, z = 1, 2, 3, 4, 5, 6
      u, v, w, x, y, z = w, z, y, v, u, x
      
      
          
    2. AAV1_AFF: Vérification

      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. AAV1_AFF: Répondre explicitement à la question posée

      L'ordre recherché est donc le suivant:

      u, v, w, x, y, z = 1, 2, 3, 4, 5, 6
      t1 = u
      t2 = z
      u = w
      w = y
      y = t1
      z = x
      x = v
      v = t2
      
    2. AAV1_AFF: Choisir et appliquer une technique de vérification

      On utilise la méthode de l'empathie numérique pour vérifier « à la main » le résultat proposé:

      inst   u   v   w   x   y   z  t1  t2
         1   1   2   3   4   5   6   ?   ?
         2   1   2   3   4   5   6   1   ?
         3   1   2   3   4   5   6   1   6
         4   3   2   3   4   5   6   1   6
         5   3   2   5   4   5   6   1   6
         6   3   2   5   4   1   6   1   6
         7   3   2   5   4   1   4   1   6
         8   3   2   5   2   1   4   1   6
         9   3   6   5   2   1   4   1   6
      
 
Algorithmique - Cours : Affectation - Exercices de compréhension, 14 oct. 2024.