TD — Séance 1 — Variables et affectation

Nommer, ranger, calculer, lire et écrire

TD de la séance 1 d’Algorithmique : nommer, ranger, calculer, lire et écrire.
Auteur

Dr. El Hadji Bassirou TOURÉ · DMI/FST/UCAD

ImportantObjectif

Donner la valeur et le type d’une expression ; dire si une affectation est acceptée ; dérouler des affectations successives ; prévoir au caractère près ce qu’écrit Écrire ; repérer et corriger une variable sans valeur, une valeur perdue, une division mal choisie ; puis écrire et vérifier ses propres algorithmes, sur un cas ordinaire et sur un cas limite. Une trace se remplit comme dans le CM : une ligne par pas, le numéro de la ligne exécutée, l’instruction, l’état des variables après le pas (mettre en gras la variable qui reçoit une valeur ; laisser vide une variable sans valeur), et ce qu’écrit Écrire ; un arrêt sur erreur s’écrit « arrêt » avec sa cause. Les algorithmes demandés s’écrivent sous la forme complète, de l’en-tête à Fin. Les prix et les durées des énoncés sont illustratifs.

Exercice 1 : valeurs, types et affectations

Partie A. Les variables a et b sont entières, avec \(a=23\) et \(b=4\) ; la variable x est réelle, avec \(x=2{,}5\).

  1. Pour chaque expression, donner la valeur qu’écrirait Écrire, telle qu’elle serait écrite, et son type ; écrire « arrêt » avec sa cause si l’expression ne peut pas être calculée.

    Expression Valeur Type
    a div b
    a mod b
    a / b
    b div a
    b mod a
    a - b × 3
    (a - b) × 3
    a + b div 2
    (a + b) / 2
    a mod 2
    x × b
    a div (b - 4)
  2. Pour les expressions a - b × 3 et a + b div 2, ajouter les parenthèses qui montrent l’ordre du calcul.

Partie B. Un algorithme déclare n : entier, r : réel, ok : booléen et nom : chaîne ; au moment de l’affectation, \(n=7\) et \(r=2{,}5\).

  1. Pour chaque affectation, prise seule, dire si elle est acceptée ; si oui, donner la valeur que Écrire écrirait ensuite pour la variable affectée ; sinon, la cause de l’arrêt.

    Affectation Acceptée ? Valeur écrite ou cause de l’arrêt
    n ← 7 / 7
    r ← n div 2
    n ← r
    ok ← "faux"
    nom ← "Kaolack"
    n ← n × 2 + 1
    r ← n

Exercice 2 : affectations successives

Algorithme Calcul
Variables
  p, q, r : entier
Début
  Lire p
  q ← p + 5
  r ← q × 2 - p
  p ← p + q
  q ← r - q
  r ← p mod q
  p ← r × r
  Écrire p, q, r
Fin
  1. Dérouler l’algorithme pour l’entrée 7 dans le tableau ci-dessous.

    Pas Ligne Instruction p q r Écrit
  2. Combien de fois p reçoit-elle une valeur ? Quelles valeurs de p sont perdues, et à quels pas ?

  3. On échange les lignes 8 et 9. Qu’écrit l’algorithme pour 7 ? Expliquer la différence sans refaire toute la trace.

  4. Qu’écrit l’algorithme de départ pour l’entrée 0 ?

Exercice 3 : Lire et Écrire

Au marché central de Kaolack, Khadim achète des sacs de riz de 50 kg.

Algorithme Recu
Variables
  nom : chaîne
  nb, pu, total : entier
  kilo : réel
  livre : booléen
Début
  Lire nom
  Lire nb
  Lire pu
  total ← nb × pu
  kilo ← total / (nb × 50)
  livre ← vrai
  Écrire nom, ":", nb, "sacs de", pu, "F"
  Écrire "total :", total, "F"
  Écrire "prix du kilo :", kilo
  Écrire "livré :", livre
Fin
  1. Les entrées au clavier sont Khadim, 4 et 18000. Écrire, au caractère près, les lignes écrites par l’algorithme.

    Ligne écrite
  2. Combien de pas compte la trace ? Lesquels ne modifient aucune variable ?

  3. Pourquoi kilo est-elle déclarée réelle, alors que le prix du kilo tombe juste ?

  4. L’utilisateur tape 18000,0 pour le prix du sac. Que se passe-t-il, et à quelle ligne ?

  5. kilo est déclarée entier. Que se passe-t-il ? Quelle ligne 12 accepterait une variable entière, et qu’écrirait alors la ligne 16 ?

Exercice 4 : trouver et corriger l’erreur

Partie A. Trois membres d’une tontine de Thiès tournent : a doit recevoir la valeur de b, b celle de c, et c l’ancienne valeur de a.

Algorithme Rotation
Variables
  a, b, c : entier
Début
  Lire a
  Lire b
  Lire c
  a ← b
  b ← c
  c ← a
  Écrire a, b, c
Fin
  1. Dérouler l’algorithme pour les entrées 4, 9 et 6.

    Pas Ligne Instruction a b c Écrit
  2. Qu’aurait dû écrire l’algorithme ? Quelle valeur est perdue, et à quel pas ?

  3. Corriger l’algorithme avec une seule variable de plus, et tracer la version corrigée pour les mêmes entrées.

Partie B. L’algorithme suivant doit écrire le total de deux achats et leur moyenne.

Algorithme Courses
Variables
  a1, a2, total : entier
  moy : réel
Début
  Lire a1
  Lire a2
  total ← total + a1
  total ← total + a2
  moy ← total div 2
  Écrire total, moy
Fin
  1. Que se passe-t-il pour les entrées 1500 et 2000 ? Corriger l’algorithme et donner ce qu’il écrit.
  2. Qu’écrit l’algorithme corrigé pour 1500 et 2001 ? La moyenne est-elle juste ? Corriger le calcul de moy.
  3. Un étudiant propose d’écrire la ligne 8 total = total + a1, et affirme que total \(\leftarrow\) total + a1 « ne peut pas être vrai ». Que lui répondre ?

Exercice 5 : conception

Partie A. À Saint-Louis, Awa relève la durée d’un chantier en jours.

  1. Écrire un algorithme qui lit un nombre de jours nbj et écrit le nombre de semaines entières et de jours restants, sous la forme 123 jours : 17 sem. 4 j. Numéroter les lignes ; une instruction par ligne.

    Algorithme :

  2. Tracer l’algorithme pour 123, puis pour le cas limite 7. Les colonnes de variables sont à nommer.

    Pas Ligne Instruction Écrit
    Pas Ligne Instruction Écrit

Partie B. Un entier \(n\) a trois chiffres (\(100\leq n\leq999\)).

  1. Écrire un algorithme qui lit \(n\), calcule son chiffre des centaines c, des dizaines d et des unités u par div et mod, puis écrit leur somme sous la forme somme des chiffres : 13.

    Algorithme :

  2. Tracer l’algorithme pour 472, puis pour le cas limite 100.

    Pas Ligne Instruction Écrit
    Pas Ligne Instruction Écrit
  3. Un étudiant calcule le chiffre des dizaines par d \(\leftarrow\) n mod 100. Qu’écrit son algorithme pour 472 ? Pour quels entiers de trois chiffres donne-t-il pourtant le bon résultat ?

Exercice 6 : échanger sans variable temporaire

Algorithme EchangeSansTmp
Variables
  a, b : entier
Début
  Lire a
  Lire b
  a ← a + b
  b ← a - b
  a ← a - b
  Écrire a, b
Fin
  1. Dérouler l’algorithme pour les entrées 14 et 9.

    Pas Ligne Instruction a b Écrit
  2. Notant \(a_0\) et \(b_0\) les valeurs lues, exprimer a et b après chacune des lignes 7, 8 et 9. Montrer que l’algorithme échange les valeurs de deux entiers quelconques.

  3. On déclare a, b : réel et l’on tape 0,1 puis 0,2. Le résultat écrit est-il 0,2 0,1 ? Expliquer, à partir de l’écriture des réels en machine (CM, § 4.2).

  4. Comparer cet algorithme à l’échange par une variable temporaire : nombre de variables, nombre d’affectations, nombre d’opérations, types pour lesquels chacun fonctionne.

Pour cette séance

Le cours

Les slides

Retour au sommet