Devoir de synthèse N°1 Lycée Beni Hassen Classe : 3 SI Matière : Algorithmique et Programmation Année scolaire: 14/15 Date : 09/12/2014 Prof : Bahri Aïda Durée : 2H Nom & Prénom :……………………….......................................... Note : …………………………. / 20 N.B : le sujet comporte 4 pages qui doivent être remises à la fin de l’épreuve Exercice N°1 : (3 pts) Soit le tableau PAT qui donne le nombre de patients ayant visités un certain cabinet médical par mois : 292 Janvier 300 231 182 Février Mars Avril 169 Mai 143 151 Juin Juillet 128 156 169 192 251 Aout Septembre Octobre Novembre Décembre Questions : 1. En utilisant le type scalaire énuméré, déclarer en Pascal un type mois contenant les mois de l’année : ………………………………………………………………………………………………… ………………………………………………………………………………………………… 2. Soit TAB le type du tableau PAT, donner une déclaration en Pascal du type TAB : ………………………………………………………………………………………………… ………………………………………………………………………………………………… 3. Compléter le tableau ci-dessous en mettant une croix dans la colonne valide ou dans la colonne non valide pour chaque instruction. Justifier votre réponse pour les instructions non valides. Déclaration et instruction Valide Non valide Writeln (PAT[Mai]) ; i :string ; for i := janvier to decembre do PAT[i]:=PAT[i]+1; M:mois; Readln (M); J:Mois; J:=SUCC(J); 1 Justification Exercice N°2 : (3 pts) Soit la fonction Pascal suivante : Function Essai (ch :string ;nb,p :integer) : ……………….. Var i:integer; r:string; begin r:=’ ’; For i:=1 to length(ch) do if i in [p..p+nb-1] then r := r + ch[i]; Essai := r; end; Questions: 1. Compléter les pointillés par le type de la fonction Essai. 2. Donner le résultat de cette function pour les paramètres suivants : Ch = ‘Protocole’ p = 3 et nb = 4 ………………………………………………………………………………………….. 3. Donner une fonction prédéfinie en Pascal qui donne le même résultat que la fonction Essai. ………………………………………………………………………………………….. 4. Les paramètres ch, nb et p sont dits des paramètres : Effectifs Sélectifs Formels 5. Transformer la fonction en procédure : ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. Exercice N°3 : (3 pts) En classe, un enseignant a donné un exercice permettant de vérifier si un triplet de réels(a,b,c) est dit triplet de Pythagore c'est-à-dire a2 + b2 = c2. Un élève propose une solution formée par les deux algorithmes suivants : 2 L’algorithme du programme appelant L’algorithme, sans entête, de la fonction Pythagore 0/ Début Prg_Appelant 1/ Lire(n1) 2/ Lire(n2) 3/ Lire(n3) 4/ Si R = vrai alors Ecrire(n1,’,’,n2,’,’,n3,’forment un triplet de pythagore’) Fin Si 5/ Fin Prg_Appelant 0/ 1/Si carré(a) + carré(b) = carré(c) alors Pythagore ← Vrai Sinon Pythagore ← Faux Fin Si 2/ Fin Pythagore En passant à la correction de la proposition de l’élève, l’enseignant vous demande de répondre aux questions suivantes : 1°) Pour chacune des propositions suivantes mettre dans la case correspondante la réponse Vrai si l’en-tête de la fonction Pythagore est correcte ou la réponse Faux dans le cas contraire. En-tête proposée pour la définition de la fonction Pythagore Fonction Pythagore (a,b,c : entier) : booléen Fonction Pythagore (n1,n2,n3 : réel) : booléen Fonction Pythagore (a,b,c : réel) : booléen Fonction Pythagore (a,b,c : réel) : réel Réponse 2°) L’élève a oublié l’appel de la fonction Pythagore dans l’algorithme du programme appelant, réécrire l’algorithme Prg_Appelant en ajoutant à l’endroit convenable l’appel adéquat de cette fonction : ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… ………………………………………………………………………………………………… 3°) Améliorer l’instruction n° 1/ de la fonction Pythagore en remplaçant la structure conditionnelle par une instruction simple : ………………………………………………………………………………………………… ………………………………………………………………………………………………… 3 Problème (11 pts) Soit T un tableau de N chaines de caractères non vides, de taille maximale 5 et dont le premier caractère est une lettre alphabétique. On se propose d’écrire un programme permettant de réaliser le traitement suivant : 1. 2. 3. 4. Remplir le tableau T par N chaînes (2 <= N <= 30). Eliminer de chaque élément du tableau tous les caractères non alphabétiques. Convertir toutes les chaînes en majuscules. Afficher toutes les chaînes palindromes. NB : une chaîne est dite palindrome si elle se lit de la même façon de gauche à droite et de droite à gauche. Exemples : AZZA, RADAR, AA, Z,… Exemple : N= 5 et T= B5 ?ac Z15@2 M200#a Az9%ZA Le tableau après l’étape 2 contiendra les chaînes suivantes : Bac Z Radar Ma AzZA Le tableau après l’étape 3 contiendra les chaînes suivantes : BAC Z RADAR MA AZZA Le programme affichera : Z RADAR Ra8d9ar AZZA Questions : 1°) Analyser le problème en le décomposant en modules. 2°) En déduire l’algorithme principal. 3°) Analyser chacun des modules envisagés. Bon Travail 4