Halo Sobat ssemua, hari ini kita belajar metode numerik dech yang menggunakan Pascal, konversi bilangan ini hasil temen yang jago programer dia mas Sarwono pas ada tugas, thank mas @.
Yang terdiri dari konversi biner ke desimal,biner ke oktal, biner ke heksa dan sebaliknya.
Nich dia listing programnya :
program konversi_bilangan;
uses wincrt;
const max_array=25; {menentukan panjang karakter yang dapat ditangani}
var input : string; {menampung inputan bilangan}
pilih_menu : byte; {menampung pilihan menu}
kembali : char; {kembali ke menu}
{Untuk mengubah input menjadi nilai dalam desimal agar mempermudah penghitungan}
function nilaiBil(_bil:char):integer;
var Code : Word;
nilai: integer;
begin
case upcase(_bil) of
'A': nilaiBil:=10;
'B': nilaiBil:=11;
'C': nilaiBil:=12;
'D': nilaiBil:=13;
'E': nilaiBil:=14;
'F': nilaiBil:=15;
else
begin
Val(_bil,nilai,Code);
nilaiBil:=nilai;
end;
end;
end;
{ Convert integer type to a string }
function IntToStr(I: Longint): String;
var
S: string[11];
begin
Str(I, S);
IntToStr := S;
end;
{Untuk menghitung pangkat}
function pangkat(a,b:real) : integer;
begin
pangkat := round(exp(b * ln(a)));
end;
{Mengubah bilangan dari desimal ke tipe lain}
function dariDesimal(bil,basis : string): String;
var hasil : string;
Code:Word;
sisa,_bil,_basis:Integer;
begin
Val(basis,_basis,Code);
Val(bil,_bil,Code);
hasil:='';
repeat
sisa:=_bil mod _basis;
case sisa of
0: hasil:= '0' + hasil;
1: hasil:= '1' + hasil;
2: hasil:= '2' + hasil;
3: hasil:= '3' + hasil;
4: hasil:= '4' + hasil;
5: hasil:= '5' + hasil;
6: hasil:= '6' + hasil;
7: hasil:= '7' + hasil;
8: hasil:= '8' + hasil;
9: hasil:= '9' + hasil;
10:hasil:= 'A' + hasil;
11:hasil:= 'B' + hasil;
12:hasil:= 'C' + hasil;
13:hasil:= 'D' + hasil;
14:hasil:= 'E' + hasil;
15:hasil:= 'F' + hasil;
end;
_bil:=_bil div _basis;
until _bil=0;
dariDesimal:=hasil;
end;
{Untuk mengubah bilangan ke tipe desimal}
function keDesimal(bil,basis:String):String;
var i,j,_basis : Byte;
Code : Word;
hasil : Integer;
begin
Val(basis,_basis,Code);
hasil:=0;
j:=0;
for i:=Length(bil) downto 1 do
begin
hasil := hasil + nilaiBil(bil[i])*pangkat(_basis,j);
inc(j);
end;
keDesimal:=IntToStr(hasil);
end;
{Untuk menggambar garis horisontal menyesuaikan panjang string inputan}
function garisbawah(kalimat:string):string;
var i:byte;
garis : String;
begin
garis:='';
for i:=1 to Length(kalimat) do
garis:=garis+'=';
garisbawah:=garis;
end;
{Prosedur tampilan konversi bilangan}
procedure konversiBilangan(x,y:String);
var _x,_y : String;
ulangi : char;
begin
repeat
clrscr;
if x='2' then _x:='biner'
else if x='8' then _x:='oktal'
else if x='10' then _x:='desimal'
else _x:='heksa';
if y='2' then _y:='biner'
else if y='8' then _y:='oktal'
else if y='10' then _y:='desimal'
else _y:='heksa';
writeln('Konversi bilangan ',_x,' ke ',_y);
writeln(garisbawah('Konversi bilangan '+_x+' ke '+_y));
writeln;
write('Masukkan bilangan: ');readln(input);
if y='10' then
writeln('Nilai desimal dari bilangan ',input,' = ',keDesimal(input,x))
else if x='10' then
writeln('Nilai ',_y,' dari bilangan ',input,' = ',dariDesimal(input,y))
else
begin
write('Nilai ',_y,' dari bilangan ',input,' = ',dariDesimal(keDesimal(input,x),y));
end;
writeln;
write('Apakah anda ingin mengulangi ?[Y/T]');
ulangi:=readkey;
until upcase(ulangi)='T';
end;
{Prosedur tampilan menu}
procedure Menu;
begin
clrscr;
writeln('Program Konversi Bilangan');
writeln(garisbawah('Program Konversi Bilangan'));
writeln;
writeln('Menu :');
writeln('1. Konversi biner ke oktal');
writeln('2. Konversi biner ke desimal');
writeln('3. Konversi biner ke heksa');
writeln('4. Konversi oktal ke biner');
writeln('5. Konversi oktal ke desimal');
writeln('6. Konversi oktal ke heksa');
writeln('7. Konversi desimal ke biner');
writeln('8. Konversi desimal ke oktal');
writeln('9. Konversi desimal ke heksa');
writeln('10.Konversi heksa ke biner');
writeln('11.Konversi heksa ke oktal');
writeln('12.Konversi heksa ke desimal');
writeln('13.Keluar program');
writeln;
write('Masukkan pilihan anda : ');readln(pilih_menu);
case pilih_menu of
1 : konversiBilangan('2','8');
2 : konversiBilangan('2','10');
3 : konversiBilangan('2','16');
4 : konversiBilangan('8','2');
5 : konversiBilangan('8','10');
6 : konversiBilangan('8','16');
7 : konversiBilangan('10','2');
8 : konversiBilangan('10','8');
9 : konversiBilangan('10','16');
10 : konversiBilangan('16','2');
11 : konversiBilangan('16','8');
12 : konversiBilangan('16','10');
13 : donewincrt;
end;
end;
{Program utama}
begin
repeat
menu;
until false;
end.
Dan ini hasilnya:
Ini sourecenya :
http://www.wupload.com/file/3353562/Konversi_Bilangan_dengan_Pascal.rar
Sabtu, 28 Mei 2011
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar