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
    • Définition
    • Expressions booléennes
    • Alternatives en cascade
    • Exercices
      • Alternative - Exercices de compréhension
        • Connaître les définitions
        • Comprendre les définitions
        • Lire un algorithme
      • Alternative - Exercices de programmation (1)
      • Alternative - Exercices de programmation (2)
  • 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

Alternative - Exercices de compréhension

Information :

Liens utiles sur l'alternative :

  • Cours
  • Exercices de compréhension
  • Exercices de programmation (1)
  • Exercices de programmation (2)

Connaître les définitions

  1. Définitions sur l'alternative
    • Question
    • Solution

    Répondre ci-dessous aux différents QCM concernant les définitions du cours.

    Votre réponse :
    3/3 Définitions
    1. Comparaison

      Le résultat d'une comparaison est une valeur

      1. booléenne.
      2. réelle.
      3. qui dépend du type des arguments.
      4. entière.
    2. Opérateur booléen

      Un opérateur booléen s'applique à des valeurs

      1. booléennes.
      2. entières.
      3. réelles.
      4. quelconques.
    3. Alternative

      La fonction principale d'une instruction d'alternative est

      1. d'exécuter une instruction sous condition.
      2. de passer d'instruction en instruction.
      3. de répéter une instruction sous condition.
      4. d'interrompre l'exécution d'une instruction.
    QCM Radio Checkbox Total
    Nombre de questions
    Réponses non enregistrées
    Réponses enregistrées
    Taux d'enregistrement
    Réponses enregistrées non validées
    Réponses enregistrées validées
    Taux de réussite partiel
    Taux de réussite total
    Une solution possible :

    Les réponses sont ici directement fournies par le QCM lui-même.

  2. Opérateurs booléens
    • Question
    • Solution

    Répondre ci-dessous aux différents QCM concernant les opérateurs booléens.

    Votre réponse :
    3/3 Opérateurs booléens
    1. Théorème de De Morgan

      Seule une des équivalences ci-dessous est valide. Laquelle ?

      1. \(\overline{a + \overline{b}} \Leftrightarrow \overline{a}\cdot b\)
      2. \(\overline{a + \overline{b}} \Leftrightarrow \overline{a\cdot b}\)
      3. \(\overline{a + \overline{b}} \Leftrightarrow \overline{a} + b\)
      4. \(\overline{a + \overline{b}} \Leftrightarrow \overline{a + b}\)
    2. Implication

      Seule une des équivalences ci-dessous est valide. Laquelle ?

      1. \(a \Rightarrow b \Leftrightarrow \overline{a} + b\)
      2. \(a \Rightarrow b \Leftrightarrow \overline{b} + a\)
      3. \(a \Rightarrow b \Leftrightarrow \overline{a} + \overline{b}\)
      4. \(a \Rightarrow b \Leftrightarrow \overline{a}\cdot b\)
    3. Ou exclusif

      Seule une des équivalences ci-dessous est valide. Laquelle ?

      1. \(a \oplus b \Leftrightarrow a\cdot \overline{b} + \overline{a}\cdot b\)
      2. \(a \oplus b \Leftrightarrow (a + \overline{b}) \cdot (\overline{a} + \overline{b})\)
      3. \(a \oplus b \Leftrightarrow \overline{a}\cdot \overline{b} + a\cdot b\)
      4. \(a \oplus b \Leftrightarrow \overline{(a + b)\cdot (\overline{a} + \overline{b})}\)
    QCM Radio Checkbox Total
    Nombre de questions
    Réponses non enregistrées
    Réponses enregistrées
    Taux d'enregistrement
    Réponses enregistrées non validées
    Réponses enregistrées validées
    Taux de réussite partiel
    Taux de réussite total
    Une solution possible :

    Les réponses sont ici directement fournies par le QCM lui-même.

  3. Séquences d'alternatives
    • Question
    • Solution

    Répondre ci-dessous aux différents QCM concernant les séquences d'alternatives.

    Votre réponse :
    4/4 Séquences d'alternatives
    1. Alternative multiple

      Après la séquence:

      x = -3
      if   x < -4 : y = 0
      elif x < -3 : y = 4 - x
      elif x < -1 : y = x*x + 6*x + 10
      elif x <  3 : y = 2 - x
      else        : y = -2
      

      la variable y est telle que

      1. y == 1.
      2. y == 5.
      3. y == 7.
      4. y == -2.
    2. Alternative simple (1)

      Après la séquence:

      x = -2
      if not (x > 0 and x < 5) : x = -x
      else : x = 2*x
      

      la variable x est telle que

      1. x = 2.
      2. x = 4.
      3. x = -4.
      4. x = -2.
    3. Tests simples

      Après la séquence:

      x = -2
      if not ((x > 0) and (x < 5)) : x = -x
      if (x > 0) and (x < 5)       : x = -2*x
      

      la variable x est telle que

      1. x = -4.
      2. x = 4.
      3. x = -2.
      4. x = 2.
    4. Alternative simple (2)

      Après la séquence:

      if not (x > y) : z = x
      else           : z = y
      

      la variable z représente

      1. le minimum de x et de y.
      2. le maximum de x et de y.
      3. la valeur de x.
      4. la valeur de y.
    QCM Radio Checkbox Total
    Nombre de questions
    Réponses non enregistrées
    Réponses enregistrées
    Taux d'enregistrement
    Réponses enregistrées non validées
    Réponses enregistrées validées
    Taux de réussite partiel
    Taux de réussite total
    Une solution possible :

    Les réponses sont ici directement fournies par le QCM lui-même.

Comprendre les définitions

  1. Tests simples versus alternative simple
    • Question
    • Solution

    A l'aide d'un exemple, démontrer que l'alternative simple ci-dessous:

    if condition :
        blocIf
    else :
        blocElse
    

    n'est pas équivalente à la séquence de tests simples suivante:

    if condition :
        blocIf
    if not condition :
        blocElse
    
    Votre réponse :
    1. Méthode

      1. Nom de la méthode

        ?

      2. Application de la méthode

        python : essai.py
        
            
        >>>
        Output
        
                        

        Interpréteur

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

        Editeur

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

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

      La réponse est dans la question : ... donc l'alternative simple ci-dessous:

      if condition :
          blocIf
      else :
          blocElse
      

      n'est pas équivalente à la séquence de tests simples suivante:

      if condition :
          blocIf
      if not condition :
          blocElse
      
    3. Vérification

      1. Nom de la technique de vérification

        ?

      2. Application de la technique de 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. Choisir et appliquer une méthode générique

      Comme précisé dans l'énoncé, on utilise la méthode du contre-exemple.

      Pour prouver qu'un énoncé commençant par « Pour tout ... » (\(\forall x\)) est faux, il suffit de trouver un élément (« Il existe ... » : \(\exists y\)) qui réalise les conditions imposées dans l'hypothèse sans que ne soit vérifiée la conclusion.

      On considère l'exemple suivant ou on change le signe de la variable testée (x = -x) quelle que soit la condition :

      Méthode des discriminants alternative simple
      variables discriminantes \(x\)
      domaine de définition \(\mathbb{Z}\)
      nombres de sous-ensembles disjoints 2
      définition des sous-ensembles \(]-\infty,0[\) et \([0,+\infty[\)
      squelette de l'alternative
      if x < 0 :
          x = -x
      else :
          x = -x
      

      On inialise la variable discriminante de telle manière que la condition soit vraie (exemple : x = -1).

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

      Un contre-exemple est donné ci-dessous:

      x = -1
      print 'Deux tests simples'
      if x < 0 :
          x = -x
          print 'if',
      if not (x < 0) :
          x = -x
          print 'else',
      print x
      x1 = x
      
      x = -1
      print 'Une alternative simple'
      if x < 0 :
          x = -x
          print 'if',
      else :
          x = -x
          print 'else',
      print x
      x2 = x
      
      verif = x1 == x2
      print verif,x,x1,x2
      
    3. Choisir et appliquer une technique de vérification

      • On s'appuie sur la définition de l'alternative simple : dans le cas des 2 tests successifs, si le blocIf modifie les valeurs des variables discrimantes de la condition, alors condition peut passer de True à False avant de tester le not condition du deuxième test et le blocElse sera alors exécuté. Ce qui n'est pas le cas dans l'alternative simple.

      • On peut également utiliser la représentation graphique des flux d'instructions.

        _images/alternative-def-1.png

        Les deux diagrammes de flux sont différents. Le diagramme correspondant aux 2 tests simples peut autoriser le passage par les blocIf et blocElse successivement; ce que n'autorise pas l'alternative simple.

  2. Ordre au sein d'une alternative multiple
    • Question
    • Solution

    A l'aide d'un exemple, démontrer que l'alternative multiple ci-dessous:

    if   condition1 : bloc1
    elif condition2 : bloc2
    elif condition3 : bloc3
    else            : bloc4
    

    n'est pas équivalente à l'alternative multiple suivante:

    if   condition1 : bloc1
    elif condition3 : bloc3
    elif condition2 : bloc2
    else            : bloc4
    
    Votre réponse :
    1. Méthode

      1. Nom de la méthode

        ?

      2. Application de la méthode

        python : essai.py
        
            
        >>>
        Output
        
                        

        Interpréteur

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

        Editeur

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

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

      La réponse est dans la question : ... donc l'alternative multiple ci-dessous:

      if   condition1 : bloc1
      elif condition2 : bloc2
      elif condition3 : bloc3
      else            : bloc4
      

      n'est pas équivalente à l'alternative multiple suivante:

      if   condition1 : bloc1
      elif condition3 : bloc3
      elif condition2 : bloc2
      else            : bloc4
      
    3. Vérification

      1. Nom de la technique de vérification

        ?

      2. Application de la technique de 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. Choisir et appliquer une méthode générique

      Comme précisé dans l'énoncé, on utilise la méthode du contre-exemple.

      Pour prouver qu'un énoncé commençant par « Pour tout ... » (\(\forall x\)) est faux, il suffit de trouver un élément (« Il existe ... » : \(\exists y\)) qui réalise les conditions imposées dans l'hypothèse sans que ne soit vérifiée la conclusion.

      On considère l'exemple suivant où les instructions liées à chaque sous-ensemble effectuent un traitement différent selon la valeur de x.

      Méthode des discriminants permutation des elif
      variables discriminantes \(x\)
      domaine de définition \(\mathbb{Z}\)
      nombres de sous-ensembles disjoints 4
      définition des sous-ensembles \(]-\infty,10[\) et \([10,20[\) et \([20,30[\) et \([30,+\infty[\)
      squelette de l'alternative
      if x < 10 :
          # sous-ensemble (x < 10)
      elif x < 20 :
          # sous-ensemble (10 <= x < 20)
      elif x < 30 :
          # sous-ensemble (20 <= x < 30)
      else :
          # sous-ensemble (30 <= x)
      

      On initialise la variable de telle manière que la condition du premier elif soit vraie (exemple : x = 11).

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

      Un contre-exemple est donné ci-dessous:

      # exemple 1
      print u'avant permutation des lignes elif'
      x = 11
      if   x < 10 :
          y = x/1
          print 'x < 10 :',x,y
      elif x < 20 :
          y = x/2
          print 'x < 20 :',x,y
      elif x < 30 :
          y = x/3
          print 'x < 30 :',x,y
      else         :
          y = 0
          print 'x > 30 :',x,y
      
      # exemple 2
      print u'après permutation des lignes elif'
      x = 11
      if   x < 10 :
          y = x/1
          print 'x < 10 :',x,y
      elif x < 30 :
          y = x/3
          print 'x < 30 :',x,y
      elif x < 20 :
          y = x/2
          print 'x < 20 :',x,y
      else         :
          y = 0
          print 'x > 30 :',x,y
      

      Le code précédent donne des résultats différents selon l'ordre des lignes elif:

      avant permutation des lignes elif
      x < 20 : 11 5
      après permutation des lignes elif
      x < 30 : 11 3
      

      Il n'y a donc pas équivalence entre les 2 versions avant et après permutation.

    3. Choisir et appliquer une technique de vérification

      On s'appuie sur la définition de l'alternative multiple : quand on passe dans une branche elif, c'est que toutes les conditions des branches elif précédentes sont fausses.

      Avant permutation, la condition condition3 est équivalente à not condition1 and not condition2 and condition3 tandis qu'après permutation, elle devient équivalente à not condition1 and condition3, ce qui est évidemment moins contraignant et donc à priori différent.

  3. La structure switch ... case
    • Question
    • Solution

    Certains langages, comme Javascript ou C, définissent une instruction conditionnelle switch ... case:

    switch (expression) {
        case valeur1:
            // Instructions à exécuter lorsque l'évaluation
            // de l'expression correspond à valeur1
            instructions1;
            [break;]
        case valeur2:
            // Instructions à exécuter lorsque l'évaluation
            // de l'expression correspond à valeur2
            instructions2;
            [break;]
          ...
        case valeurN:
            // Instructions à exécuter lorsque l'évaluation
            // de l'expression à valeurN
            instructionsN;
            [break;]
        default:
            // Instructions à exécuter lorsqu'aucune des valeurs
            // ne correspond
            instructions_def;
            [break;]
    }
    

    Une instruction switch commence par évaluer l'expression fournie (switch (expression)). Si une correspondance est trouvée entre la valeur de l'expression est l'un des cas proposés (valeur1, valeur2, ... , valeurN), le programme exécute les instructions associées.

    Si plusieurs cas de figure correspondent, le premier cas rencontré sera sélectionné.

    Le programme recherche tout d'abord une clause case dont l'expression est évaluée avec la même valeur que l'expression d'entrée. Si une telle clause est trouvée, les instructions associées sont exécutées. Si aucune clause case n'est trouvée, le programme recherche la clause optionnelle default et si elle existe, les instructions correspondantes sont exécutées. Si cette clause optionnelle n'est pas utilisée, le programme continue son exécution après l'instruction switch.

    L'instruction break peut optionnellement être utilisée pour chaque cas et permet de s'assurer que seules les instructions associées à ce cas seront exécutées (et le programme continue son exécution après l'instruction switch). Si break n'est pas utilisé, le programme continuera son exécution avec les instructions suivantes (des autres cas de l'instruction switch).

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

    javascript : alternative-def-3.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 switch. Proposer une séquence d'alternatives équivalente à la structure switch du programme Javascript précédent.

    Votre réponse :
    1. Méthode

      1. Nom de la méthode

        ?

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

      On utilise la méthode des discriminants où switch (x) ... case val: se lit if x == val : et switch (x) ... default: se lit else :.

      Méthode des discriminants switch ... case
      variables discriminantes \(x\)
      domaine de définition \(\mathbb{Z}\)
      nombres de sous-ensembles disjoints 5
      définition des sous-ensembles \(]-\infty,0] \cup [5,+\infty[\) et \(\{1\}\) et \(\{2\}\) et \(\{3\}\) et \(\{4\}\)
      squelette de l'alternative
      if x == 1 :
          # sous-ensemble (x == 1)
      elif x == 2 :
          # sous-ensemble (x == 2)
      elif x == 3 :
          # sous-ensemble (x == 3)
      elif x == 4 :
          # sous-ensemble (x == 4)
      else :
          # sous-ensemble (x <= 0 or x >= 5)
      
    2. Répondre explicitement à la question posée

      L'exemple Python ci-dessous illustre le fonctionnement équivalent au programme switch de Javascript:

      # initialisation
      import random
      x = random.randint(0,9)
      
      # switch
      if x == 1 :
          text = "1"
      elif x == 2 :
          text = "234"
      elif x == 3 :
          text = "34"
      elif x == 4 :
          text = "4"
      else :
          text = "fin"
      
      # résultat
      print x, text
      
    3. Choisir et appliquer une technique de vérification

      On compare les résultats obtenus entre Javascript et Python sur un jeu de tests pour les cas x = 1, x = 2, x = 3, x = 4, tous les autres cas donnant fin.

      On obtient bien les mêmes résultats pour la chaîne text en Python et en Javascript.

Lire un algorithme

  1. Alternatives en cascade (1)
    • Question
    • Solution

    Déterminer « à la main » la valeur de la variable k après la séquence d'instructions suivante :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    x, y = 2, 3
    d, c = 5, 4
    if x > 0 and x < d :
        if y > 0 and y < c :
            k = y
        else :
            k = x
    else :
        k = 1
    
    Votre réponse :
    1. Méthode

      1. Nom de la méthode

        ?

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

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

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

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

      On dresse la tableau des valeurs des variables instruction après instruction:

      line cond   x   y   c   d   k
         1    -   2   3   ?   ?   ?
         2    -   2   3   4   5   ?
         3    1   2   3   4   5   ?
         4    1   2   3   4   5   ?
         5    -   2   3   4   5   3
      
    2. Répondre explicitement à la question posée

      A la fin de l'algorithme, l'instruction print k affiche 3:

      >>> print k
      3
      
    3. Choisir et appliquer une technique de vérification

      On choisit d'exécuter en Python le code proposé pour vérifier les résultats précédents.

      L'exécution par Python des séquences précédentes donne bien les mêmes résultats que ceux obtenus « à la main ».

  2. Alternatives en cascade (2)
    • Question
    • Solution

    Déterminer « à la main » la valeur de la variable y après la séquence d'instructions suivante :

    1
    2
    3
    4
    5
    6
    7
    x, y = 3, -2
    if x < y :
        y = y - x
    elif x == y :
        y = 0
    else        :
        y = x - y
    
    Votre réponse :
    1. Méthode

      1. Nom de la méthode

        ?

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

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

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

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

      On dresse la tableau des valeurs des variables instruction après instruction.

      line cond   x   y
         1    -   3  -2
         2    0   3  -2
         4    0   3  -2
         6    -   3   5
      
    2. Répondre explicitement à la question posée

      A la fin de l'algorithme, l'instruction print y affiche 5:

      >>> print y
      5
      
    3. Choisir et appliquer une technique de vérification

      On choisit d'exécuter en Python le code proposé pour vérifier les résultats précédents.

      L'exécution par Python des séquences précédentes donne bien les mêmes résultats que ceux obtenus « à la main ».

 
Algorithmique - Cours : Alternative - Exercices de compréhension, 11 févr. 2019.