📚 Devoir de Synthèse N°1 - 2ème TI

📝 Exercice 1 : (2.5 points)

1. Donner le rôle des instructions suivantes :

Séquence 1 : Séquence 2 :
N ← 2 * aléa(0,10)
Ecrire(N)

Rôle :
..............................................................................
..............................................................................

ch ← "OIYEAUoiyeau"
C ← ch[aléa(0, long(ch)-1)]
Ecrire(C)

Rôle :
..............................................................................
..............................................................................

2. Vérification des algorithmes de génération de chaînes :

Mettre vrai si l'algorithme permet de générer une chaîne ch par n lettres majuscules aléatoires, Faux sinon.

Algorithme CHM1 Algorithme CHM2 Algorithme CHM3
DEBUT
ch ← ""
Pour i de 0 à long(ch)-1 Faire
ch ← ch+chr(aléa(65,90))
Finpour
Ecrire (ch)
FIN

Vrai/Faux : ............

DEBUT
ch ← ""
Pour i de 0 à n-1 Faire
ch ← ch+chr(aléa(ord("A"),ord("Z")))
Finpour
Ecrire (ch)
FIN

Vrai/Faux : ............

DEBUT
ch ← ""
cha ← "ABCDEFGHJKLIOUPRMNWQXSTZVY"
Pour i de 1 à n faire
ch ← ch+cha[aléa(0,long(cha)-1)]
Finpour
Ecrire(ch)
FIN

Vrai/Faux : ............

✅ Solution 1

1. Rôle des instructions :

Séquence 1 : Séquence 2 :

Rôle : Cette séquence génère un nombre aléatoire pair entre 0 et 20 inclus.

  • aléa(0,10) : génère un entier aléatoire entre 0 et 10
  • 2 * aléa(0,10) : multiplie le résultat par 2
  • Exemples possibles : 0, 2, 4, 6, ..., 20
  • Nombre total de possibilités : 11 valeurs

Rôle : Cette séquence sélectionne un caractère aléatoire dans la chaîne "OIYEAUoiyeau" et l'affiche.

  • ch ← "OIYEAUoiyeau" : initialise une chaîne de 12 caractères
  • long(ch)-1 : donne 11 (indices de 0 à 11)
  • aléa(0,11) : génère un indice aléatoire
  • ch[indice] : extrait le caractère à cet indice
  • Caractères possibles : O, I, Y, E, A, U, o, i, y, e, a, u

2. Analyse des algorithmes :

Algorithme Vrai/Faux Justification
CHM1 Faux
  • La boucle va de 0 à long(ch)-1
  • Mais ch est initialisé à "" donc long(ch) = 0
  • La boucle ne s'exécute jamais (0 à -1)
  • ch reste vide
CHM2 Vrai
  • Boucle correcte : de 0 à n-1
  • chr(aléa(ord("A"),ord("Z"))) génère une majuscule aléatoire
  • ord("A") = 65, ord("Z") = 90
  • Équivalent à chr(aléa(65,90))
CHM3 Vrai
  • Boucle correcte : de 1 à n
  • cha contient toutes les majuscules
  • aléa(0,long(cha)-1) donne un indice valide
  • On ajoute une majuscule aléatoire à ch

📝 Exercice 2 : (1.5 points)

Nombre de diviseurs d'un entier

On veut déterminer et afficher le nombre de diviseurs d'un entier n strictement positif.

Exemple : Pour n=6, le nombre de diviseurs de 6 est égal à 4. En effet, les diviseurs de 6 sont {1,2,3, 6}

Séquences d'instructions :

Séquence 1 Séquence 2 Séquence 3
C ← 0
Pour k de 1 à n Faire
Si (n mod k =0) Alors
C ← C+1
Finsi
Finpour
C ← 1
Pour k de 2 à (n div 2) Faire
Si (n mod k=0) Alors
C ← C+1
Finsi
Finpour
C ← 2
Pour k de 2 à (n -1) Faire
Si (n mod k =0) Alors
C ← C+1
Finsi
Finpour

1. Compléter pour n=12 :

Séquence Valeur de la variable C
1 ............
2 ............
3 ............

2. Séquence incorrecte :

..............................................................................
..............................................................................

✅ Solution 2

Analyse des séquences pour n=12 :

Diviseurs de 12 : {1, 2, 3, 4, 6, 12} → 6 diviseurs

Séquence Valeur de C Explication
1 6
  • Boucle de 1 à 12
  • Compte tous les diviseurs
  • Diviseurs : 1,2,3,4,6,12 → 6
  • Correct
2 4
  • C initialisé à 1 (compte déjà le diviseur 1)
  • Boucle de 2 à 6 (n div 2)
  • Manque le diviseur 12
  • Compte : 1 (initial) + 2,3,4,6 = 4
  • Incorrect - manque 12
3 6
  • C initialisé à 2 (compte déjà 1 et 12)
  • Boucle de 2 à 11
  • Ajoute les autres diviseurs : 2,3,4,6
  • Total : 2 + 4 = 6
  • Correct

Justification de la réponse à la question 2 :

La séquence 2 ne permet pas d'afficher correctement le nombre de diviseurs car :

  • Elle commence avec C = 1 (compte le diviseur 1)
  • Elle s'arrête à (n div 2) = 6
  • Elle ne vérifie pas le diviseur n lui-même (12)
  • Pour n=12, elle donne 4 au lieu de 6
  • Elle fonctionnerait seulement pour les nombres premiers

📝 Exercice 3 : (3.5 points)

Algorithme "Quoi" :

Algorithme Quoi
DEBUT
Lire(N)
ch ← convch(N)
i ← 1
Tant que i < 10 et pos(convch(i),ch) ≠ -1 Faire
i ← i+1 ❷
Fin Tantque
T ← i=10
Si T Alors
Ecrire("..............................................................") ❶
Finsi
FIN

1. Valeur de T :

N Valeur de T
123854679 ............
154383962 ............

2. Tableau de déclaration des objets :

Objet Type/Nature
N ....................................
ch ....................................
i ....................................
T ....................................

3. Rôle de l'algorithme et message :

Rôle : ..............................................................................
Message ligne ❶ : ..............................................................................

4. Transformation de la boucle :

Transformer la boucle (instruction❷) Tant que...Faire par la boucle Répéter....Jusqu'à.

..............................................................................
..............................................................................

✅ Solution 3

1. Valeur de T :

N Valeur de T Explication
123854679 Faux
  • Chiffres présents : 1,2,3,4,5,6,7,8,9
  • Il manque le chiffre 0
  • La boucle s'arrête à i=10
  • T = (10=10) = Vrai ? Non, car l'algo vérifie seulement 1-9
154383962 Faux
  • Chiffres présents : 1,2,3,4,5,6,8,9
  • Il manque les chiffres 0 et 7
  • La boucle s'arrête à i=7 (car 7 non trouvé)
  • T = (7=10) = Faux

Note : L'algorithme vérifie si tous les chiffres de 1 à 9 sont présents dans N.

2. TDO complet :

Objet Type/Nature Rôle
N Entier / Variable Nombre à analyser
ch Chaîne / Variable Chaîne conversion de N
i Entier / Variable Compteur de chiffres (1 à 9)
T Booléen / Variable Vrai si i=10 (tous chiffres 1-9 trouvés)

3. Rôle et message :

Rôle : Vérifier si le nombre N contient tous les chiffres de 1 à 9.

Message à la ligne ❶ : "Le nombre contient tous les chiffres de 1 à 9"

4. Transformation boucle Répéter :

i ← 1
Répéter
i ← i + 1
Jusqu'à (i ≥ 10) ou (pos(convch(i), ch) = -1)

📝 Problème : Conjugueur de verbes (10 points)

Contexte :

Plusieurs élèves rencontrent un problème pour conjuguer un verbe à un temps donné. Pour cela on a décidé de les aider et on veut créer une application intitulée "conjugueur" qui conjugue n'importe quel verbe à n'importe quel temps et modes.

Travail demandé :

Écrire l'algorithme (+TDO) d'un programme qui :

  1. Saisit un verbe à l'infinitif et vérifie qu'il est du premier groupe (se termine par "er")
  2. Permet de conjuguer ce verbe au futur de l'indicatif ou au présent de l'indicatif (selon le choix de l'utilisateur 1 : présent ou 2 : futur)

Rappels :

  • Tous les verbes du premier groupe se terminent par la terminaison "er" sauf le verbe "aller" qui est du troisième groupe
  • On ne traite pas les verbes du deuxième ou troisième groupe
  • Pour conjuguer un verbe au présent de l'indicatif :
    • On extrait d'abord sa base (on supprime la terminaison du verbe à l'infinitif "er")
    • À laquelle on ajoute les terminaisons suivantes : "e", "es", "e", "ons", "ez" et "ent"
  • Pour conjuguer un verbe au futur de l'indicatif :
    • Il suffit de lui ajouter les terminaisons suivantes : "ai", "as", "a", "ons", "ez" et "ont"

Exemple d'exécution :

Exemple 1 :

tapez un verbe du premier groupe: jouer
veuillez choisir le temps 1: présent ou 2: futur 1
conjugaison du verbe jouer au présent de l'indicatif
je joue
tu joues
il/elle joue
nous jouons
vous jouez
ils/elles jouent

Exemple 2 :

tapez un verbe du premier groupe: jouer
veuillez choisir le temps 1: présent ou 2: futur 2
conjugaison du verbe jouer au futur de l'indicatif
je jouerai
tu joueras
il/elle jouera
nous jouerons
vous jouerez
ils/elles joueront

À compléter :

Écrivez votre algorithme complet ici :

..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................

✅ Solution Problème : Conjugueur

Algorithme complet :

Algorithme Conjugueur
DEBUT
// Déclaration des variables
Variable verbe, base : Chaîne
Variable choix : Entier
Variable valide : Booléen
// 1. Saisie et validation du verbe
Répéter
Ecrire("Tapez un verbe du premier groupe : ")
Lire(verbe)
// Vérifier que le verbe se termine par "er" et n'est pas "aller"
Si (long(verbe) ≥ 2) et (verbe[long(verbe)-2] = "e") et (verbe[long(verbe)-1] = "r") Alors
Si verbe = "aller" Alors
Ecrire("Le verbe 'aller' n'est pas du premier groupe !")
valide ← Faux
Sinon
valide ← Vrai
FinSi
Sinon
Ecrire("Le verbe doit se terminer par 'er' !")
valide ← Faux
FinSi
Jusqu'à valide = Vrai
// 2. Extraction de la base du verbe (sans "er")
base ← ""
Pour i de 0 à long(verbe)-3 Faire
base ← base + verbe[i]
FinPour
// 3. Choix du temps de conjugaison
Répéter
Ecrire("Veuillez choisir le temps : 1: présent ou 2: futur")
Lire(choix)
Jusqu'à (choix = 1) ou (choix = 2)
// 4. Conjugaison selon le choix
Si choix = 1 Alors // Présent de l'indicatif
Ecrire("Conjugaison du verbe ", verbe, " au présent de l'indicatif")
Ecrire("je ", base, "e")
Ecrire("tu ", base, "es")
Ecrire("il/elle ", base, "e")
Ecrire("nous ", base, "ons")
Ecrire("vous ", base, "ez")
Ecrire("ils/elles ", base, "ent")
Sinon // Futur de l'indicatif
Ecrire("Conjugaison du verbe ", verbe, " au futur de l'indicatif")
Ecrire("je ", verbe, "ai")
Ecrire("tu ", verbe, "as")
Ecrire("il/elle ", verbe, "a")
Ecrire("nous ", verbe, "ons")
Ecrire("vous ", verbe, "ez")
Ecrire("ils/elles ", verbe, "ont")
FinSi
FIN

Tableau de Déclaration des Objets (TDO) :

Objet Type/Nature Rôle
verbe Chaîne Verbe à conjuguer (entré par l'utilisateur)
base Chaîne Base du verbe (sans terminaison "er")
choix Entier Choix du temps (1: présent, 2: futur)
valide Booléen Indique si le verbe est valide
i Entier Compteur de boucle

Explications importantes :

  1. Validation du verbe :
    • Vérifie que le verbe a au moins 2 caractères
    • Vérifie que les deux derniers caractères sont "e" et "r"
    • Exclut spécifiquement le verbe "aller" qui est du 3ème groupe
  2. Extraction de la base :
    • La base = verbe sans les 2 derniers caractères ("er")
    • Exemple : "jouer" → base = "jou"
    • Exemple : "parler" → base = "parl"
  3. Conjugaison au présent :
    • On ajoute à la base : "e", "es", "e", "ons", "ez", "ent"
    • Exemple : "jou" + "e" = "joue"
  4. Conjugaison au futur :
    • On ajoute au verbe entier : "ai", "as", "a", "ons", "ez", "ont"
    • Exemple : "jouer" + "ai" = "jouerai"

Exemples d'exécution :

Exemple 1 : verbe "parler" au présent

Tapez un verbe du premier groupe : parler
Veuillez choisir le temps : 1: présent ou 2: futur 1
Conjugaison du verbe parler au présent de l'indicatif
je parle
tu parles
il/elle parle
nous parlons
vous parlez
ils/elles parlent

Exemple 2 : verbe "manger" au futur

Tapez un verbe du premier groupe : manger
Veuillez choisir le temps : 1: présent ou 2: futur 2
Conjugaison du verbe manger au futur de l'indicatif
je mangerai
tu mangeras
il/elle mangera
nous mangerons
vous mangerez
ils/elles mangeront

Exemple 3 : verbe invalide

Tapez un verbe du premier groupe : finir
Le verbe doit se terminer par 'er' !
Tapez un verbe du premier groupe : aller
Le verbe 'aller' n'est pas du premier groupe !
Tapez un verbe du premier groupe : jouer
...