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

Information :

Liens utiles sur l'affectation :

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

Sciences élémentaires

  1. Prix de vente
    • Question
    • Solution

    Un libraire propose une réduction de 3.5% sur le prix hors taxes (HT) d'un livre à 12.35 € HT. Sachant que la taxe sur la valeur ajoutée (TVA) sur les livres est de 5.5%, proposer une instruction de type « affectation » qui permettra de calculer le prix de vente final pour le client.

    aide Python
    1. instruction d'affectation

      a = b

      affecte la valeur de l'expression b à la variable de nom a.

    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 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. Nom de la technique de vérification

        ?

      2. Application de la technique

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

        Zone de saisie de texte

        ClavierAction
        F1Afficher une aide technique
        F2Afficher une aide pédagogique
        Ctrl-ATout sélectionner
        Ctrl-CCopier la sélection dans le presse-papier
        Ctrl-VCopier le presse-papier dans la sélection
        Ctrl-XCouper la sélection et la copier dans le presse-papier
        Ctrl-ZAnnuler la modification
        Maj-Ctrl-ZRétablir la modification

        MenuAction
        Ré-initialiser les sorties
        Faire apparaître le menu d'aide
        Valider la zone de saisie
        Initialiser la zone de saisie
        Charger le contenu d'un fichier dans la zone de saisie
        Sauvegarder le contenu de la zone de saisie dans un fichier
        Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. Choisir et appliquer une méthode générique

      On commence par faire abstraction des données spécifiques, en particulier numériques ou alphanumériques, pour ne considérer que les variables associées. Puis on reformule l'énoncé avec les noms des variables en explicitant les données du problème et les résultats attendus.

      Ainsi, on ne s'intéressera pas à la valeur « 12.35 € » mais à ce qu'elle qualifie : c'est-à-dire le prix hors taxes du livre, le « livre » étant lui-même un cas particulier de produit. Et ainsi pour chaque donnée spécifique du problème posé à laquelle on attribuera un nom.

      Il s'agit donc ici de proposer une instruction de type « affectation » qui permettra de calculer le prix de vente (noté pv) d'un produit connaissant son prix HT (noté ht), la TVA (notée tva, exprimée sous la forme d'un pourcentage) sur ce type de produit et la réduction éventuelle (notée r, exprimée sous la forme d'un pourcentage du prix HT) proposée par le vendeur sur ce produit.

      reduction = ht*r/100
      

      Sachant qu'une réduction se soustrait du prix HT initial pour obtenir le prix hors taxe effectivement proposé (noté htr) :

      htr = ht - reduction
      

      et qu'une taxe se calcule sur le prix hors taxe réellement effectué et s'ajoute à ce prix hors taxes, on a ainsi l'algorithme recherché :

      taxe = htr*tva/100
      pv = htr + taxe
      

      algorithme qu'il faut initialiser avec les données du problème particulier :

      ht, tva, r = 12.35, 5.5, 3.5
      
    2. Répondre explicitement à la question posée

      L'instruction de type affectation qui permet de répondre à la question posée est donnée dans l'interpréteur ci-dessous.

      python : affectation-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 peut utiliser une méthode d'encadrement du résultat en encadrant le prix de vente \(p_v\) par 2 valeurs limites facilement identifiables : \(min \leq p_v \leq max\).

      Le prix final sera en effet supérieur à la taxe imposée et inférieur au prix TTC sans réduction. On doit donc vérifier :

      taxe <= pv <= ht*(1+tva/100)
      

      On peut également utiliser une valeur évidente que doit donner l'algorithme : ici une réduction de 100% doit donner un prix de vente nul. Ainsi, pour \(r = 100\), on doit vérifier :

      pv == 0
      
  2. Conversion d'unités
    • Question
    • Solution

    On veut convertir 3.2 noeuds (nd, miles nautiques par heure) en kilomètres par heure (km/h).

    Proposer une instruction de type « affectation » qui permettra de réaliser cette conversion d'unités.

    Lien utile :

    National Institute of Standards and Technology guide for the use of the International System of Units (NIST), Annexe B9 (velocity)

    rappels sur les unités en physique
    _images/unites-1.png _images/unites-2.png
    aide Python
    1. instruction d'affectation

      a = b

      affecte la valeur de l'expression b à la variable de nom a.

    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 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. Nom de la technique de vérification

        ?

      2. Application de la technique

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

        Zone de saisie de texte

        ClavierAction
        F1Afficher une aide technique
        F2Afficher une aide pédagogique
        Ctrl-ATout sélectionner
        Ctrl-CCopier la sélection dans le presse-papier
        Ctrl-VCopier le presse-papier dans la sélection
        Ctrl-XCouper la sélection et la copier dans le presse-papier
        Ctrl-ZAnnuler la modification
        Maj-Ctrl-ZRétablir la modification

        MenuAction
        Ré-initialiser les sorties
        Faire apparaître le menu d'aide
        Valider la zone de saisie
        Initialiser la zone de saisie
        Charger le contenu d'un fichier dans la zone de saisie
        Sauvegarder le contenu de la zone de saisie dans un fichier
        Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. Choisir et appliquer une méthode générique

      On commence par faire abstraction des données spécifiques, en particulier numériques ou alphanumériques, pour ne considérer que les variables associées. Puis on reformule l'énoncé avec les noms des variables en explicitant les données du problème et les résultats attendus.

      Ainsi, on ne s'intéressera pas à la valeur « 3.2 nd » mais à ce qu'elle qualifie : c'est-à-dire une vitesse en noeuds, le « noeud » étant lui-même un cas particulier d'unité de vitesse. Et ainsi pour chaque donnée spécifique du problème posé à laquelle on attribuera un nom.

      On cherche donc ici à convertir \(n_1\cdot u_1\) en \(n_2\cdot u_2\) où \(u_1\) et \(u_2\) sont des unités physiques compatibles qui dérivent de la même unité de base \(u_b\) du Système international d'unités.

      \[\left| \begin{array}{l} u_1 = a_1\cdot u_b \\ u_2 = a_2\cdot u_b \end{array} \right. \Rightarrow \left| \begin{array}{l} n_1\cdot u_1 = n_1\cdot (a_1\cdot u_b) = (n_1\cdot a_1)\cdot u_b \\ n_2\cdot u_2 = n_2\cdot (a_2\cdot u_b) = (n_2\cdot a_2)\cdot u_b \end{array} \right. \Rightarrow \frac{n_1\cdot u_1}{n_2\cdot u_2} = \frac{n_1\cdot a_1}{n_2\cdot a_2}\]

      Comme on cherche \(n_2\) tel que \(n_1\cdot u_1 = n_2\cdot u_2\), on a donc :

      \[\frac{n_1\cdot u_1}{n_2\cdot u_2} = \frac{n_1\cdot a_1}{n_2\cdot a_2} = 1 \Rightarrow n_2 = n_1 \cdot \frac{a_1}{a_2}\]

      où les coefficients \(a_i\) sont documentés dans le Système international d'unités par le Bureau international des poids et mesures (voir par exemple l'Annexe B9 (velocity) du NIST).

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

      Pour convertir 3.2 noeuds en kilomètres par heure, on utilise la séquence d'affectations proposée dans l'interpréteur ci-dessous.

      python : affectation-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

      On procèdera par jeux de tests en comparant les valeurs obtenues par le calcul avec celles de quelques valeurs caractéristiques connues ou facilement évaluables « à la main ».

      Exemples :

      1. \(n_1 = 1.\mathrm{nd} \Rightarrow{} n_2 = 1.852 \mathrm{km/h}\)
      2. \(n_1 = 1./1852 \mathrm{nd} \Rightarrow{} n_2 = 1./1000 \mathrm{km/h} = 0.001 \mathrm{km/h}\)

      On obtient bien les résultats escomptés avec Python.

  3. Produit scalaire
    • Question
    • Solution

    On considère les 2 vecteurs \(\vec{A}\) et \(\vec{B}\) définis dans \(\mathbb{R}^2\) comme le montre la figure ci-dessous.

    _images/affectation-elem-3-1.png

    Proposer une instruction de type « affectation » qui permettra de calculer le produit scalaire \(\vec{A}\cdot\vec{B}\) de ces deux vecteurs.

    aide Python
    1. instruction d'affectation

      a = b

      affecte la valeur de l'expression b à la variable de nom a.

    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 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. Nom de la technique de vérification

        ?

      2. Application de la technique

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

        Zone de saisie de texte

        ClavierAction
        F1Afficher une aide technique
        F2Afficher une aide pédagogique
        Ctrl-ATout sélectionner
        Ctrl-CCopier la sélection dans le presse-papier
        Ctrl-VCopier le presse-papier dans la sélection
        Ctrl-XCouper la sélection et la copier dans le presse-papier
        Ctrl-ZAnnuler la modification
        Maj-Ctrl-ZRétablir la modification

        MenuAction
        Ré-initialiser les sorties
        Faire apparaître le menu d'aide
        Valider la zone de saisie
        Initialiser la zone de saisie
        Charger le contenu d'un fichier dans la zone de saisie
        Sauvegarder le contenu de la zone de saisie dans un fichier
        Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. Choisir et appliquer une méthode générique

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

      Il s'agit ici de déterminer le produit scalaire \(\vec{V}_1\cdot\vec{V}_2\) de 2 vecteurs \(\vec{V}_1\) et \(\vec{V}_2\) de \(\mathbb{R}^2\) ayant pour composantes respectives \((x_1,y_1)\) et \((x_2,y_2)\).

      Par définition, ce produit scalaire est un réel \(p\) qui a pour expression : \(p = x_1\cdot x_2 + y_1\cdot y_2\).

      Ainsi, connaissant les composantes respectivement (x1,y1) et (x2,y2) des vecteurs \(\vec{V}_1\) et \(\vec{V}_2\), on détermine le produit scalaire p par une affectation simple:

      p = x1*x2 + y1*y2
      
    2. Répondre explicitement à la question posée

      Avant d'appliquer la formule précédente du produit scalaire, il faut initialiser correctement les composantes des 2 vecteurs.

      python : affectation-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

      On peut passer par une représentation géométrique en considérant l'interprétation géométrique du produit scalaire comme le rappelle la figure ci-dessous.

      _images/affectation-elem-3-2.png

      La projection de \(\vec{B}\) sur \(\vec{A}\) se lit très facilement sur la figure puisque \(\vec{A}\) est horizontal (parallèle à l'axe des abscisses avec \(|\vec{A}| = 3\)) : elle a pour valeur (-4) - (-2) = -2, d'où le produit scalaire \(p = 3 \cdot (-2) = -6\).

      Le code Python précédent donne bien le même résultat.

Sciences propédeutiques

  1. Suite arithmétique
    • Question
    • Solution

    Proposer une instruction de type « affectation » qui permettra de calculer la somme \(s\) des \(n+1\) premiers termes \(u_k\) d'une suite arithmétique de premier terme \(u_0\) et de raison \(r\) : \(u_k = u_0 + kr\).

    rappels mathématiques
    1. La somme arithmétique \(S = (1+2+\ldots\ +n)\) des \(n+1\) premiers entiers est telle que :

      \(\begin{array}{rrccccccccccccc} & S &=& 1 &+& 2 &+& 3 &+& \ldots &+& (n-1) &+& n \\ + & S &=& n &+& (n-1) &+& (n-2) &+& \ldots &+& 2 &+& 1 \\ = & 2S &=& (n+1) &+& (n+1) &+& (n+1) &+& \ldots &+& (n+1) &+& (n+1)\\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{n(n+1)}{2}\).

    2. La somme géométrique \(S = (1 + q + q^2 + \ldots\ + q^n)\) de raison \(q \neq 1\) est telle que :

      \(\begin{array}{rcccccccccccccc} S &=& 1 &+& q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n & & \\ qS &=& & & q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n &+& q^{(n+1)} \\ (1-q)S &=& 1 &+& 0 &+& 0 &+& \ldots &+& 0 &+& 0 &-& q^{(n+1)} \\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{1-q^{(n+1)}}{1-q}\).

    aide Python
    1. instruction d'affectation

      a = b

      affecte la valeur de l'expression b à la variable de nom a.

    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 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. Nom de la technique de vérification

        ?

      2. Application de la technique

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

        Zone de saisie de texte

        ClavierAction
        F1Afficher une aide technique
        F2Afficher une aide pédagogique
        Ctrl-ATout sélectionner
        Ctrl-CCopier la sélection dans le presse-papier
        Ctrl-VCopier le presse-papier dans la sélection
        Ctrl-XCouper la sélection et la copier dans le presse-papier
        Ctrl-ZAnnuler la modification
        Maj-Ctrl-ZRétablir la modification

        MenuAction
        Ré-initialiser les sorties
        Faire apparaître le menu d'aide
        Valider la zone de saisie
        Initialiser la zone de saisie
        Charger le contenu d'un fichier dans la zone de saisie
        Sauvegarder le contenu de la zone de saisie dans un fichier
        Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. Choisir et appliquer une méthode générique

      On applique les résultats mathématiques sur les suites arithmétiques.

      La somme \(s\) des \(n+1\) premiers termes d'une suite arithmétique \(u_k = u_0 + kr\) s'écrit :

      \(s = u_0 + (u_0 + r) + (u_0 + 2r) + \ldots\ + (u_0 + nr) = (n+1)u_0 + r(1 + 2 + \ldots\ + n)\)

      On pose \(S = (1 + 2 + \ldots\ + n)\). On a alors : \(s = (n+1)u_0 + rS\) où \(S\) est tel que :

      \(\begin{array}{rrccccccccccccc} & S &=& 1 &+& 2 &+& 3 &+& \ldots &+& (n-1) &+& n \\ + & S &=& n &+& (n-1) &+& (n-2) &+& \ldots &+& 2 &+& 1 \\ = & 2S &=& (n+1) &+& (n+1) &+& (n+1) &+& \ldots &+& (n+1) &+& (n+1)\\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{n(n+1)}{2}\) et donc \(\displaystyle s = (n+1)u_0 + r\frac{n(n+1)}{2}\)

      L'application directe des résultats mathématiques concernant les sommes arithmétiques permet ainsi de proposer l'affectation suivante:

      s = (n+1)*u0 + n*(n+1)*r/2
      

      Il faut bien sûr connaître n, u0 et r pour évaluer cette somme.

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

      python : affectation-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 procèdera par jeux de tests en considérant par exemple la suite arithmétique bien connue des entiers naturels : \(u_0 = 0\) et \(r = 1\), pour laquelle la somme des \(n+1\) premiers entiers vaut : \(\displaystyle s = \frac{n(n+1)}{2}\).

      Le code précédent est testé avec la somme des \(n = 5+1\) premiers entiers (\(u_0 = 0\) et \(r = 1\)). On a donc « à la main » : \(s = 0 + 1 + 2 + 3 + 4 + 5 = 15\), ce que donne l'exécution du programme Python.

  2. Suite géométrique
    • Question
    • Solution

    Proposer une instruction de type « affectation » qui permettra de calculer la somme \(s\) des \(n+1\) premiers termes \(u_k\) d'une suite géométrique de premier terme \(u_0\) et de raison \(q\) : \(u_k = u_0q^k\).

    rappels mathématiques
    1. La somme arithmétique \(S = (1+2+\ldots\ +n)\) des \(n+1\) premiers entiers est telle que :

      \(\begin{array}{rrccccccccccccc} & S &=& 1 &+& 2 &+& 3 &+& \ldots &+& (n-1) &+& n \\ + & S &=& n &+& (n-1) &+& (n-2) &+& \ldots &+& 2 &+& 1 \\ = & 2S &=& (n+1) &+& (n+1) &+& (n+1) &+& \ldots &+& (n+1) &+& (n+1)\\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{n(n+1)}{2}\).

    2. La somme géométrique \(S = (1 + q + q^2 + \ldots\ + q^n)\) de raison \(q \neq 1\) est telle que :

      \(\begin{array}{rcccccccccccccc} S &=& 1 &+& q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n & & \\ qS &=& & & q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n &+& q^{(n+1)} \\ (1-q)S &=& 1 &+& 0 &+& 0 &+& \ldots &+& 0 &+& 0 &-& q^{(n+1)} \\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{1-q^{(n+1)}}{1-q}\).

    aide Python
    1. instruction d'affectation

      a = b

      affecte la valeur de l'expression b à la variable de nom a.

    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 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. Nom de la technique de vérification

        ?

      2. Application de la technique

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

        Zone de saisie de texte

        ClavierAction
        F1Afficher une aide technique
        F2Afficher une aide pédagogique
        Ctrl-ATout sélectionner
        Ctrl-CCopier la sélection dans le presse-papier
        Ctrl-VCopier le presse-papier dans la sélection
        Ctrl-XCouper la sélection et la copier dans le presse-papier
        Ctrl-ZAnnuler la modification
        Maj-Ctrl-ZRétablir la modification

        MenuAction
        Ré-initialiser les sorties
        Faire apparaître le menu d'aide
        Valider la zone de saisie
        Initialiser la zone de saisie
        Charger le contenu d'un fichier dans la zone de saisie
        Sauvegarder le contenu de la zone de saisie dans un fichier
        Imprimer le contenu de la zone de saisie
    Une solution possible :
    1. Choisir et appliquer une méthode générique

      On applique les résultats mathématiques sur les suites géométriques.

      La somme \(s\) des \(n+1\) premiers termes d'une suite géométrique \(u_k = u_0q^k\) avec \(q \neq 1\) s'écrit :

      \(s = u_0 + u_0q + u_0q^2 + \ldots\ + u_0q^n = u_0(1 + q + q^2 + \ldots\ + q^n)\)

      On pose \(S = (1 + q + q^2 + \ldots\ + q^n)\). On a alors : \(s = u_0S\) où \(S\) est tel que :

      \(\begin{array}{rcccccccccccccc} S &=& 1 &+& q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n & & \\ qS &=& & & q &+& q^2 &+& \ldots &+& q^{(n-1)} &+& q^n &+& q^{(n+1)} \\ (1-q)S &=& 1 &+& 0 &+& 0 &+& \ldots &+& 0 &+& 0 &-& q^{(n+1)} \\ \end{array}\)

      On en déduit : \(S = \displaystyle\frac{1-q^{(n+1)}}{1-q}\) et donc \(\displaystyle s = u_0\frac{1-q^{(n+1)}}{1-q}\)

      L'application directe des résultats de mathématiques concernant les sommes géométriques permet de proposer l'affectation suivante:

      s = u0*(1 - q**(n+1))/(1 - q)
      

      Il faut bien sûr connaître n, u0 et q (avec q != 1) pour évaluer cette somme.

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

      python : affectation-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 procèdera par jeux de tests en considérant par exemple la suite des puissances de 2 : \(u_0 = 1\) et \(q = 2\), pour laquelle la somme des \(4+1\) premiers entiers vaut : \(\displaystyle s = \frac{1-2^5}{1-2} = 31\).

      Le code précédent est testé avec la somme des \(n = 4+1\) premiers termes de la suite \(u_k = 2^k\). On a donc « à la main » : \(s = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 = 1+2+4+8+16 = 31\), ce que donne l'exécution du programme Python.

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