les algorithmes d'arithmetique
Post on 27-Jun-2015
7.151 Views
Preview:
TRANSCRIPT
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
1
I. Introduction L’arithmétique est une branche de mathématiques qui étudie les relations entre les nombres. C’est aussi
l’étude des nombres et des opérations élémentaires entre eux.
II. Calcul de PGCD (voir chapitre récursivité)
III. Calcul de
et
III.1 présentation
- Le nombre de permutations ordonnés possibles de p éléments parmi n appelé Arrangement :
Exemple1 : quels sont les nombres de 2 chiffres à former à partir de la liste {5, 3,1}
Réponse : 53, 35, 51, 15, 31, 13 = 6
Exemple2 : tirage sans remise
Définition 1: E étant un ensemble à n éléments, on appelle arrangement de p éléments de E toute p-liste
d'éléments distincts de E.
- Le nombre de permutations sans ordre possibles de p éléments parmi n appelé Combinaison :
Exemple1 : quels sont les listes de 2 éléments à former à partir de la liste {5, 3,1}
Réponse : {5, 1}, {5, 3}, {3, 1} = 3
Exemple2 : tirage avec remise
Définition 2: E étant un ensemble à n éléments, on appelle combinaison de p éléments de E toute
collection non ordonnée de p éléments distincts de E
III.2 Calcul de
Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher l
e avec n et p
deux entiers tel que 1≤p≤ n
Sachant que
= n (n-1) (n-2) ….. (n-p+1)
Ou encore
( )
a) Analyse du programme principal
2) Résultat = Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
1) (N,p)= proc saisir (n, p)
TDOG
Objet Type/Nature
N Entier
p entier
saisir procédure
calcul fonction
Algorithme du programme principal
0) DEBUT arrangement
1) Proc saisir (n, p)
2) Ecrire ("A (", p, ",", n, ")=", FN calcul (n, p))
3) Fin arrangement
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
2
b) Analyse de la procédure saisir
DEF PROC saisir var (n, p : entier)
Résultat = n, p
2) N= [ ] répéter
N= donnée ("N=")
Jusqu’à (n≥p)
1) P= [ ] répéter
P= donnée ("P= ")
Jusqu’à (p ≥1)
c) Analyse de la fonction calcul
DEF FN calcul (n, p : entier) : entier
2) Résultat = calcul a
1) A= [a1] pour i de n à (n-p+1) (pas=-1) Faire
A a * i
Fin pour
TDOL
objet Tupe/nature
I Entier
a entier
Algorithme de la procédure saisir
0) DEF PROC saisir (var n, p : entier)
1) Répéter
Ecrire ("P= "), lire (P)
Jusqu’à (p≥1)
2) Répéter
Ecrire ("N= "), lire (N)
Jusqu’à (N≥p)
3) Fin saisir
Algorithme de la fonction calcul
0) DEF FN CALCUL (n, p : entier) : entier
1) A 1
Pour i de n à n-p+1 (pas=-1) Faire
A a * i
Fin pour
2) Calcul a
3) Fin calcul
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
3
III.3 Calcul de
Activité1 : écrire un programme modulaire en Pascal qui permet de calculer et d’afficher le avec n et p
deux entiers tel que 0≤p≤ n
a) Analyse du programme principal
2) Résultat = Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
3) (N,p)= proc saisir (n, p)
b) Analyse de la procédure saisir
DEF PROC saisir var (n, p : entier)
Résultat = n, p
2) N= [ ] répéter
N= donnée ("N=")
Jusqu’à (n≥p)
1) P= [ ] répéter
P= donnée ("P= ")
Jusqu’à (p ≥0)
c) Analyse de la fonction calcul
DEF FN calcul (n, p : entier) : real
2) Résultat = calcul c
1) C FACT (n) / (FACT (p) * FACT (n-p))
TDOG
Objet Type/Nature
N Entier
p entier
saisir procédure
calcul fonction
Algorithme du programme principal
0) DEBUT arrangement
1) Proc saisir (n, p)
2) Ecrire ("C (", p, ",", n, ")=", FN calcul (n, p))
3) Fin arrangement
Algorithme de la procédure saisir
0) DEF PROC saisir (var n, p : entier)
1) Répéter
Ecrire ("P= "), lire (P)
Jusqu’à (p≥0)
2) Répéter
Ecrire ("N= "), lire (N)
Jusqu’à (N≥p)
3) Fin saisir
Algorithme de la fonction calcul
0) DEF FN CALCUL (n, p : entier) : réel
1) C FACT (n) / (FAT(p)*FACT (n-p))
2) CALCUL c
3) Fin calcul
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
4
III.4 Application
=9
=8 =1
=1
=1
Activité : écrire la fonction combinaison récursive
Analyse de la fonction COMB récursive
DEF FN Combo (n, p : entier) : entier
Résultat= 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
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
5
IV. Quelques règles de divisibilité (livre page 166)
V. Conversion entre les bases de numération
V.1 Définition
Un système de numération est une méthode de comptage fondée sur une base de numération qui est
un entier supérieur ou égal à 2. Soit N une base de numération, le système sera doté de N chiffres de
0 à N-1
V.2 Exemples de bases de numération (voir livre page 166)
V.3 Conversion d’un nombre décimal 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) Résultat = Ecrire (Fn conv_DEC_BIN(n))
1) N = proc saisir (n)
b) Analyse de la procédure CONV_DEC_BIN
DEF FN CONV_DEC_BIN (n : entier) : chaîne
2) Résultat = CONV_DEC_BIN ch
1)Ch=[ch ""] répéter
R n mod 2
N n div 2
Ch chr(48+R)+ch
Jusqu’à (n=0)
Algorithme du programme principal
0) Début conversion
1) Proc saisir (n)
2) Ecrire (Fn conv_DEC_BIN(n))
3) Fin conversion
Algorithme de la fonction CONV_DEC_BIN
0) DEF FN CONV_DEC_BIN (n : entier) : chaîne
1) Ch ""
répéter
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
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
6
V. 4 Conversion d’un nombre binaire en décimal
Ecrire un programme modulaire en pascal qui permet de saisir un nombre binaire (sous forme d’une
chaîne de caractères), le convertit en décimal.
a) Analyse du programme principal
2) Résultat = Ecrire (FN conv_bin_dec(ch))
1)Ch= proc saisir (ch)
b) Analyse de la procédure saisir
DEF PROC SAISIR (var ch : chaîne)
Résultat = ch
1)Ch=[ ] répéter
Ch= donnée ("CH= ")
i 0
répéter
i i + 1
test ch[i] dans ["0","1"]
jusqu’à (non test) ou (i=long(ch))
jusqu’à test
c) Analyse de la fonction conv_bin_dec
DEF FN conv_bin_dec (ch :chaîne) : entier long
2)Résultat = conv_bin_dec n
1)N= [n0] pour i de 1 à long (ch) faire N n +(ord(ch[i])-48)*puissance(long(ch)-i)
Fin pour
d) Analyse de la fonction puissance
DEF FN puissance (x :entier) :entier
2)Résultat = puissance p
1)P=[ p 1] pour i de 1 à x Faire
P 2*p
Fin pour
Algorithme du programme principal
0) Début conversion
1) Proc saisir (ch)
2) Ecrire (FN conv_bin_dec(ch))
3) Fin conversion
Algorithme de la procédure saisir
0) DEF PROC SAISIR (var ch : chaîne)
1) répéter
Ecrire ("CH= "), lire (ch)
i 0
répéter
i i + 1
test ch[i] dans ["0","1"]
jusqu’à (non test) ou (i=long(ch))
Jusqu’à test
2) Fin saisir
Algorithme de la fonction conv_bin_dec
0)DEF FN conv_bin_dec (ch :chaîne): entire long 1)N <- 0
pour i de 1 à long (ch) faire N n +(ord(ch[i])-48)*puissance(long(ch)-i)
Fin pour
2) conv_bin_dec N
3) Fin conv_bin_dec
Algorithme de la fonction puissance 0)DEF FN puissane (x :entier) : entier 1)p 1 Pour i de 1 à x faire
P p * 2 Fin pour 2)puissance p 3) Fin puissance
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
7
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
8
V. 5 Conversion d’un nombre hexadécimal en binaire
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le
convertit en binaire.
Analyse du programma principal :
2)Résultat= Ecrire("("ch," )16= (", FN conv_hex_bin(ch), ")2")
1)Ch= proc saisir (ch)
Analyse de la procédure saisir
DEF PROC saisir (var ch :chîne)
Résultat = ch
1)Ch=[ ] répéter
Ch= donnée ("CH=")
i 0
Répéter
i i+1
ch[i] dans ["0".."9", "A".."F"]
Jusqu’à (non test) ou (i=long (ch))
Jusqu’à (test)
Analyse de la fonction conv_hex_bin
DEF FN conv_hex_bin (ch : chaîne): chaîne
2)Résultat= conv_hex_bin ph
2)Ph=[] tant que ph[1]= "0" faire
Efface(ph, 1, 1)
Fin tant que
1)Ph=[ph""]pour i de 1 à long (ch) faire
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): chaîne
2)Résultat= convdh
1)dh=[dh"0000", i4] répéter
dh[i] chr((x mod 2)+48)
x x div 2
i i – 1
Algorithme du programme principal
0) Début conversion
1) proc saisir (ch)
2) Ecrire ("("ch,») 16= (", FN conv_hex_bin(ch), ")2")
3 Fin conversion
TDOG
Objet Type/nature Rôle
Ch Chaîne
Saisir Procédure
Conv_hex_bin fonction
Algorithme de la procédure saisir
0) DEF PROC saisir (var ch :chîne)
1) répéter
Ecrire ("CH="), lire (ch)
i 0
Répéter
i i+1
ch[i] dans ["0".."9", "A".."F"]
jusqu’à (non test) ou (i=long(ch))
Jusqu’à (test)
2) fin saisir
TDOL
Objet Type/nature Rôle
i Entier
test booléen
TDOL
Objet Type/nature Rôle
i Entier
con fonction
ph chaîne
TDOL
Objet Type/nature Rôle
i Entier
dh chaîne
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
9
jusqu’à (x=0)
Algorithme de la fonction conv_hex_bin
0) DEF FN conv_hex_bin (ch : chaîne): chaîne
1) Ph""
pour i de 1 à long (ch) faire
Si ch[i] dans ["0".."9"] alors ph ph + conv(ord(ch[i])-48)
Sinon ph ph + conv (ord(ch[i])-55)
Fin si
2) tant que ph[1]= "0" faire
Efface (ph, 1, 1)
Fin tant que
3) fin conv_hex_bin
4) Fin conv_hex_bin
Algorithme de la fonction conv
0) DEF FN conv (x : entier): chaîne
1) dh"0000"
i4
répéter
dh[i] chr((x mod 2)+48)
x x div 2
i i – 1
jusqu’à (x=0)
2) fin conv
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
10
V. 6 Conversion d’un nombre binaire en hexadécimal
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre binaire, le
convertit en hexadécimal.
Analyse du programme principal :
2) Résulat= Ecrire ("(", ch, ") 2= (", FN conv_bin_hex(ch), ")16")
1) Ch= proc saisir (ch)
Analyse de la fonction conv_bin_hex
DEF FN conv_hex_bin (ch : chaîne): chaîne
3) Résultat= conv_bin_hex ph
2) Ph= [ph "" ] répéter
Ph ph + Fn conv (sous-chaîne (ch, 1, 4))
Efface (ch, 1, 4)
Jusqu’à (long (ch)=0)
1) Ch=[ ] tant que long(ch) mod 4≠0 Faire
Insère (ch, "0", 1)
Fin tant que
Analyse de la fonction conv
DEF FN conv (dh : chaîne) : caractère
Résultat= conv
2)Conv=[ ] si x dans [0..9] alors conv chr (x+48)
Sinon conv chr (x+55)
Fin si
1) x=[x0] pour i de 1 à 4 faire
x x + (ord (ch[i])-48) * FN puissance (4-i)
Fin pour
Algorithme du programme principal
0) Début conversion
1) proc saisir (ch)
2) Ecrire ("(", ch, ") 2= (", conv_bin_hex(ch), ")16")
3) Fin conversion
TDOG
Objet Type/nature Rôle
Conv_bin_hex fonction
ch chaîne
Saisir procédure
Algorithme de la fonction conv_bin_hex
0) DEF FN conv_bin_hex (ch : chaîne): chaîne
1) tant que long(ch) mod 4≠0 Faire
Insère (ch, "0", 1)
Fin tant que
2) ph ""
Répéter
Ph ph + FN conv (sous-chaîne (ch, 1, 4))
Efface (ch, 1, 4)
Jusqu’à (long (ch)=0)
3) conv_bin_hex ph
4) fin conv_bin_hex
TDOL
Objet Type/nature Rôle
conv fonction
ph chaîne
Algorithme de la fonction conv
0) DEF FN conv (dh : chaîne) : caractère
1) x0
pour i de 1 à 4 faire
x x + (ord (ch[i])-48) * FN puissance (4-i)
Fin pour
2) si x dans [0..9] alors conv chr (x+48)
Sinon conv chr (x+55)
Fin si
3) Fin conv
TDOL
Objet Type/nature Rôle
x enier
i entier
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
11
Analyse de la fonction puissance
DEF FN puissance (a :etier) : entier
Résultat=puissance b
b=[b1] pour i de 1 à 4 faire
bb*2
fin pour
Algorithme de la fonction puissance
0) DEF FN puissance (a :etier) : entier
1) b1
Pour i de 1 à 4 faire
bb*2
fin pour
2) puissance b
TDOL
Objet Type/nature Rôle
b enier
i entier
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
12
V. 5 Conversion d’un nombre hexadécimal en décimal
Activité : écrire un programme modulaire en pascal qui permet de saisir un nombre hexadécimal, le
convertit en décimal.
Analyse du programme principal :
2) Résultat= Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10")
1) Ch=proc saisir (ch)
Analyse de la fonction conv_hex_dec :
DEF FN conv_hex_dec (ch :chaîne): entire long
2) Résultat= 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
Analyse de la fonction puissance :
DEF FN puissance (x : entier) : entier long
2) Résultat= puissance p
1) P= [p0] pour i de 1 à x faire
P p * 16
Fin pour
Algorithme de la fonction conv_hex_dec
0) DEF FN conv_hex_dec (ch :chaîne): entire long
1) N0
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
2) conv_hex_dec N
3) Fin conv_hex_dec
Algorithme du programme principal
0) Début conversion
1) proc saisir (ch)
2) Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10")
3) Fin conversion
TDOG
Objet Type/nature
saisir Procédure
Conv_hex_dec fonction
ch chaîne
Algorithme de la fonction puissance
0) DEF FN puissance (x : entier) : entier long
1) p0
Pour i de 1 à x faire
P p * 16
Fin pour
2) Puissance p
3) Fin puissance
TDOL
Objet Type/nature
N Entier long
i entier
TDOL
Objet Type/nature
p Entier long
i entier
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
13
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
14
V.7 Conversion d’un nombre octal en binaire
Similaire à la conversion de l’hexadécimal en binaire.
Exemple :
5 7 3 1
101 111 011 001
Donc (5731)8 = (101111011001)2
V. 8 Conversion d’un nombre binaire en octal
Similaire à la conversion du binaire en hexadécimal
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 d’un nombre octal en décimal
Similaire à la conversion du hexadécimal en décimal
Exemple :
(5732)8 = 5*83 + 7*8
2 + 3*8
1 + 2*8
0 = (3034)10
V. 10 Conversion d’un nombre d’une base b1 en une base b2
Ecrire un programme modulaire en Pascal, qui saisit un nombre d’une base B1 et le convertit en une
base B2 avec (2≤B1≤16 et 2≤B2≤16)
a) Analyse du programme principal
4) Résultat= écrire ("(", ch,") ", b1, "= (", FN conversion (ch, b1, b2), ")", b2)
3) B2= proc saisir (b2)
2) Ch= proc saisir (ch, b1)
1) B1= proc saisir (b1)
Algorithme du programme principal :
0) Début 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
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
15
b) Analyse de la fonction conversion
DEF FN conversion (ch : chaîne ; b1, b2 : entier) : chaîne
3) Résultat = conversion ph
2) Ph FN convb2 (n10, b2)
1) N10 FN conv10 (ch, b1)
c) Analyse de la fonction conv10 (convertit un nombre vers la base décimal)
DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long
2) Résultat= 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
d) Analyse de la fonction convb2 (convertit un nombre décimal vers la base B2)
DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne
2) Résultat= convb2 ph
1) Ph= [ph""] répéter
R n mod b2
Si r ≤9 alors ph chr(r + 48) + ph
Sinon ph chr(r+55) + ph
Fin si
N10 N10 div b2
Jusqu’à (N10 = 0)
e) Analyse de la fonction puissance
DEF FN puissance (x, y : entier) : entier long
2) Résultat= puissance Z
1) Z= [Z 1] pour i de 1 à y faire
Z Z * x
Fin pour
Algorithme de la fonction convesrion 0) DEF FN conversion (ch : chaîne ; b1, b2 : entier) 1) N10 FN conv10 (ch, b1) 2) Ph FN convb2 (n10, b2) 3) conversion ph
4) fin conversion
Algorithme de la fonction conv10
0) DEF FN conv10 (ch : chaîne ; 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
Algorithme de la fonction convb2 0) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne
1) ph"" Répéter
R n mod b2 Si r ≤9 alors ph chr(r + 48) + ph Sinon ph chr(r+55) + ph Fin si N10 N10 div b2
Jusqu’à (N10 = 0) 2) convb2 ph 3) fin convb2
Algorithme de la fonction puissance
0) DEF FN puissance (x, y : entier) : entier long 1) Z 1 Pour i de 1 à y faire
Z Z * x Fin pour 2) puissance Z 3) Fin puissance
PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES
16
top related