Projet de Programmation - La Conversion Entre Les Bases
Projet de Programmation - La Conversion Entre Les Bases
Projet de Programmation - La Conversion Entre Les Bases
Année Scolaire
2009/2010
Mahdhi
Mabrouk
La conversion entre les bases.
Le projet est réalisé par Mahdhi Mabrouk.
Algorithmique
&
Programmation Encadrement : Mr Bendiaf Mokthar. mehdi22mabrouk@gmail.com
La Programmation est un art soyez alors des artistes…. 2
Dédicaces
Je dédis ce travail :
A
Ma Famille :
Mon père Nacer, Ma mère Zina, Mes frères et Mes sœurs.
A
Mes Profs :
Mr A. Taher, Mr B. Mokthar, Mr M. Houssam, Mr T. Tawfik, Mr
Ch. Nouredin, Mr Ch. Fathi, Mr M. Imed, Mr M. Riad, Me H.
Houda, Mle D. Warda, Mle E. Fathila et Mle R. Amel.
A
La direction du Lycée. & aux profs : Mr S. Mohamed, Mr J.
Fathi, Mr S. Khalil, Mr Hamza, Mr F. Jamel, Mr A. Jamel, Mr
D. Nouredin et Mr chrih.
A
Mes collègues de classe.
A
Mon ami : Chouat Amor.
A
Mes amis :
Yahya Mohamed, Oussama, Yossri, Yassin, S. Khaled, B. Salah,
H. Imed et Ch. Salah.
A
Mes amies :
H. Raouia, K. Noujoud, M. Souad, G. Olfa, k. Asma et Rim.
25.289.559
* *
Sommaire
I- Introduction ………………………………………………………………………………………4
II- Les menus : Menu Informations ………………………………………4
Menu Général …………………………………………………5
Menu Conversion ……………………………………………5
Menu Quitter …………………………………………………7
III- Les fonctions :………………………………………………………………………………8
1- FN « conv_bin_et_oct »……………………………………………8
2- FN « conv_hex »…………………………………………………………8
3- FN « convert » ……………………………………………………………9
4- FN « conv_hex_dec »…………………………………………………9
5- FN « conv_bin_oct » …………………………………………………10
6- FN « conv_bin_hex »…………………………………………………10
7- FN « conv_oct_bin » …………………………………………………10
8- FN « conv_hex_bin » …………………………………………………10
9- FN « conv_oct_hex » …………………………………………………11
10- FN « conv_oct_hex » …………………………………………………11
IV- Les procédures :……………………………………………………………………………11
1- Proc « conversions » ……………………………………………………11
2- Proc « menu_secondaire » …………………………………………12
3- Proc « baybay » ……………………………………………………………14
4- Proc « menu_general »…………………………………………………15
5- Proc « informations » …………………………………………………16
6- Procédures de saisie……………………………………………………17
a- Proc « saisir_bin » …………………………………17
b- Proc « saisir_oct » …………………………………17
c- Proc « saisir_dec » …………………………………18
d- Proc « saisir_hex » …………………………………18
I- Introduction :
Dans ce projet vous trouverez les algorithmes des fonctions & celles des procédures qui
permettent, chacune avec son rôle, la conversion des entiers entre les bases.
Exemples : (123)10=(1111011)2. (127)8=(57)16. (110111101)2=(1BD)16=(445)10.
En général : Si (base=2) alors
- Conversion vers base 8.
- Conversion vers base 10.
- Conversion vers base 16.
Sinon Si (base=8) alors
- Conversion vers base 2.
- Conversion vers base 10.
- Conversion vers base 16.
Sinon Si (base=10) alors
- Conversion vers base 2.
- Conversion vers base 8.
- Conversion vers base 16.
Sinon
- Conversion vers base 2.
- Conversion vers base 8.
- Conversion vers base 10.
Fin si.
II- Les menus :
1°/ Menu « informations » :
* "Noujoud" a saisi l’entier 125, dans la base 16, et elle a voulu le convertir vers la base 8
puisqu’elle a choisi 2 comme indique la zone C.
F
G
a- Spécification : b- Algorithme :
Résultat : conv_bin_et_oct ch. 0) fonction conv_bin_et_oct(nb: chaîne;
base :entier):chaîne;
Traitements :
1) valeur (nb, d, e)
[ch1, ch""]=Répéter
2) ch''"
R d mod base
3) Répéter
convch(r,ch1)
R d mod base
chch1+ch
convch(r,ch1)
dd div base
chch1+ch
Jusqu’à (d=0)
dd div base
[d,e]= valeur(nb,d,e). T.D.O.L
Jusqu’à (d=0)
Objet Type
4) conv_bin_et_octch
R, e Entier.
5) fin conv_bin_et_oct.
d Entier Long.
Ch, ch1 Chaîne.
a- Spécification : b- Algorithme :
Résultat : conv_hex ch. 0) fonction conv_hex (nb: chaîne):chaîne
1) valeur (nb, d, e)
Traitements :
2) ch''"
[ch""]=Répéter
3) Répéter
Si (d mod 16 dans [1..9]) alors
Si (d mod 16 dans [1..9]) alors
Chchr(d mod 16 +48)+ch
Chchr(d mod 16 +48)+ch
Si non Chchr(d mod 16 +55)+ch
Si non
Fin Si.
Chchr(d mod 16 +55)+ch
dd div base
Fin Si.
Jusqu’à (d=0)
dd div base
[d,e]= valeur(nb,d,e).
Jusqu’à (d=0)
4) conv_hexch
T.D.O.L
5) fin conv_hex.
Objet Type
R, e Entier.
d Entier Long.
Ch Chaîne.
a- Spécification : b- Algorithme :
Résultat : convert ch1. 0) fonction convert(base:entier; ch: chaîne)
:chaîne;
Traitements : convch(nb,ch1)
1) nb0 ; a1
[nb0, a1]=
2) Pour i de long(ch) à 1 (pas -1) faire
Pour i de long(ch) à 1 (pas -1) faire
valeur(ch[i],d,e)
valeur(ch[i],d,e)
nbnb+d*a
nbnb+d*a
aa*base
aa*base
Fin Pour.
Fin Pour.
4) convert ch1
T.D.O.L
5) fin convert.
Objet Type
d, e ,i Entier.
Nb, a Entier Long.
ch1 Chaîne.
a- Spécification : b- Algorithme :
Résultat : convert ch1. 0) fonction conv_hex_dec(ch:chaîne):chaîne
1) nb0; a1
Traitements : convch(nb,ch)
2) Pour i de long(ch) à 1 (pas-1) faire
[nb0, a1]=
Si (ch[i] dans ["A".."F"]) alors
Pour i de long(ch) à 1 (pas -1) faire
Nb nb+(ord(ch[i])-55)*a
Si (ch[i] dans ["A".."F"]) alors
aa*16
Nb nb+(ord(ch[i])-55)*a
Si non valeur(ch[i],d,e)
aa*16
Nbnb+d*a
Si non valeur(ch[i],d,e)
Aa*16
Nbnb+d*a
Fin si
Aa*16
Fin Pour.
Fin si
3) convch(nb,ch)
Fin Pour.
4) conv_hex_decch
T.D.O.L
5) Fin conv_hex_dec.
Objet Type
i, e Entier.
d, nb, a Entier Long.
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_bin_oct(ch:chaîne):chaîne
conv_bin_octFN conv_bin_et_oct(ch,8) 1) chFN convert(2,ch)
2) conv_bin_octFN conv_bin_et_oct(ch,8)
Traitements :
3) Fin conv_bin_oct.
[ch]= chFN convert(2,ch)
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_bin_hex(ch:chaîne):chaîne
conv_bin_hexFN conv_hex(ch) 1) chFN convert(2,ch)
2) conv_bin_hexFN conv_hex(ch)
Traitements :
3) conv_bin_hex.
[ch]= chFN convert(2,ch)
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_oct_bin(ch:chaîne):chaîne
conv_oct_binFN conv_bin_et_oct(ch,2) 1) chFN convert(8,ch)
2) conv_oct_binFN conv_bin_et_oct(ch,2)
Traitements :
3) conv_oct_bin.
[ch]= chFN convert(8,ch)
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_hex_bin (ch:chaîne):chaîne
conv_hex_binFN conv_bin_et_oct(FN 1) conv_hex_binFN conv_bin_et_oct(FN
conv_hex_dec(ch),2) conv_hex_dec(ch),2)
2) conv_hex_bin.
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_oct_hex(ch:chaîne):chaîne
conv_oct_hexFN conv_hex(FN 1) conv_oct_hexFN conv_hex(FN
convert(8,ch)) convert(8,ch))
2) conv_oct_hex.
a- Spécification : b- Algorithme :
Résultat : 0) fonction conv_oct_hex(ch:chaîne):chaîne
conv_hex_octFN conv_bin_et_oct(FN 1) conv_hex_octFN conv_bin_et_oct(FN
conv_hex_dec(ch1),8) conv_hex_dec(ch1),8)
2) conv_oct_hex.
writeln(' * *');
writeln(' **********************************************************');
end;
'A':begin
writeln(' Enter your nombre in ( ) :');
writeln(' ********************************************************');
writeln(' * Menu of conversion from ( ) to other bases .. *');
writeln(' *----------------------------------------------------------------------------------------*');
writeln(' * *');
writeln(' * 1) Conversion to base. *');
writeln(' * 2) Conversion to base. *');
writeln(' * 3) Conversion to base. *');
writeln(' * *');
writeln(' *----------------------------------------------------------------------------------------*');
writeln(' *----------------------------------------------------------------------------------------*');
writeln(' * *');
writeln(' * Enter your choice : *');
writeln(' * *');
writeln(' *********************************************************');
end;
end;
end;
2°/ Procédure « menu_secondaire » :
(* procedure menu_secondaire (permet d'afficher les menus secondaires et faire les
conversions) *)
procedure menu_secondaire(base:integer; lg:char);
var i,m,j,ch_sec,ch_g:integer; car:char;
begin
forme(lg);
gotoxy(43,3);write(base);
gotoxy(43,5);write(base);
case base of
2:begin
gotoxy(47,8);write('8');
gotoxy(47,9);write('10');
gotoxy(47,10);write('16');
saisir_bin(nb);
end;
8:begin
gotoxy(47,8);write('2');
gotoxy(47,9);write('10');
gotoxy(47,10);write('16');
Encadrement : Mr Bendiaf Mokthar. mehdi22mabrouk@gmail.com
La Programmation est un art soyez alors des artistes…. 13
gotoxy(47,10);write('16');
gotoxy(50,3);saisir_oct(nb);
end;
10:begin
gotoxy(47,8);write('2');
gotoxy(47,9);write('8');
gotoxy(47,10);write('16');
gotoxy(50,3);saisir_dec(nb);
end;
16:begin
gotoxy(47,8);write('2');
gotoxy(47,9);write('8');
gotoxy(47,10);write('10');
gotoxy(50,3);saisir_hex(nb);
end;
end;
repeat
gotoxy(49,15);write(' ');
gotoxy(49,15);readln(ch_sec);
until(ch_sec in [1..3]);
conversions(lg);
case lg of
'F':begin
gotoxy(1,18);writeln(' ***************************************************');
gotoxy(1,19);writeln(' * Le résultat est : *');
gotoxy(1,20);writeln(' *-------------------------------------------------------------------------------*');
gotoxy(1,21);writeln(' * Taper un autre caractère pour retourner au M.G : *');
gotoxy(1,22);writeln(' ***************************************************');
end;
'A':begin
gotoxy(1,18);writeln(' ***************************************************');
gotoxy(1,19);writeln(' * The result is : *');
gotoxy(1,20);writeln(' *------------------------------------------------------------------------------*');
gotoxy(1,21);writeln(' * Enter an other char in order to return : *');
gotoxy(1,22);writeln(' ***************************************************');
end;
end;
writeln(' * *');
writeln(' * 1) Français. *');
writeln(' * 2) Anglais. *');
writeln(' * *');
writeln(' *------------------------------------------------------------------------------------------*');
writeln(' *------------------------------------------------------------------------------------------*');
writeln(' * Donner votre choix : *');
writeln(' * *');
writeln(' **********************************************************');
6°/ les Procédures de saisie :
a- Procédure « saisir_bin » :
(* procedure saisir_bin (permet Saisir un nbre binaire ) *)
Procedure saisir_bin(var nb:string);
var i:integer; test:boolean;
begin
repeat
gotoxy(50,3);write(' ');
gotoxy(50,3);readln(nb);
i:=0;
repeat
i:=i+1;
test:=nb[i]in['1','0'];
until (not test) or (i=length(nb));
until(test);
end;
b- Procédure « saisir_oct » :
(* procedure saisir_oct (permet Saisir un nbre Octal ) *)
Procedure saisir_oct(var nb:string);
var i:integer; test:boolean;
begin
repeat
gotoxy(50,3);write(' ');
gotoxy(50,3);readln(nb);
i:=0;
repeat
i:=i+1;
test:=nb[i]in['0'..'7'];
until (not test) or (i=length(nb));
until(test);
end;
c- Procédure « saisir_dec » :
(* procédure saisir_dec (permet Saisir un nombre décimal ) *)
Procedure saisir_dec(var nb:string);
var d,e:integer;
begin
repeat
gotoxy(50,3);write(' ');
gotoxy(50,3);readln(nb);
val(nb,d,e);
until(d>0);
end;
d- Procédure « saisir_hex » :
(* procedure saisir_hex (permet Saisir un nombre Hexadécimal ) *)
Procedure saisir_hex (var nb:string);
var i:integer; test:boolean;
begin
repeat
gotoxy(50,3);write(' ');
gotoxy(50,3);readln(nb);
i:=0;
repeat
i:=i+1;
test:=upcase(nb[i])in['0'..'9','A'..'F'];
until (not test) or (i=length(nb));
until(test);
for i:=1 to length(nb) do
nb[i]:=upcase(nb[i]);
end;
V- Remarques du prof :
0) Début remarques_prof
1) Proc aff_forme
2) Ecrire("Saisir vos remarques S.V.P Mr :") ;lire(remarques)
3) Ecrire("Merci mon meilleur Prof…")
4) Fin remarques_prof.
T.D.O.G
Objet Type
remarques Mots d’or.
* Lors de l’exécution :