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
      • Alternative - Exercices de programmation (1)
      • Alternative - Exercices de programmation (2)
        • Sciences élémentaires
        • Sciences propédeutiques
  • 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 programmation (2)

Information :

Liens utiles sur l'alternative :

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

Sciences élémentaires

  1. Prix de photocopies
    • Question
    • Solution

    Proposer une alternative multiple qui calcule le prix de \(n\) photocopies sachant que le reprographe facture au prix unitaire de 0.10€ les 100 premières photocopies, de 0.09€ les 400 suivantes et de 0.07 au-delà.

    aide Python

    instruction d'alternative (documentation Python)

    if condition : bloc
    (elif condition : bloc)*
    (else : bloc)
    
    • La notation entre parenthèses (...) signifie que ce qui est contenu dans les parenthèses est optionnel : le elif et le else sont donc optionnels.
    • L'astérisque derrière les parenthèses (...)* signifie que l'on peut répéter 0 ou plusieurs fois le contenu des parenthèses : il peut donc y avoir autant de elif qu'on le souhaite.
    Votre réponse :
    1. Méthode

      1. Nommer la méthode générique utilisée pour concevoir l'algorithme attendu dans l'énoncé :

        ?

      2. Appliquer cette méthode au cas particulier de l'énoncé.

        Texte : inputlines419.txt

        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 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. Vérification

      1. Nommer la technique utilisée pour vérifier le résultat obtenu :

        ?

      2. Appliquer cette technique au résultat proposé.

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

        Texte : inputlines421.txt

        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

      On détermine le prix des photocopies en fonction de leur nombre par une alternative multiple dont la structure est précisée par la méthode des discriminants.

      Méthode des discriminants Prix des photocopies
      variables discriminantes le nombre \(n\) de photocopies
      domaine de définition \(\mathbb{N}\)
      nombres de sous-ensembles disjoints 3
      définition des sous-ensembles \([0,100]\) et \(]100,500]\) et \(]500,+\infty[\)
      squelette de l'alternative
      if n <= 100 :
          # sous-ensemble (0 <= n <= 100)
      elif n <= 500 :
          # sous-ensemble (100 < n <= 500)
      else :
          # sous-ensemble (500 < n)
      
    2. Répondre explicitement à la question posée

      L'interpréteur Python ci-dessous donne finalement l'alternative multiple pour déterminer le prix des photocopies.

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

      On utilise la méthode du jeu de tests en veillant à tester chaque branche de l'alternative (chaque sous-ensemble distinct).

      n prix
      0 0
      50 5
      100 10
      200 19
      500 46
      1000 81

      Le programme proposé retrouve bien ces valeurs.

      On peut également vérifier que \(\forall n, p \leq 0.1n\).

  2. Calcul de l'impôt sur le revenu
    • Question
    • Solution

    Calculer l'impôt sur le revenu d'un célibataire de 40 ans, actif et sans enfant dont le traitement annuel déclaré est de 50000 €. Le calcul de l'impôt se fait après abattement de 10% sur le revenu déclaré.

    Les taux applicables aux revenus 2015 sont donnés dans le tableau ci-dessous (d'après le site officiel des impôts) :

    Revenu imposable par part Taux applicables
    jusqu’à 9 700 € 0 %
    de 9 700 € à 26 791 € 14 %
    de 26 791 € à 71 826 € 30 %
    de 71 826 € à 152 108 € 41 %
    plus de 152 108 € 45 %

    Des exemples d'impôts sur le revenu pour un célibataire de 40 ans, actif et sans enfant sont donnés dans la table ci-dessous. Ils ont été obtenus à l'aide du simulateur de l'impôt 2015.

    Revenu Impôt
    8 000 € 0 €
    25 000 € 1 792 €
    50 000 € 7 855 €
    100 000 € 23 354 €
    160 000 € 45 494 €
    aide Python

    instruction d'alternative (documentation Python)

    if condition : bloc
    (elif condition : bloc)*
    (else : bloc)
    
    • La notation entre parenthèses (...) signifie que ce qui est contenu dans les parenthèses est optionnel : le elif et le else sont donc optionnels.
    • L'astérisque derrière les parenthèses (...)* signifie que l'on peut répéter 0 ou plusieurs fois le contenu des parenthèses : il peut donc y avoir autant de elif qu'on le souhaite.
    Votre réponse :
    1. Méthode

      1. Nommer la méthode générique utilisée pour concevoir l'algorithme attendu dans l'énoncé :

        ?

      2. Appliquer cette méthode au cas particulier de l'énoncé.

        Texte : inputlines427.txt

        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 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. Vérification

      1. Nommer la technique utilisée pour vérifier le résultat obtenu :

        ?

      2. Appliquer cette technique au résultat proposé.

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

        Texte : inputlines429.txt

        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

      On détermine le montant des impôts par une alternative multiple dont la structure est précisée par la méthode des discriminants.

      Méthode des discriminants Calcul de l'impôt sur le revenu
      variables discriminantes le revenu \(r\) après abattement de 10%
      domaine de définition \(\mathbb{R}^+\)
      nombres de sous-ensembles disjoints 5
      définition des sous-ensembles \([0,9700]\) et \(]9700,26791]\) et \(]26791,71826]\) et \(]71826,152108]\) et \(]152108,+\infty[\)
      squelette de l'alternative
      if r <= 9700 :
          # sous-ensemble (0 <= r <= 9700)
      elif n <= 26791 :
          # sous-ensemble (9700 < r <= 26791)
      elif n <= 26791 :
          # sous-ensemble (26791 < r <= 71826)
      elif n <= 26791 :
          # sous-ensemble (71826 < r <= 152108)
      else :
          # sous-ensemble (152108 < r)
      
    2. Répondre explicitement à la question posée

      L'interpréteur Python ci-dessous donne finalement l'alternative multiple pour déterminer le montant des impôts.

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

      Le jeu de tests proposé dans l'énoncé confirme la valeur de 7 855€ pour un revenu de 50 000€.

      On compare le résultat obtenu en le comparant au résultat déterminé par le simulateur de l'impôt 2015 du site officiel des impôts qui donne bien le même résultat : 7855€.

  3. Mentions au bac
    • Question
    • Solution

    Déterminer la mention au bac (ajourné, passable, assez bien, bien ou très bien) en fonction de la moyenne générale \(n\) obtenue par un bachelier.

    aide Python

    instruction d'alternative (documentation Python)

    if condition : bloc
    (elif condition : bloc)*
    (else : bloc)
    
    • La notation entre parenthèses (...) signifie que ce qui est contenu dans les parenthèses est optionnel : le elif et le else sont donc optionnels.
    • L'astérisque derrière les parenthèses (...)* signifie que l'on peut répéter 0 ou plusieurs fois le contenu des parenthèses : il peut donc y avoir autant de elif qu'on le souhaite.
    Votre réponse :
    1. Méthode

      1. Nommer la méthode générique utilisée pour concevoir l'algorithme attendu dans l'énoncé :

        ?

      2. Appliquer cette méthode au cas particulier de l'énoncé.

        Texte : inputlines435.txt

        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 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. Vérification

      1. Nommer la technique utilisée pour vérifier le résultat obtenu :

        ?

      2. Appliquer cette technique au résultat proposé.

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

        Texte : inputlines437.txt

        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

      On détermine la mention au bac par une alternative multiple dont la structure est précisée par la méthode des discriminants.

      Méthode des discriminants Mention au bac
      variables discriminantes la moyenne générale \(n\)
      domaine de définition \(n \in [0,20]\)
      nombres de sous-ensembles disjoints 5
      définition des sous-ensembles \([0,10[\) et \([10,12[\) et \([12,14[\) et \([14,16[\) et \([16,20]\)
      squelette de l'alternative
      if x < 10 :
          # sous-ensemble (0 <= n < 10)
      elif x < 12 :
          # sous-ensemble (10 <= n < 12)
      elif x < 14 :
          # sous-ensemble (12 <= n < 14)
      elif x < 16 :
          # sous-ensemble (14 <= n < 16)
      else :
          # sous-ensemble (16 <= n <= 20)
      
    2. Répondre explicitement à la question posée

      L'interpréteur Python ci-dessous donne finalement l'alternative multiple pour déterminer la mention.

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

      Une simple jeu de tests suffit ici en veillant toutefois à tester toutes les branches de l'alternative.

      Le programme proposé produit bien les bonnes mentions selon la note obtenue au bac.

Sciences propédeutiques

  1. Graphe de fonction
    • Question
    • Solution

    On considère la fonction \(y = f(x)\) définie sur \([-5;5]\) par le graphe ci-dessous et \(\forall x < -5, f(x) = f(-5)\) et \(\forall x > 5, f(x) = f(5)\).

    _images/alternative-prop-1-1.png

    Ecrire une alternative multiple qui calcule \(y = f(x)\ \forall x \in \mathbb{R}\).

    aide Python

    instruction d'alternative (documentation Python)

    if condition : bloc
    (elif condition : bloc)*
    (else : bloc)
    
    • La notation entre parenthèses (...) signifie que ce qui est contenu dans les parenthèses est optionnel : le elif et le else sont donc optionnels.
    • L'astérisque derrière les parenthèses (...)* signifie que l'on peut répéter 0 ou plusieurs fois le contenu des parenthèses : il peut donc y avoir autant de elif qu'on le souhaite.
    Votre réponse :
    1. Méthode

      1. Nommer la méthode générique utilisée pour concevoir l'algorithme attendu dans l'énoncé :

        ?

      2. Appliquer cette méthode au cas particulier de l'énoncé.

        Texte : inputlines443.txt

        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 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. Vérification

      1. Nommer la technique utilisée pour vérifier le résultat obtenu :

        ?

      2. Appliquer cette technique au résultat proposé.

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

        Texte : inputlines445.txt

        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

      La fonction \(f\) est composée d'une succession de segments de droite d'équation \(y = ax + b\) dont on peut lire directement sur le graphe la pente \(a\) et l'ordonnée à l'origine \(b\).

      _images/alternative-prop-1-2.png
      numéro équation
      _images/alternative-prop-1-cercle-1.png \(y = 1\)
      _images/alternative-prop-1-cercle-2.png \(y = -x -3\)
      _images/alternative-prop-1-cercle-3.png \(y = x + 3\)
      _images/alternative-prop-1-cercle-4.png \(y = -3x/2 - 2\)
      _images/alternative-prop-1-cercle-5.png \(y = 4x - 2\)
      _images/alternative-prop-1-cercle-6.png \(y = -x + 3\)
      _images/alternative-prop-1-cercle-7.png \(y = 2x - 9\)

      Une alternative multiple permettra de choisir le bon segment pour calculer \(f(x)\). La méthode des discriminants permet de préciser la structure de cette alternative.

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

      L'interpréteur Python ci-dessous permet de calculer \(y = f(x)\).

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

      Interpréteur

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

      Editeur

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

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

      On utilise la méthode du jeu de tests en comparant les valeurs obtenues par le calcul avec celles lues directement sur le graphe pour quelques points caractéristiques.

      x y
      -10 1
      -4.5 1
      -3.5 0.5
      -2.5 0.5
      -1 -0.5
      0.5 0
      2 1
      3 0
      4.5 0
      10 1

      Le programme proposé conduit bien aux mêmes résultats.

  2. Racines du trinôme
    • Question
    • Solution

    Ecrire un programme qui détermine la liste des racines réelles d'un trinôme \(ax^2 + bx + c\) à coefficients réels.

    aide Python

    instruction d'alternative (documentation Python)

    if condition : bloc
    (elif condition : bloc)*
    (else : bloc)
    
    • La notation entre parenthèses (...) signifie que ce qui est contenu dans les parenthèses est optionnel : le elif et le else sont donc optionnels.
    • L'astérisque derrière les parenthèses (...)* signifie que l'on peut répéter 0 ou plusieurs fois le contenu des parenthèses : il peut donc y avoir autant de elif qu'on le souhaite.
    Votre réponse :
    1. Méthode

      1. Nommer la méthode générique utilisée pour concevoir l'algorithme attendu dans l'énoncé :

        ?

      2. Appliquer cette méthode au cas particulier de l'énoncé.

        Texte : inputlines451.txt

        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 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. Vérification

      1. Nommer la technique utilisée pour vérifier le résultat obtenu :

        ?

      2. Appliquer cette technique au résultat proposé.

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

        Texte : inputlines453.txt

        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

      On utilise la méthode des discriminants pour préciser la structure de l'alternative qui permet de déterminer les racines du trinôme.

      1. Calcul du discriminant : \(\Delta = b^2 - 4ac\)
      2. Etude du signe du discriminant :
        • \(\Delta > 0 \Rightarrow\) 2 racines : \(\displaystyle \frac{-b \pm \sqrt{\Delta}}{2a}\)
        • \(\Delta = 0 \Rightarrow\) 1 racine : \(\displaystyle \frac{-b}{2a}\)
        • \(\Delta < 0 \Rightarrow\) 0 racine
      Méthode des discriminants Racines du trinôme
      variables discriminantes le discriminant \(\Delta = b^2 - 4ac\)
      domaine de définition \(\mathbb{R}\)
      nombres de sous-ensembles disjoints 3
      définition des sous-ensembles \(\Delta \in \mathbb{R}^{*-}\) et \(\Delta \in \mathbb{R}^{*+}\) et \(\Delta = 0\)
      squelette de l'alternative
      if delta < 0 :
          # sous-ensemble (delta < 0)
      elif delta == 0 :
          # sous-ensemble (delta == 0)
      else :
          # sous-ensemble (delta > 0)
      
    2. Répondre explicitement à la question posée

      L'interpréteur Python ci-dessous permet de calculer les racines du trinôme.

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

      On utilise la méthode du jeu de tests à l'aide d'identités remarquables pour chaque type de situation rencontré (ie. selon le signe du discriminant).

      Discriminant Identités remarquables Racines
      \(\Delta < 0\) \(y = x^2 + t^2\) \(y > 0 \Rightarrow\) pas de racines \(\forall t \neq 0\)
      \(\Delta = 0\) \(y = (x - t)^2 = x^2 - 2xt + t^2\) \(y = 0 \Rightarrow x = t\)
      \(\Delta > 0\) \(y = x^2 - t^2 = (x-t)(x+t)\) \(y = 0 \Rightarrow x = \pm t\ \forall t \neq 0\)

      Le programme proposé retrouve bien les résultats connus pour ces identités remarquables.

 
Algorithmique - Cours : Alternative - Exercices de programmation (2), 11 févr. 2019.