Vous êtes sur la page 1sur 3

Algo.

tn © 14/03/2020
Corrigé Informatique Sections Scientifiques-Session principale Baccalauréat 2019
CORRIGE
Exercice N°1 : (4 points=0.25*16)
1) a)
Objet Type/nature Objet Type/nature Objet Type/nature Objet Type/nature
C1 Chaîne C1 Caractère C1 Chaîne C1 Caractère
C2 Chaîne C2 Caractère C2 Caractère C2 Chaîne
C3 Entier C3 Entier C3 Réel C3 Entier
F F F V
b)
F Ecrire ("Le nombre de caractères majuscules de ",C1," et ", C2," est : ", C3)
V Ecrire ("Le nombre d’occurrence de ",C1," dans ", C2," est : ", C3)
F Ecrire ("Le nombre de chiffres dans ",C2 ," est : ", C3)
F Ecrire ("Le nombre de caractères communs entre ",C1," et ", C2," est : ", C3)
2) a) La séquence algorithmique qui permet de déterminer le terme Un avec n ≥ 0 est :
T[1]  1 U0  1 Un  1 U0  1
Pour i de 2 à n+1 faire Pour i de 1 à n faire Pour i de 1 à n faire Pour i de 1 à n faire
T[i]  1+ 1/T[i-1] Un  1+ 1/U0 Un  1+ 1/Un Un  1+ 1/U0
Fin pour Fin pour Fin pour U0 Un
Un T[n+1] Fin pour
Un U0
V F V V
b) L’entête de la fonction qui permet de déterminer le terme Un avec n≥0 est :
DEF FN Suite (n :Réel) : Réel F DEF FN Suite (n :Entier) : Entier F

DEF FN Suite (n :Entier) : Réel V DEF FN Suite (n :Réel) : Entier F

Exercice N°2 : (3 points=05x3+0.5+0.5x2)


x nb 2) Cette séquence permet de déterminer le
1)
5403 4 nombre de chiffres d’un entier x donné.
176 3 3) Convch(x,xch)
3 1 nbLong(xch)
Problème : (13 points)
1) Analyse du programme principal :
Nom : Validation
Résultat=PROC Afficher (IDENT, DATE,CODE,n) TDNT
(IDENT, DATE,CODE,n)= PROC Remplir(IDENT,DATE,n) Type
PROC Coder(CODE,DATE,n) Tab=tableau 50 chaîne de caractères
Fin Validation
TDOG
Nom Type/Nature Rôle
IDENT Tab Contient les identifiants des cartes
DATE Tab Contient les dates de création des cartes
CODE Tab Contient les codes des cartes
n Entier Le nombre de cartes
Remplir Procédure Saisir n et remplir les tableaux Ident et Date
Coder Procédure Déterminer les codes des différentes cartes
Afficher Procédure Afficher les éléments des trois tableaux

Page 1 /3
2) Les algorithmes des modules :
a) Algorithme de la procédure Remplir :
0) DEF PROC Remplir (Var id, D :Tab ;Var n :entier)
1) Répéter
Ecrire ("Donner le nombre de cartes :"), Lire(n)
Jusqu’à (n dans [3..50])
2) Pour i de 1 à n faire
Répéter
Ecrire ("Donner l’identificateur de la carte n° ",i," :"), Lire(Id[i])
Jusqu’à (Long(Id[i])=8) et (FN Verifnum(Id[i]))
Ecrire("Donner la date en jour et en mois de la carte n°",i," : ")
Répéter
TDOL
Ecrire("Donner J :"), Lire(j)
Nom Type/Nature Rôle
Jusqu’à (j dans [1..31])
Répéter i Entier Compteur
Ecrire("Donner M :"), Lire(m) m Entier Contient le mois
Jusqu’à (m dans [1..12]) j Entier Contient le jour
Convch(j,jch) Résultat de la conversion du jour en
jch Chaîne
Convch(m,mch) chaîne
D[i]jch+"/"+mch Résultat de la conversion du mois
mch Chaîne
FinPour en chaîne
3) Fin Remplir Verifnum Fonction Vérifier si une chaîne est numérique
b) Algorithme de la fonction Verifnum :
0) DEF FN Verifnum (ch :chaine) :booléen
1) k 0 TDOL
Répéter Nom Type/Nature Rôle
k i+1 k entier Compteur
Jusqu’à (non (ch[k] dans ["0".."9"])) ou (k=Long(ch))
Verifnum ch[k] dans ["0".."9"])
2) Fin Verifnum
c) Algorithme de la procédure Coder :
0) DEF PROC Coder(var C :tab ;D :tab ;n :entier) TDOL
1) Pour i de 1 à n faire Nom Type/Nature Rôle
chD[i] i Entier Compteur
Efface(ch, pos("/",ch),1) r Entier Contient les chiffres relatifs à la date
Valeur(ch,r,e) x Entier Entier aléatoire
e Entier Position de l’erreur
x5+Aléa(60)
nb Entier long Résultat de la multiplication de r par x
nbr*x nb1 Entier Les quatre chiffres de gauche de nb
Convch(nb,nbch) nb2 Entier Le reste des chiffres de nb
Si (Long(nbch)=4)Alors Ch Chaîne Une date du tableau D
C[i]Sous_chaine(nbch,2,3)+nbch[1] nbch Chaine Résultat de la conversion de la chaine
Sinon Si (Long(nbch)<4) Alors Répéter
Nbchnbch+"0"
Jusqu’à (Long(nbch)=4)
C[i]nbch
Sinon Valeur(Sous_chaine(nbch,1,4),nb1,e)
Valeur(Sous_chaine(nbch,5,Long(nbch)),nb2,e)
Convch(nb1+nb2,c[i])
Fin si
Fin si
FinPour
2)Fin Coder
Page 2 /3
d) Algorithme de la procédure Afficher:
0) DEF PROC Afficher (Id,D,C:tab ;n :entier)
1) Pour i de 1 à n faire
Ecrire(Id[i]," :", D[i]," :",C[i]) TDOL
Fin Pour Nom Type/Nature Rôle
i entier Compteur
2) Fin Afficher

Barème détaillé:

Programme principal : 1.5 points=


- Modularité 0.5
- Cohérence (appels + conformité des paramètres)) 1=(0.5+0.5)
Remplissage du tableau IDENT : 1.75 points=
- Parcours du tableau 0.25
- Lecture de IDENT[i] 0.25
- Contrôle des contraintes :8 chiffres (chiffres + longueur) 1.25=(1+0.25)
Remplissage du tableau DATE : 2 points=
- Parcours du tableau 0.25
- Lecture de J + contrôle des contraintes 0.25+.025
- Lecture de M + contrôle des contraintes 0.25+0.25
- Remplissage d’un élément date(conversion+concaténation+affectation) 0.75=(0.25*3)
Formation du tableau CODE : 4.25 points=
- Parcours du tableau 0.25
- Concaténation de J et M 0.5
- Lecture aléatoire de X 0.5
- Détermination du nombre Y 0.25
- Formation du code (cas1+cas 2+cas 3) 2.5=(0.5+0.75+1.25)
- Remplissage d’un élément Code 0.25
Affichage des éléments des tableaux : 1.25 points=
- Parcours des tableaux 0.25
- Affichage des éléments + respect de la forme 1=(0.25*3+0.25)
TDNT + TDOG 0.75 points = (0.25 +0.5)
TDOL 1 point

-0.25 par type erreur.

Page 3 /3