TD — Séance 1 — Variables et affectation
Nommer, ranger, calculer, lire et écrire
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\).
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 ba mod ba / bb div ab mod aa - b × 3(a - b) × 3a + b div 2(a + b) / 2a mod 2x × ba div (b - 4)Pour les expressions
a - b × 3eta + 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\).
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 / 7r ← n div 2n ← rok ← "faux"nom ← "Kaolack"n ← n × 2 + 1r ← n
Exercice 2 : affectations successives
Dérouler l’algorithme pour l’entrée 7 dans le tableau ci-dessous.
Pas Ligne Instruction pqrÉcrit Combien de fois
preçoit-elle une valeur ? Quelles valeurs depsont perdues, et à quels pas ?On échange les lignes 8 et 9. Qu’écrit l’algorithme pour 7 ? Expliquer la différence sans refaire toute la trace.
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
FinLes entrées au clavier sont
Khadim,4et18000. Écrire, au caractère près, les lignes écrites par l’algorithme.Ligne écrite Combien de pas compte la trace ? Lesquels ne modifient aucune variable ?
Pourquoi
kiloest-elle déclarée réelle, alors que le prix du kilo tombe juste ?L’utilisateur tape
18000,0pour le prix du sac. Que se passe-t-il, et à quelle ligne ?kiloest 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.
Dérouler l’algorithme pour les entrées 4, 9 et 6.
Pas Ligne Instruction abcÉcrit Qu’aurait dû écrire l’algorithme ? Quelle valeur est perdue, et à quel pas ?
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.
- Que se passe-t-il pour les entrées 1500 et 2000 ? Corriger l’algorithme et donner ce qu’il écrit.
- Qu’écrit l’algorithme corrigé pour 1500 et 2001 ? La moyenne est-elle juste ? Corriger le calcul de
moy. - Un étudiant propose d’écrire la ligne 8
total = total + a1, et affirme quetotal\(\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.
Écrire un algorithme qui lit un nombre de jours
nbjet écrit le nombre de semaines entières et de jours restants, sous la forme123 jours : 17 sem. 4 j. Numéroter les lignes ; une instruction par ligne.Algorithme :
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\)).
Écrire un algorithme qui lit \(n\), calcule son chiffre des centaines
c, des dizainesdet des unitésupar div et mod, puis écrit leur somme sous la formesomme des chiffres : 13.Algorithme :
Tracer l’algorithme pour 472, puis pour le cas limite 100.
Pas Ligne Instruction Écrit Pas Ligne Instruction Écrit 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
Dérouler l’algorithme pour les entrées 14 et 9.
Pas Ligne Instruction abÉcrit Notant \(a_0\) et \(b_0\) les valeurs lues, exprimer
aetbaprès chacune des lignes 7, 8 et 9. Montrer que l’algorithme échange les valeurs de deux entiers quelconques.On déclare
a, b : réelet l’on tape0,1puis0,2. Le résultat écrit est-il0,2 0,1? Expliquer, à partir de l’écriture des réels en machine (CM, § 4.2).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