Correction_Examen_4SC_2019 – Proposée par : Karim Rjab
1
Exercice 1 :_________________________4 pts_______________________
1. a).
F F F V
b).
F F
V F
F F
F F
NB : Exemple :
C2 ="bnb" **** C1="b" ==> C3=2 C2 ="bnb" **** C1="B" ==> C3=2 C2 ="122" **** C1="2" ==> C3=2
Quel est le rôle correcte parmi les 4 propositions dans l’exercice ? Donc, on peut avoir une réponse comme ceci : F F F F 2. a). La séquence qui permet de calculer de déterminer le terme Un avec n ≥ 0 est :
V F V V
NB : On a plus qu’une seule réponse correcte. Alors, on doit dire ‘’La (Les) séquence(s)’’ ! Demander une seule réponse correcte et il y’on a plusieurs correctes. A vous de commenter !
b).
DEF FN Suite ( n : Réel ) : Réel DEF FN Suite ( n : Entier ) : Entier
F F
DEF FN Suite ( n : Entier ) : Réel DEF FN Suite ( n : Réel ) : Entier
V F
NB : On ne peut pas utiliser DEF FN Suite (n : Réel) : Réel car N doit être de type scalaire donc Entier
Exercice 2 :______________________3 pts__________________________
1) Le tableau est :
x nb
5403 4
176 3
3 1
2) Cet algorithme permet de retourner le nombre des chiffres de l’entier x.
3) Convch(x , ch) , nb Long(ch)
NB : En posant la question, on dit en utilisant des fonctions ou des procédures prédéfinies c’est mieux. A vous de commenter !!!
Devoirs et examens sur : www.Kiteb.net
Correction_Examen_4SC_2019 – Proposée par : Karim Rjab
2
Problème :_______________________13 pts__________________________
1. Analyse du programme principale : Nom = Probeme TDNT :
Résultat= Proc Afficher(Ident,Date,Code,n) Proc Generer(Date,Code,n)
Proc Stocker(Ident,Date,n) Proc saisir(n)
Fin Probleme // Quel est l’utilité du tableau Ident dans ce problème ? TDOG :
2. Procédure Saisir : // Saisir le nombre des cartes 0- DEF PROC Saisir( var n : Entier)
1- Répéter
Ecrire(‘’ Le nombre des cartes : ‘’) , Lire(n) Jusu’à ( n dans [3..50] )
2- Fin Saisir
3. Procédure Stocker : // Remplir les tableaux Ident et Date 0- DEF PROC Stocker (Var Ident , Code : Tab1 ; n : Entier) 1- Pour i de 1 à n faire
Répéter
Ecrire(‘’ l’identifiant de la carte : ‘’) , Lire(Ident[i]) Jusu’à ( FN ValideCarte(Ident[i]) = Vrai )
Répéter
Ecrire(‘’ Taper la date : ‘’) , Lire(Date[i]) Jusu’à ( FN ValideDate(Date[i]) = Vrai )
Fin Pour
2- Fin Stocker
TDOL : Stocker
Obj T/N Rôle
i
ValideCarte ValideDate
Entier Fonction Fonction
Compteur
Vérifier l’identifiant : des chiffres et taille = 8 Vérifier la date : j/M avec j (1..31) et M (1..12)
4. Fonction ValideCarte :
0- DEF FN valideCarte (ch: chaîne): booléen 1- J 1
2- Tant que(ch[j] dans [''0''..''9''])et(j<=length(ch)) faire j j + 1
Fin Tant que
3- valideCarte ( j > long(ch) ) et ( long(ch) = 8 ) 4- Fin ValideCarte
TDOL : ValideCarte
Obj T/N Rôle
j Entier Compteur
Type
Tab1 = tableau de 50 chaînes Tab2 = tableau de 50 entiers
Objet T/N Rôle
n Ident Date Code Saisir Stocker Generer Afficher
Chaîne Chaîne Proc Proc Proc Proc Proc Proc
Nombre des cartes
Tableau des identifiants Tableau des dates
Tableau des codes
Saisir le nombre des cartes
Stocker les identifiants et les dates Générer les codes des cartes
Afficher les informations des cartes
Devoirs et examens sur : www.Kiteb.net
Correction_Examen_4SC_2019 – Proposée par : Karim Rjab
3 5. Fonction ValideDate :
0- DEF FN valideDate (ch: chaîne): booléen 1- Si (Pos(‘’/’’,ch) <> 0 ) Alors
Valeur( Sous-chaîne(ch , 1 , Pos(‘’/’’,ch)-1) , J , e )
Y Sous-chaîne(ch , Pos(‘’/’’,ch)+1 , long(ch) - Pos(‘’/’’,ch)) Valeur( Y, M, e)
valideDate ( J dans [1..31] ) et ( M dans [1..12] ) Sinon valideDate Faux
Fin Si
2- Fin ValideDate TDOL : ValideDate
Obj T/N Rôle
J M Y e
Entier Entier Chaîne Entier
Jour Mois
Partie Mois en chaîne
Erreur si la conversion est fausse
6. Procédure Afficher : // Afficher les informations complètes des cartes 0- DEF PROC Afficher(Ident, Date : Tab1 ; Code : Tab2 ; n : Entier) 1- Pour i de 1 à n faire
Ecrire(Ident[i],‘’ : ‘’,Date[i],‘’ : ‘’,Code[i]) Fin Pour
2- Fin Afficher
TDOL : Afficher
Obj T/N Rôle
i Entier Compteur
7. Procédure Generer : // Générer le tableau Code à partir du tableau Date 0- DEF PROC Generer(Date : Tab1 ; Var Code : Tab2 ; n : Entier)
1- Pour i de 1 à n faire
ChJ Sous-chaîne(Date[i] , 1 , Pos(‘’/’’, Date[i])-1) // Jour Effacer (Date[i] , 1 , Pos(‘’/’’, Date[i]) ) // effacer Jour/
ChM Date[i] // Mois
Valeur(concat(ChJ , ChM) , CD , e) // Jour et Mois X Aléatoire(60) + 5 // Nombre aléatoire CD CD * X
Si ((CD >= 1000) et ( CD <= 9999)) Alors // cd de 4 chiffres CD (CD Mod 1000)*10 + CD Div 1000
Sinon Si ( CD < 1000 ) Alors // cd inférieur 1000
Tant que ( CD < 1000 ) faire // Ajouter des 0 si cd < 1000
CD CD * 10
Fin Tant que
Sinon // cd supérieur à 1000
convch(CD,ch) , valeur(sous-chaîne(ch,1,4),a,e) Effacer(ch,1,4) , valeur(ch,b,e) , CD a + b Fin Si
Code[i] CD // Affectation du code dans le tableau Code Fin Pour
2- Fin Generer TDOL : Generer
Obj T/N Rôle
i , a , b CHj, ChM CD
e, X ch
Entier Chaîne Entier long
Entier Chaîne
Compteur, variables Auxiliaires Le jour, Le mois
Le code
Erreur, Nb aléatoire Variable auxiliaire
Devoirs et examens sur : www.Kiteb.net