Anzeige

Les algorithmes d'arithmetique

20. Aug 2012
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Anzeige
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Anzeige
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Anzeige
Les algorithmes d'arithmetique
Les algorithmes d'arithmetique
Nächste SlideShare
Algorithmes d'approximationAlgorithmes d'approximation
Wird geladen in ... 3
1 von 16
Anzeige

Más contenido relacionado

Anzeige

Les algorithmes d'arithmetique

  1. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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) 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 procédure 3) Fin arrangement calcul fonction 1
  2. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES b) Analyse de la procédure saisir Algorithme de la procédure saisir DEF PROC saisir var (n, p : entier) 0) DEF PROC saisir (var n, p : entier) Résultat = n, p 1) Répéter 2) N= [ ] répéter Ecrire ("P= "), lire (P) N= donnée ("N=") Jusqu’à (p≥1) Jusqu’à (n≥p) 2) Répéter 1) P= [ ] répéter Ecrire ("N= "), lire (N) P= donnée ("P= ") Jusqu’à (N≥p) 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) Résultat = calcul  a 1) A 1 1) A= [a1] pour i de n à (n-p+1) (pas=-1) Faire Pour i de n à n-p+1 (pas=-1) Faire Aa*i Aa*i Fin pour Fin pour 2) Calcul a TDOL 3) Fin calcul objet Tupe/nature I Entier a entier 2
  3. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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) 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 procédure calcul fonction b) Analyse de la procédure saisir DEF PROC saisir var (n, p : entier) Résultat = n, p 2) N= [ ] répéter Algorithme de la procédure saisir N= donnée ("N=") Jusqu’à (n≥p) 0) DEF PROC saisir (var n, p : entier) 1) P= [ ] répéter 1) Répéter P= donnée ("P= ") Ecrire ("P= "), lire (P) Jusqu’à (p ≥0) Jusqu’à (p≥0) 2) Répéter Ecrire ("N= "), lire (N) Jusqu’à (N≥p) 3) Fin saisir c) Analyse de la fonction calcul DEF FN calcul (n, p : entier) : real Algorithme de la fonction calcul 2) Résultat = calcul  c 0) DEF FN CALCUL (n, p : entier) : réel 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
  4. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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 4
  5. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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 Algorithme du programme principal 2) Résultat = CONV_DEC_BIN  ch 1)Ch=[ch  ""] répéter 0) Début 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) : 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 5
  6. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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. Algorithme du programme principal a) Analyse du programme principal 2) Résultat = Ecrire (FN conv_bin_dec(ch)) 0) Début conversion 1)Ch= proc saisir (ch) 1) Proc saisir (ch) 2) Ecrire (FN conv_bin_dec(ch)) 3) Fin conversion b) Analyse de la procédure saisir DEF PROC SAISIR (var ch : chaîne) Algorithme de la procédure saisir Résultat = ch 0) DEF PROC SAISIR (var ch : chaîne) 1)Ch=[ ] répéter 1) répéter Ch= donnée ("CH= ") Ecrire ("CH= "), lire (ch) i0 i0 répéter répéter ii+1 ii+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 :chaîne) : entier long 0)DEF FN conv_bin_dec (ch :chaîne): entire long 2)Résultat = conv_bin_dec  n 1)N <- 0 1)N= [n0] 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)Résultat = puissance p 1)p 1 Pour i de 1 à x faire 1)P=[ p 1] pour i de 1 à x Faire Pp*2 P  2*p Fin pour Fin pour 2)puissance p 3) Fin puissance 6
  7. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 7
  8. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature Rôle 1) proc saisir (ch) Ch Chaîne Saisir Procédure 2) Ecrire ("("ch,») 16= (", FN conv_hex_bin(ch), ")2") Conv_hex_bin fonction 3 Fin conversion Analyse de la procédure saisir TDOL DEF PROC saisir (var ch :chîne) Objet Type/nature Rôle Résultat = ch i Entier test booléen 1)Ch=[ ] répéter Algorithme de la procédure saisir Ch= donnée ("CH=") 0) DEF PROC saisir (var ch :chîne) i 0 1) répéter Répéter Ecrire ("CH="), lire (ch) i  i+1 i 0 Répéter 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 : chaîne): chaîne 2)Résultat= conv_hex_bin  ph 2)Ph=[] tant que ph[1]= "0" faire TDOL Efface(ph, 1, 1) Objet Type/nature Rôle i Entier Fin tant que con fonction 1)Ph=[ph""]pour i de 1 à long (ch) faire ph chaîne 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 TDOL 2)Résultat= convdh Objet Type/nature Rôle i Entier 1)dh=[dh"0000", i4] répéter dh chaîne dh[i]  chr((x mod 2)+48) x x div 2 i i – 1 8
  9. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES Algorithme de la fonction conv_hex_bin jusqu’à (x=0) 0) DEF FN conv_hex_bin (ch : chaîne): chaîne Algorithme de la fonction conv 1) Ph"" 0) DEF FN conv (x : entier): chaîne pour i de 1 à long (ch) faire 1) dh"0000" Si ch[i] dans ["0".."9"] alors ph  ph + conv(ord(ch[i])-48) i4 Sinon ph ph + conv (ord(ch[i])-55) répéter 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
  10. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature Rôle Conv_bin_hex fonction 1) proc saisir (ch) ch chaîne 2) Ecrire ("(", ch, ") 2= (", conv_bin_hex(ch), ")16") Saisir procédure 3) Fin conversion 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) Algorithme de la fonction conv_bin_hex Jusqu’à (long (ch)=0) 1) Ch=[ ] tant que long(ch) mod 4≠0 Faire 0) DEF FN conv_bin_hex (ch : chaîne): chaîne Insère (ch, "0", 1) 1) tant que long(ch) mod 4≠0 Faire Fin tant que Insère (ch, "0", 1) Fin tant que TDOL 2) ph "" Objet Type/nature Rôle Répéter conv fonction Ph  ph + FN conv (sous-chaîne (ch, 1, 4)) ph chaîne 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 : chaîne) : caractère Résultat= 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 : chaîne) : caractère Fin si 1) x0 pour i de 1 à 4 faire 1) x=[x0] 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 Rôle Fin si x enier 3) Fin conv i entier 10
  11. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES Analyse de la fonction puissance Algorithme de la fonction puissance DEF FN puissance (a :etier) : entier Résultat=puissance b 0) DEF FN puissance (a :etier) : entier 1) b1 b=[b1] pour i de 1 à 4 faire Pour i de 1 à 4 faire bb*2 bb*2 fin pour TDOL fin pour Objet Type/nature Rôle 2) puissance b b enier i entier 11
  12. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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) Algorithme du programme principal TDOG 0) Début conversion Objet Type/nature 1) proc saisir (ch) saisir Procédure Conv_hex_dec fonction 2) Ecrire ("(ch",") 16= (", FN conv_hex_dec (ch),") 10") ch chaîne 3) Fin conversion 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 Algorithme de la fonction conv_hex_dec 0) DEF FN conv_hex_dec (ch :chaîne): entire long 1) N0 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) Résultat= puissance p Algorithme de la fonction puissance 1) P= [p0] pour i de 1 à x faire 0) DEF FN puissance (x : entier) : entier long P  p * 16 1) p0 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
  13. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 13
  14. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 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*82 + 3*81 + 2*80 = (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) Algorithme du programme principal : 2) Ch= proc saisir (ch, b1) 1) B1= proc saisir (b1) 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 14
  15. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES b) Analyse de la fonction conversion DEF FN conversion (ch : chaîne ; b1, b2 : entier) : chaîne 3) Résultat = conversion  ph Algorithme de la fonction convesrion 2) Ph  FN convb2 (n10, b2) 0) DEF FN conversion (ch : chaîne ; 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 décimal) DEF FN conv10 (ch : chaîne ; b1 : entier) : entier long 2) Résultat= conv10 n 1) N= [n0] 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 : chaîne ; b1 : entier) : entier long 1) n0 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 décimal vers la base B2) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne 2) Résultat= convb2  ph Algorithme de la fonction convb2 1) Ph= [ph""] répéter 0) DEF FN convb2 (n1O : entier long ; b2 : entier) : chaîne R  n mod b2 1) ph"" Si r ≤9 alors ph  chr(r + 48) + ph Répéter 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) Résultat= puissance  Z Pour i de 1 à y faire 1) Z= [Z 1] pour i de 1 à y faire ZZ*x Fin pour ZZ*x 2) puissance  Z Fin pour 3) Fin puissance 15
  16. PROF : Mohamed SAYARI 4 SI LES ALGORITHMES D’ARITHMETIQUES 16
Anzeige