Académique Documents
Professionnel Documents
Culture Documents
Yassine ELGHARBI 4 SI
Problème 1 :
On se propose d’écrire une application informatique permettant de vérifier si un entier
N naturel non nul est divisible par 8 ou non en utilisant la règle de divisibilité suivante :
N est divisible par 8 si l’un des cas suivants est vérifié :
- Si le chiffre des centaines est pair et le nombre formé par les 2 derniers chiffres est
multiple de 8.
- Si le chiffre des centaines est impair et le nombre formé par les 2 derniers chiffres
diminué de 4 est multiple de 8.
Exemple :
71432 est divisible par 8 car 4 est pair et 32 est divisible par 8.
65128 est divisible par 8 car 1 est impair et 28-4=24 qui est divisible par 8.
Questions
1. Analyser le problème et donner l’algorithme du programme principal.
2. Analyser chaque module et donner son algorithme.
Pré-Analyse
1ère cas
Pour N=71432
On a 71432 Il faut extraire à partir de N le chiffre de centaine
et le nombre formé par les deux derniers chiffres
4 32 . les deux
4 représente le chiffre de centaine
32 représente le nombre formé de deux derniers chiffres
4 est un nombre pair => il faut tester la divisibilité de 32 par 8
Problème 2 :
On se propose d’écrire une application informatique permettant de vérifier si un entier N
naturel non nul est divisible par 13 ou non en utilisant la règle de divisibilité suivante:
Il faut ajouter à N amputé de son chiffre des unités, le chiffre supprimé multiplié par 4 et
recommencer avec le nombre obtenu jusqu'à avoir un nombre inférieur ou égal à 13
Exemple :
Soit le nombre224185
224185
22418 + (4 × 5) = 22438
22438
2243 + (4 × 8) =2275
2275
227 + (4 × 5) = 247
247
24 + (4 × 7) = 52
52
Nous obtenons 13 donc 224185 est divisible par 13.
5 + (4 × 2) = 13
Questions
1. Analyser le problème et donner l’algorithme du programme principal.
2. Analyser chaque module et donner son algorithme.
Analyse
Analyse du problème
Nom : Divisibilite_par_13
Résultat= Ecrire(N, msg)
Msg= [ ]msg Fn Test ( n )
N= [ ] Proc Saisie ( n )
FIN Divisibilite_par_13
T.D.O.G
Objet Type/Nature
Test Fonction
Saisie Procédure
Msg chaine
n mot
Les Algorithmes
Algorithme du PP
0) Début Divisibilite_par_13
1) Proc Saisie ( n )
2) Msg Fn Test ( n )
3) Ecrire(N, msg)
4) FIN Divisibilite_par_13
Algorithme de la procédure Saisie
0) DEF Proc Saisie ( Var n :mot )
1) Répeter
Saisir("Saisir un entier positif supérieur à 0 ")
Lire( N )
jusqu’à (n>0)
2) FIN Saisie
Algorithme de la fonction Test
0) DEF Fn Test ( n : mot ) : chaine
1) Proc extraire( N, NB, U )
2) Si Fn Div_13( N, NB, U ) alors
Ch " est divisible par 13 "
Sinon
Ch " n’est pas divisible par 13 "
Fin si
3) Test ch
4) FIN Test
Algorithme de la procédure Extraire
0) DEF Proc Extraire ( N :mot ; Var NB : mot ; Var U : octet )
1) NB N DIV 10
2) U N MOD 10
3) FIN Extraire
Algorithme de la fonction Div_13
0) DEF Fn Div_13 ( n :mot ) : booleen
1) Répeter
Proc Extraire ( N, NB, U )
N NB + 4 * U
Jusqu’à ( N ≤ 13 )
2) Div_13 N MOD 13 = 0
3) FIN Div_13
Problème 3 :
On se propose d’écrire une application informatique permettant de vérifier si un entier N
naturel non nul est divisible par 13 ou non en utilisant la règle de divisibilité suivante:
Il faut ajouter à N amputé de son chiffre des unités, le chiffre supprimé multiplié par 4 et
recommencer avec le nombre obtenu jusqu'à avoir un nombre inférieur ou égal à 13
L’application doit sauvegarder dans un fichier texte la traçabilité jusqu’à avoir le nombre
inférieur ou égal à 13. Le fichier admet pour non physique « c:\tarce.txt »
Analyse
Analyse du problème
Nom : Divisibilite_par_13
Résultat= Proc Affiche ( F )
F = [ ] Proc Remplir ( n, F )
N= [ ] Proc Saisie ( n )
F= [ ] Proc Association ( F )
FIN Divisibilite_par_13
T.D.O.G
Objet Type/Nature
Test Fonction
Saisie Procédure
Msg chaine
N mot
F Texte
Analyse de la procédure Association
DEF Proc Association (Var F : texte)
Résultat = F
f = [ ] Associer (f, "c:\trace.txt")
FIN Association
Analyse de la procédure Saisie
DEF Proc Saisie ( Var n :mot )
Résultat = n
N = [ ] Répeter
n=donnée( "Saisir un entier positif supérieur à 0 ")
jusqu’à (n>0)
FIN Saisie
Analyse de la procédure Remplir
DEF Proc Remplir ( n : mot ; Var F : texte )
Résultat = F
Fermer ( F )
F = Ecrire_nl ( F, Ch )
Ch= Ch Concat ( ‘’Donc la divisibilité de ‘’,chn,’’par 13 est ’’, Div_13 ( N ) )
F = [ ] Répeter
Proc Extraire ( N, NB, U )
N Fn Calculer ( NB, U )
Proc Composer ( N, NB, U, Ch )
Ecrire_nl ( F, Ch )
Jusqu’à ( N ≤ 13 )
Ecrire_nl( F, ‘’Pour ‘’+Chn)
Chn = convCh ( N, chn )
ReCreer( F )
FIN Remplir
Analyse de la fonction Calcul
DEF Fn Calcul ( NB : mot ; U : octet ) : mot
Résultat = calcul
Calcul NB + 4 * U
FIN calcul
Analyse de la procédure Extraire
DEF Proc Extraire( N : mot ; Var NB : mot ; Var U : octet )
Résultat = ( U, NB )
NB = [ ] NB N DIV 10
U=[]U N MOD 10
FIN Extraire
Analyse de la procédure Composer
DEF Proc Composer ( N, NB : Mot ; U : octet ; Var Ch : chaine )
Résultat = Ch
Ch = [ ] Ch concat ( chnb, " + 4 * ", chu, " = ",chn )
Chu = [ ] ConvCh (u, Chu)
Chnb = [ ] ConvCh (NB, Chnb)
Chn = [ ] ConvCh (N, Chn)
FIN Composer
Analyse de la fonction Div_13
DEF Fn Div_13 ( N : mot ) : booleen
Résultat = div_13
Div_13 N MOD 13 = 0
N = [ ] Répeter
Proc Extraire ( N, NB, U )
N Fn Calculer ( NB, U )
Jusqu’à ( N ≤ 13 )
FIN Div_13
Analyse de la procédure Afficher
DEF Proc afficher ( Var F : texte )
Résultat = Aff
Fermer ( F )
[ Ouvrir( F ) ] Tant que ( Non Fin_fichier( F) )
Lire_nl( F, Ch )
Ecrire( Ch )
Fin tant que
FIN afficher
Les Algorithmes
Algorithme du PP
0) Début Divisibilite_par_13
1) Proc Association ( F )
2) Proc Saisie ( n )
3) Proc Remplir ( n, F )
4) Proc Affiche ( F )
5) FIN Divisibilite_par_13