Correction Prototype théorique Bac 2022 Proposé par Ben Moallem Salem, Professeur Informatique Sfax1 Exercice 1 (2 points) 1) Compléter le tableau ci-dessous par la valeur de la variable c après exécution de chaque séquence, et ce pour n = 4. Séquence Valeur de la variable c 1 3 2 2 3 3 2) Donner le numéro de la séquence qui ne permet pas d’afficher le nombre de diviseurs. Justifier votre réponse. La séquence n°2 ne permet pas d’afficher le nombre de diviseurs car le compteur k va de 2 à (n div 2) donc il a éliminé le 1 et n alors que l’objet de comptage est initialisé seulement à 1 (c 1). Exercice 2 : (3 points) 1) Compléter la séquence algorithmique présentée ci-dessous afin de vérifier l’existence d’un nom donné NOM dans un tableau T non vide. Algorithme recherche Début Ecrire ("Donner le nom à chercher : ") Lire (NOM) Existe Faux i0 Répéter Si (T[i] = NOM) alors Existe Vrai Sinon i i +1 FinSi Jusqu’à (Existe) ou (i = N-1) Si (Existe) alors Ecrire ("Le nom recherché existe dans ce tableau : ") Sinon Ecrire ("Le nom recherché n’existe pas dans ce tableau : ") FinSi Fin 2) Maintenant, le médecin veut chercher les numéros des fiches de ses patients ayant le même nom. Modifier la séquence algorithmique présentée ci-dessus afin d’afficher ces numéros. Page 1 sur 6 Algorithme recherche Début Ecrire ("Donner le nom à chercher : ") Lire (NOM) Existe Faux pour i de 0 à N-1 faire Si (T[i] = NOM) alors Ecrire (i) Existe Vrai FinSi Fin pour Si Non (Existe) alors Ecrire ("Le nom recherché n’existe pas dans ce tableau : ") FinSi Fin Exercice 3 : (5 points) Algorithme Covid19 Début Ecrire ("donner le nombre de jours"), lire(N) Ecrire ("donner nombre de personnes initialement contaminées"), lire(x) Ecrire ("le nombre total de personnes contaminées est", Arrondi (somme(x,N))) Fin T.D.O.G. Objet Type/Nature N entier x Entier Somme Fonction/Réel Fonction Somme(x :entier , N :entier) : Réel Début T.D.O.L. s0 Objet pour i de 0 à N faire i s s + Puissance(x,i) / Fact(i) s Fin pour Puissance retourner s Fact Fin Fonction Fact(x :entier) : entier Début f1 pour i de 2 à x faire ff*i Fin pour retourner f Fin Fonction Puissance(x, y :entier) : entier Début p1 pour i de 0 à y-1 faire pp*x Fin pour retourner p Type/Nature entier Entier Fonction/entier Fonction/entier T.D.O.L. Objet Type/Nature f entier i entier T.D.O.L. Objet Type/Nature p entier i entier Page 2 sur 6 Fin Problème : (10 points) Correction : Procedure Cryptage Procedure Saisie1 (@ N) Procedure Traduire (ch, FR, ENG, n) Procedure Saisie2 (@ ch) Remplir (@ FR, @ ENG , n) Fonction Fonction Verif1 (ch) : booléen Verif2 (ch) : booléen 1. Algorithme du PP : Algorithme Carnet Début Saisie1 (N) Remplir (FR,ENG,n) Saisie2 (ch) Traduire (ch,FR,ENG,n) Fin T.D.N.T Type TAB = Tableau de Nmax chaînes T.D.O Globaux Objet 2. Les algorithmes des modules envisagés : N Entier Nmax Constante = 100 FR TAB ENG TAB ch chaîne Saisie1 Procédure Remplir Procédure Saisie2 Procédure Traduire Procédure Procédure Saisie (@ N: entier) Début Répéter Ecrire (“Donner la taille du tableau ”) Lire(N) Jusqu’à (2 ≤ N ≤ Nmax) Fin Procédure Remplir (@ FR : TAB , @ ENG : TAB , N : entier) Début Pour i de 0 à N-1 faire Répéter Ecrire ("FR[" + convch(i) + "]=") T.D.O Locaux Lire (FR[i]) Objet Type/Nature Jusqu’à (verif1 (FR[i])) i entier Répéter Verif1 Fonction/Booléen Ecrire ("ENG[" + convch(i) + "]=") Lire (ENG[i]) Jusqu’à (verif1 (ENG[i])) Fin pour Page 3 sur 6 Type/Nature Fin Fonction Verif1 (ch : chaîne) : Booléen Début i -1 Répéter i i +1 T.D.O Locaux Objet Type/Nature i Entier Jusqu’à Non ("A" ≤ Majus(ch[i])) ≤ "Z") ou (i = long(ch)-1) Retourner ("A" ≤ Majus(ch[i])) ≤ "Z") et (1 ≤ long(ch) ≤ 15) Fin Procédure Saisie2 (@ ch : chaîne) Début Répéter Ecrire (“Saisir la phrase à traduire”), Lire(ch) Jusqu’à (Verif2 (ch)) Fin T.D.O Locaux Objet Type/Nature Verif2 Fonction/Booléen Fonction Verif2 (ch : chaîne) : Booléen Début T.D.O Locaux i -1 Objet Type/Nature Répéter i Entier i i +1 Jusqu’à Non ("A" ≤ Majus(ch[i])) ≤ "Z" ou ch[i] = " ") ou (i = long(ch)-1) Retourner ("A" ≤ Majus(ch[i])) ≤ "Z" ou ch[i] = " ") Fin Procédure Traduire (ch : chaîne, FR : TAB , ENG : TAB , N : entier) Début res "" nb=0 ch ch + " " T.D.O Locaux Répéter Objet Type/Nature p pos (" ",ch) res Chaîne ch1 SousChaîne (ch, 0, p+1) nb Entier x Recherche (FR, n, ch1) p Entier Si x ≠ -1 alors ch1 Chaîne res res + ENG[x] + " " x Entier Sinon Recherche Fonction/entier res res + "{" + ch1 + "}" + " " nb nb + 1 FinSi Effacer (ch, 0, p+1) Jusqu’à (ch = "") Si nb = 0 alors Ecrire (res , " : Traduction totale") Sinon Ecrire (res, ": Traduction partielle, ", nb, " mot(s) non traduit(s) ") Fin Si Fin Page 4 sur 6 Fonction Recherche (T : TAB , N : entier, ch : chaîne) : entier Début i -1 Répéter T.D.O Locaux ii+1 Objet Type/Nature Jusqu’à (T[i] = ch) ou (i = N-1) i Entier Si T[i] = ch alors pi Sinon p -1 FinSi Retourner p Fin Python : (n’est pas demandé dans l’examen théorique) Page 5 sur 6 Page 6 sur 6