Vous êtes sur la page 1sur 16

PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

I. Introduction
Larithmtique est une branche de mathmatiques qui tudie les relations entre les nombres. Cest aussi
ltude des nombres et des oprations lmentaires entre eux.

II. Calcul de PGCD (voir chapitre rcursivit)

III. Calcul de et
III.1 prsentation
- Le nombre de permutations ordonns possibles de p lments parmi n appel Arrangement :
Exemple1 : quels sont les nombres de 2 chiffres former partir de la liste {5, 3,1}
Rponse : 53, 35, 51, 15, 31, 13 =6
Exemple2 : tirage sans remise

Dfinition 1: E tant un ensemble n lments, on appelle arrangement de p lments de E toute p-liste


d'lments distincts de E.

- Le nombre de permutations sans ordre possibles de p lments parmi n appel Combinaison :


Exemple1 : quels sont les listes de 2 lments former partir de la liste {5, 3,1}
Rponse : {5, 1}, {5, 3}, {3, 1} =3
Exemple2 : tirage avec remise

Dfinition 2: E tant un ensemble n lments, on appelle combinaison de p lments de E toute


collection non ordonne de p lments distincts de E

III.2 Calcul de
Activit1 : crire un programme modulaire en Pascal qui permet de calculer et dafficher l e avec n et p
deux entiers tel que 1p n
Sachant que = n (n-1) (n-2) .. (n-p+1)
Ou encore ( )

a) Analyse du programme principal


2) Rsultat = Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
1) (N,p)= proc saisir (n, p)
Algorithme du programme principal
TDOG
0) DEBUT arrangement
Objet Type/Nature
1) Proc saisir (n, p)
N Entier
2) Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
p entier
saisir procdure 3) Fin arrangement
calcul fonction

1
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

b) Analyse de la procdure saisir Algorithme de la procdure saisir


DEF PROC saisir var (n, p : entier)
0) DEF PROC saisir (var n, p : entier)
Rsultat = n, p
1) Rpter
2) N= [ ] rpter
Ecrire ("P= "), lire (P)
N= donne ("N=")
Jusqu (p1)
Jusqu (np)
2) Rpter
1) P= [ ] rpter Ecrire ("N= "), lire (N)
P= donne ("P= ") Jusqu (Np)
Jusqu (p 1) 3) Fin saisir

c) Analyse de la fonction calcul Algorithme de la fonction calcul


DEF FN calcul (n, p : entier) : entier
0) DEF FN CALCUL (n, p : entier) : entier
2) Rsultat = calcul a
1) A 1
1) A= [a1] pour i de n (n-p+1) (pas=-1) Faire Pour i de n n-p+1 (pas=-1) Faire
Aa*i Aa*i
Fin pour Fin pour
2) Calcul a
TDOL 3) Fin calcul
objet Tupe/nature
I Entier
a entier

2
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

III.3 Calcul de
Activit1 : crire un programme modulaire en Pascal qui permet de calculer et dafficher le avec n et p
deux entiers tel que 0p n

a) Analyse du programme principal


2) Rsultat = Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
3) (N,p)= proc saisir (n, p)
Algorithme du programme principal
TDOG
0) DEBUT arrangement
Objet Type/Nature 1) Proc saisir (n, p)
N Entier 2) Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
p entier 3) Fin arrangement
saisir procdure
calcul fonction

b) Analyse de la procdure saisir


DEF PROC saisir var (n, p : entier)
Rsultat = n, p
2) N= [ ] rpter
Algorithme de la procdure saisir
N= donne ("N=")
Jusqu (np) 0) DEF PROC saisir (var n, p : entier)
1) P= [ ] rpter 1) Rpter
P= donne ("P= ") Ecrire ("P= "), lire (P)
Jusqu (p 0) Jusqu (p0)
2) Rpter
Ecrire ("N= "), lire (N)
Jusqu (Np)
3) Fin saisir

c) Analyse de la fonction calcul


DEF FN calcul (n, p : entier) : real Algorithme de la fonction calcul
2) Rsultat = calcul c
0) DEF FN CALCUL (n, p : entier) : rel
1) C FACT (n) / (FACT (p) * FACT (n-p))
1) C FACT (n) / (FAT(p)*FACT (n-p))
2) CALCUL c
3) Fin calcul

3
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

III.4 Application
=9 =8 =1

=1 =1

Activit : crire la fonction combinaison rcursive

Analyse de la fonction COMB rcursive


DEF FN Combo (n, p : entier) : entier
Rsultat= combo
1) combo= [ ] si (p=0) ou (p=n) alors combo 1
Sinon combo FN combo (n-1, p-1) + FN combo (n-1, p)
Fin si

4
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

IV. Quelques rgles de divisibilit (livre page 166)

V. Conversion entre les bases de numration


V.1 Dfinition
Un systme de numration est une mthode de comptage fonde sur une base de numration qui est
un entier suprieur ou gal 2. Soit N une base de numration, le systme sera dot de N chiffres de
0 N-1

V.2 Exemples de bases de numration (voir livre page 166)

V.3 Conversion dun nombre dcimal en binaire


Ecrire un programme modulaire en pascal qui permet de saisir un entier positif, le convertit en
binaire.

a) Analyse du programme principal


2) Rsultat = Ecrire (Fn conv_DEC_BIN(n))
1) N = proc saisir (n)

b) Analyse de la procdure CONV_DEC_BIN


DEF FN CONV_DEC_BIN (n : entier) : chane Algorithme du programme principal
2) Rsultat = CONV_DEC_BIN ch
1)Ch=[ch ""] rpter 0) Dbut conversion
R n mod 2 1) Proc saisir (n)
N n div 2 2) Ecrire (Fn conv_DEC_BIN(n))
Ch chr(48+R)+ch 3) Fin conversion
Jusqu (n=0)

Algorithme de la fonction CONV_DEC_BIN

0) DEF FN CONV_DEC_BIN (n : entier) : chane


1) Ch ""
rpter
R n mod 2
N n div 2
Ch chr(48+R)+ch
Jusqu (n=0)
2) CONV_DEC_Bin ch
3) Fin CONV_DEC_BIN

5
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

V. 4 Conversion dun nombre binaire en dcimal


Ecrire un programme modulaire en pascal qui permet de saisir un nombre binaire (sous forme dune
chane de caractres), le convertit en dcimal.
Algorithme du programme principal
a) Analyse du programme principal
2) Rsultat = Ecrire (FN conv_bin_dec(ch)) 0) Dbut conversion
1)Ch= proc saisir (ch) 1) Proc saisir (ch)
2) Ecrire (FN conv_bin_dec(ch))
3) Fin conversion
b) Analyse de la procdure saisir
DEF PROC SAISIR (var ch : chane) Algorithme de la procdure saisir
Rsultat = ch 0) DEF PROC SAISIR (var ch : chane)
1)Ch=[ ] rpter 1) rpter
Ch= donne ("CH= ") Ecrire ("CH= "), lire (ch)
i0 i0
rpter rpter
ii+1 ii+1
test ch[i] dans ["0","1"] test ch[i] dans ["0","1"]
jusqu (non test) ou (i=long(ch)) jusqu (non test) ou (i=long(ch))
jusqu test Jusqu test
2) Fin saisir

c) Analyse de la fonction conv_bin_dec Algorithme de la fonction conv_bin_dec


DEF FN conv_bin_dec (ch :chane) : entier long
0)DEF FN conv_bin_dec (ch :chane): entire long
2)Rsultat = conv_bin_dec n
1)N <- 0
1)N= [n0] pour i de 1 long (ch) faire
pour i de 1 long (ch) faire
N n +(ord(ch[i])-48)*puissance(long(ch)-i)
N n +(ord(ch[i])-48)*puissance(long(ch)-i)
Fin pour
Fin pour
2) conv_bin_dec N
3) Fin conv_bin_dec

d) Analyse de la fonction puissance Algorithme de la fonction puissance


DEF FN puissance (x :entier) :entier 0)DEF FN puissane (x :entier) : entier
2)Rsultat = puissance p 1)p 1
Pour i de 1 x faire
1)P=[ p 1] pour i de 1 x Faire
Pp*2
P 2*p Fin pour
Fin pour 2)puissance p
3) Fin puissance

6
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

7
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

V. 5 Conversion dun nombre hexadcimal en binaire


Activit : crire un programme modulaire en pascal qui permet de saisir un nombre hexadcimal, le
convertit en binaire.

Analyse du programma principal :


2)Rsultat= Ecrire("("ch," )16= (", FN conv_hex_bin(ch), ")2")
1)Ch= proc saisir (ch)
Algorithme du programme principal
TDOG 0) Dbut conversion
Objet Type/nature Rle
1) proc saisir (ch)
Ch Chane
Saisir Procdure 2) Ecrire ("("ch,) 16= (", FN conv_hex_bin(ch), ")2")
Conv_hex_bin fonction 3 Fin conversion
Analyse de la procdure saisir
TDOL
DEF PROC saisir (var ch :chne) Objet Type/nature Rle
Rsultat = ch i Entier
test boolen
1)Ch=[ ] rpter Algorithme de la procdure saisir
Ch= donne ("CH=") 0) DEF PROC saisir (var ch :chne)
i 0 1) rpter
Rpter Ecrire ("CH="), lire (ch)
i i+1 i 0
Rpter
ch[i] dans ["0".."9", "A".."F"]
i i+1
Jusqu (non test) ou (i=long (ch))
ch[i] dans ["0".."9", "A".."F"]
Jusqu (test)
jusqu (non test) ou (i=long(ch))
Analyse de la fonction conv_hex_bin Jusqu (test)
2) fin saisir
DEF FN conv_hex_bin (ch : chane): chane
2)Rsultat= conv_hex_bin ph
2)Ph=[] tant que ph[1]= "0" faire TDOL
Efface(ph, 1, 1) Objet Type/nature Rle
i Entier
Fin tant que con fonction
1)Ph=[ph""]pour i de 1 long (ch) faire ph chane
Si ch[i] dans ["0".."9"] alors ph ph + conv(ord(ch[i])-48)
Sinon ph ph + conv (ord(ch[i])-55)
Fin si

Analyse de la fonction conv


DEF FN conv (x : entier): chane TDOL
2)Rsultat= convdh Objet Type/nature Rle
i Entier
1)dh=[dh"0000", i4] rpter dh chane
dh[i] chr((x mod 2)+48)
x x div 2
i i 1

8
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

Algorithme dejusqu
la fonction
(x=0)conv_hex_bin
0) DEF FN conv_hex_bin (ch : chane): chane Algorithme de la fonction conv
1) Ph"" 0) DEF FN conv (x : entier): chane
pour i de 1 long (ch) faire 1) dh"0000"
Si ch[i] dans ["0".."9"] alors ph ph + conv(ord(ch[i])-48) i4
Sinon ph ph + conv (ord(ch[i])-55) rpter
Fin si dh[i] chr((x mod 2)+48)
2) tant que ph[1]= "0" faire x x div 2
Efface (ph, 1, 1) i i 1
Fin tant que jusqu (x=0)
3) fin conv_hex_bin 2) fin conv

4) Fin conv_hex_bin

9
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

V. 6 Conversion dun nombre binaire en hexadcimal


Activit : crire un programme modulaire en pascal qui permet de saisir un nombre binaire, le
convertit en hexadcimal.

Analyse du programme principal :


2) Rsulat= Ecrire ("(", ch, ") 2= (", FN conv_bin_hex(ch), ")16")
1) Ch= proc saisir (ch)
Algorithme du programme principal
TDOG
0) Dbut conversion
Objet Type/nature Rle
Conv_bin_hex fonction 1) proc saisir (ch)
ch chane
2) Ecrire ("(", ch, ") 2= (", conv_bin_hex(ch), ")16")
Saisir procdure
3) Fin conversion

Analyse de la fonction conv_bin_hex


DEF FN conv_hex_bin (ch : chane): chane
3) Rsultat= conv_bin_hex ph
2) Ph= [ph "" ] rpter
Ph ph + Fn conv (sous-chane (ch, 1, 4))
Efface (ch, 1, 4)
Algorithme de la fonction conv_bin_hex
Jusqu (long (ch)=0)
1) Ch=[ ] tant que long(ch) mod 40 Faire 0) DEF FN conv_bin_hex (ch : chane): chane
Insre (ch, "0", 1) 1) tant que long(ch) mod 40 Faire
Fin tant que Insre (ch, "0", 1)
Fin tant que
TDOL
2) ph ""
Objet Type/nature Rle Rpter
conv fonction Ph ph + FN conv (sous-chane (ch, 1, 4))
ph chane Efface (ch, 1, 4)
Jusqu (long (ch)=0)
3) conv_bin_hex ph
Analyse de la fonction conv 4) fin conv_bin_hex
DEF FN conv (dh : chane) : caractre
Rsultat= conv
2)Conv=[ ] si x dans [0..9] alors conv chr (x+48) Algorithme de la fonction conv
Sinon conv chr (x+55) 0) DEF FN conv (dh : chane) : caractre
Fin si 1) x0
pour i de 1 4 faire
1) x=[x0] pour i de 1 4 faire
x x + (ord (ch[i])-48) * FN puissance (4-i)
x x + (ord (ch[i])-48) * FN puissance (4-i)
Fin pour
Fin pour
2) si x dans [0..9] alors conv chr (x+48)
TDOL Sinon conv chr (x+55)
Objet Type/nature Rle Fin si
x enier 3) Fin conv
i entier
10
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

Analyse de la fonction puissance Algorithme de la fonction puissance


DEF FN puissance (a :etier) : entier
Rsultat=puissance b 0) DEF FN puissance (a :etier) : entier
1) b1
b=[b1] pour i de 1 4 faire
Pour i de 1 4 faire
bb*2
bb*2
fin pour
TDOL fin pour
Objet Type/nature Rle 2) puissance b
b enier
i entier

11
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

V. 5 Conversion dun nombre hexadcimal en dcimal


Activit : crire un programme modulaire en pascal qui permet de saisir un nombre hexadcimal, le
convertit en dcimal.

Analyse du programme principal :


2) Rsultat= Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10")
1) Ch=proc saisir (ch)

Algorithme du programme principal TDOG


0) Dbut conversion Objet Type/nature
1) proc saisir (ch) saisir Procdure
Conv_hex_dec fonction
2) Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10") ch chane
3) Fin conversion

Analyse de la fonction conv_hex_dec :


DEF FN conv_hex_dec (ch :chane): entire long
2) Rsultat= conv_hex_dec N
1) N= [N 0] pour i de 1 long (ch) faire
Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) i)
Sinon N N + (ord (ch[i])-55) * FN puissance (long (ch)-i)
Fin si
Fin pour
Algorithme de la fonction conv_hex_dec
0) DEF FN conv_hex_dec (ch :chane): entire long
1) N0
pour i de 1 long (ch) faire TDOL
Si ch[i] dans ["0".."9"] alors N N + (ord (ch[i])-48) * FN puissance (long (ch) i) Objet Type/nature
Sinon N N + (ord (ch[i])-55) * FN puissance (long (ch)-i) N Entier long
Fin si i entier
Fin pour
2) conv_hex_dec N
3) Fin conv_hex_dec

Analyse de la fonction puissance :


DEF FN puissance (x : entier) : entier long
2) Rsultat= puissance p Algorithme de la fonction puissance
1) P= [p0] pour i de 1 x faire 0) DEF FN puissance (x : entier) : entier long
P p * 16 1) p0
Fin pour Pour i de 1 x faire
P p * 16
TDOL Fin pour
Objet Type/nature 2) Puissance p
p Entier long 3) Fin puissance
i entier

12
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

13
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

V.7 Conversion dun nombre octal en binaire


Similaire la conversion de lhexadcimal en binaire.
Exemple :

5 7 3 1

101 111 011 001

Donc (5731)8 = (101111011001)2

V. 8 Conversion dun nombre binaire en octal

Similaire la conversion du binaire en hexadcimal


Exemple :

101 111 011 001

1*22+0*21+1*20 = 5 1*22+1*21+1*20 = 7 0*22+1*21+1*20 = 3 0*22+0*21+1*20 = 1

Donc (101111011001)2 = (5731)8

V. 9 Conversion dun nombre octal en dcimal


Similaire la conversion du hexadcimal en dcimal
Exemple :
(5732)8 = 5*83 + 7*82 + 3*81 + 2*80 = (3034)10

V. 10 Conversion dun nombre dune base b1 en une base b2


Ecrire un programme modulaire en Pascal, qui saisit un nombre dune base B1 et le convertit en une
base B2 avec (2B116 et 2B216)

a) Analyse du programme principal


4) Rsultat= crire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2)
3) B2= proc saisir (b2)
Algorithme du programme principal :
2) Ch= proc saisir (ch, b1)
1) B1= proc saisir (b1) 0) Dbut conversion
1) proc saisir (b1)
2) proc saisir (ch, b1)
3) proc saisir (b2)
4) crire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2)
5) Fin conversion

14
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

b) Analyse de la fonction conversion


DEF FN conversion (ch : chane ; b1, b2 : entier) : chane
3) Rsultat = conversion ph Algorithme de la fonction convesrion
2) Ph FN convb2 (n10, b2) 0) DEF FN conversion (ch : chane ; b1, b2 : entier)
1) N10 FN conv10 (ch, b1) 1) N10 FN conv10 (ch, b1)
2) Ph FN convb2 (n10, b2)
3) conversion ph
4) fin conversion
c) Analyse de la fonction conv10 (convertit un nombre vers la base dcimal)
DEF FN conv10 (ch : chane ; b1 : entier) : entier long
2) Rsultat= conv10 n
1) N= [n0] pour i de long (ch) 1 (pas=-1) Faire
Si ch[i] dans ["0".."9"] alors n n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1)
Sinon n n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1)
Fin si
Fin pour
Algorithme de la fonction conv10
0) DEF FN conv10 (ch : chane ; b1 : entier) : entier long
1) n0
Pour i de long (ch) 1 (pas=-1) Faire
Si ch[i] dans ["0".."9"] alors n n + (ord (ch[i])-48) * Fn puissance (b1, long (ch)-1)
Sinon n n + (ord (ch[i])-55) * Fn puissance (b1, long (ch)-1)
Fin si
Fin pour
2) conv10 n
3) Fin conv10

d) Analyse de la fonction convb2 (convertit un nombre dcimal vers la base B2)


DEF FN convb2 (n1O : entier long ; b2 : entier) : chane
2) Rsultat= convb2 ph
Algorithme de la fonction convb2
1) Ph= [ph""] rpter 0) DEF FN convb2 (n1O : entier long ; b2 : entier) : chane
R n mod b2 1) ph""
Si r 9 alors ph chr(r + 48) + ph Rpter
Sinon ph chr(r+55) + ph R n mod b2
Fin si Si r 9 alors ph chr(r + 48) + ph
Sinon ph chr(r+55) + ph
N10 N10 div b2 Fin si
Jusqu (N10 = 0) N10 N10 div b2
Jusqu (N10 = 0)
2) convb2 ph
3) fin convb2

Algorithme de la fonction puissance


e) Analyse de la fonction puissance 0) DEF FN puissance (x, y : entier) : entier long
DEF FN puissance (x, y : entier) : entier long 1) Z 1
2) Rsultat= puissance Z Pour i de 1 y faire
1) Z= [Z 1] pour i de 1 y faire ZZ*x
Fin pour
ZZ*x
2) puissance Z
Fin pour 3) Fin puissance

15
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES DARITHMETIQUES

16