TD — Séance 2 — Les conditions
Décider, combiner, choisir entre plusieurs cas
Dérouler à la main des Si à un et deux cas, des conditions composées, des Si imbriqués, des chaînes SinonSi et un Selon ; compter les tests évalués ; repérer et corriger une condition fausse ; puis écrire et vérifier ses propres décisions, 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 affectée), le résultat du test quand la ligne en contient un, et ce qu’écrit Écrire ; un arrêt sur erreur s’écrit « arrêt » avec sa cause. Les règles de tarif et les seuils des énoncés sont illustratifs.
Exercice 1 : une décision à un cas
À l’aéroport Blaise-Diagne, une compagnie accepte un bagage de 23 kg en soute ; chaque kilogramme au-delà coûte 2000 F. Le poids est un entier.
Dérouler l’algorithme pour l’entrée 27 dans le tableau ci-dessous.
Pas Ligne Instruction poidssuppTest Écrit Qu’écrit l’algorithme pour 19, puis pour 23 ? Quelles lignes sont exécutées dans ces deux cas ?
Réécrire l’algorithme avec un Si … Sinon, sans la ligne 2. Vérifier par une trace l’entrée 23.
La ligne 3 devient Si
poids\(\geq\)23Alors. Qu’écrit l’algorithme pour 23 ? Quelles lignes exécute-t-il ? Une vérification qui ne regarde que ce qui est écrit peut-elle détecter ce changement ?
Exercice 2 : conditions composées et tables de vérité
Une fondation de Saint-Louis attribue une bourse selon la moyenne moy sur 20 et l’âge age du candidat.
On note \(p\), \(q\), \(r\) trois conditions. Compléter leur table de vérité.
\(p\) \(q\) \(r\) \(p\) ET \(q\) (\(p\) ET \(q\)) OU \(r\) \(p\) ET (\(q\) OU \(r\)) vrai vrai vrai vrai vrai faux vrai faux vrai vrai faux faux faux vrai vrai faux vrai faux faux faux vrai faux faux faux Pour quelles lignes les deux dernières colonnes diffèrent-elles ?
Récrire la ligne 3 avec toutes ses parenthèses, en suivant les priorités du cours.
Pour les entrées (13, 24), (13, 27), (17, 30) et (11, 20), donner la valeur de chaque comparaison, du ET, de
oket ce qu’écrit l’algorithme.( moy,age)moy ≥ 12age ≤ 25ET moy ≥ 16okÉcrit (13, 24) (13, 27) (17, 30) (11, 20) Écrire, sans NON et sans la variable
ok, la condition d’un dossier refusé, puis l’algorithme qui la teste à la ligne 3. Le tracer pour (17, 30).On écrit la ligne 3
ok\(\leftarrow\)moy ≥ 12 ET (age ≤ 25 OU moy ≥ 16). Existe-t-il une entrée pour laquelle l’algorithme écrit autre chose qu’avec la ligne de départ ? Justifier à l’aide de la question (a).
Exercice 3 : Si imbriqués et chaîne SinonSi
À Kaolack, la pluie d’une journée, en millimètres (un entier \(p\geq0\)), est classée en quatre catégories.
Dérouler l’algorithme pour l’entrée 10.
Pas Ligne Instruction pTest Écrit Réécrire l’algorithme avec une chaîne SinonSi et un seul FinSi.
Réécrire la chaîne en testant d’abord la catégorie « forte », puis « modérée », puis « faible », avec les opérateurs \(\geq\) et \(>\).
Pour 0, 4, 10, 30 et 45, donner ce qu’écrit l’algorithme, le nombre de tests évalués par l’algorithme de départ et par la chaîne de la question (c), puis ce qu’écrit l’algorithme de départ si sa ligne 5 devient Si
p\(\leq\)10Alors.pÉcrit Tests (l. 2 à 13) Tests (ordre inverse) Écrit avec \(\leq\) 10 0 4 10 30 45
Exercice 4 : trouver et corriger l’erreur
Partie A. L’algorithme suivant doit vérifier une heure saisie en heures h (de 0 à 23) et minutes mn (de 0 à 59).
Dérouler l’algorithme pour l’entrée 25 puis 70.
Pas Ligne Instruction hmnTest Écrit Récrire la condition de la ligne 3 avec ses parenthèses. Montrer qu’elle est vraie pour toute entrée.
Corriger la ligne 3. Qu’écrit l’algorithme corrigé pour (25, 70), (23, 59), (24, 0) et (0, 0) ?
Partie B. Une compagnie de bus de Thiès transporte gratuitement les enfants de moins de 5 ans et applique un tarif jeune avant 18 ans.
Qu’écrit l’algorithme pour 3, 12 et 18 ? Comparer au résultat attendu.
ageÉcrit Résultat attendu 3 12 18 Quelle ligne n’est jamais exécutée ? Pourquoi ? Corriger l’algorithme et le tracer pour le cas limite 5.
Un étudiant écrit la ligne 2 Si
age\(\leftarrow\)18Alors. Que lui répondre ?
Exercice 5 : conception
Partie A. Au foirail de Dakar, avant la Tabaski, Amadou relève les prix de trois moutons.
Écrire un algorithme qui lit les trois prix
p1,p2,p3et écrit le plus bas, sans boucle, avec une variablemqui retient le plus bas des prix déjà examinés. Numéroter les lignes ; une instruction par ligne.Algorithme :
Tracer l’algorithme pour 125000, 95000 et 110000. Les colonnes de variables sont à nommer.
Pas Ligne Instruction Test Écrit Tracer le cas limite de deux prix égaux : 90000, 140000 et 90000. Le résultat change-t-il si les comparaisons sont écrites avec \(\leq\) ?
Pas Ligne Instruction Test Écrit
Partie B. Le nombre de jours d’un mois dépend du mois et, pour février, de l’année : 29 jours si l’année est bissextile, 28 sinon.
Écrire un algorithme qui lit
mois(de 1 à 12) etan, et écrit le nombre de jours du mois, à l’aide d’un Selon.Algorithme :
Tracer l’algorithme pour février 2024, puis pour le cas limite février 2100.
Pas Ligne Instruction Test Écrit Pas Ligne Instruction Test Écrit Combien de lignes Cas sont examinées, et combien de comparaisons de
moissont évaluées, pour avril, pour février, pour janvier ?
Exercice 6 : comparer deux dates
Pour départager deux candidats, on compare leurs dates de naissance \((j_1, m_1, a_1)\) et \((j_2, m_2, a_2)\) : une date est antérieure à une autre si son année est plus petite, ou si les années sont égales et son mois plus petit, ou si années et mois sont égaux et son jour plus petit.
Écrire un algorithme qui lit les six entiers, calcule une variable booléenne
avantpar une seule condition composée et une variable booléenneegal, puis écritdate 1 avant date 2,même dateoudate 2 avant date 1.Algorithme :
Tracer l’algorithme pour (14, 7, 2003) et (3, 11, 2003).
Pas Ligne Instruction Test Écrit Tracer le cas limite de deux dates identiques, (5, 3, 2001) et (5, 3, 2001).
Pas Ligne Instruction Test Écrit Combien de comparaisons la condition de
avantet celle deegalévaluent-elles, quelles que soient les dates ? Écrire une version deavantpar une chaîne SinonSi qui compare d’abord les années, puis les mois, puis les jours, et compléter le tableau.Date 1 Date 2 Écrit Comparaisons, version (a) Comparaisons, version (d) 14/7/2003 3/11/2003 5/3/2001 5/3/2001 20/1/2004 20/1/2002
Pour cette séance
Le cours
Les slides