Oracle, Web, Script, SQLserver, Tips & Trick

October 4, 2013

Konversi biner (BCD) menggunakan turbo pascal

Filed under: pascal — sikathabis @ 9:31 pm
Tags:
Program Konversi_Bilangan_Biner;
{$N+}
Uses Crt;
type
    real=extended;
    tipe=real;
var Bin   : string;
    i,j,k : integer;
    biner : tipe;
function Pangkat( a,b : real ): real;
begin
   if a=0 then
      pangkat:=0
   else
      pangkat:=exp( b*ln(a) );
end;
function Desimal( bind : string ) : tipe;
var temp : tipe;
begin
  temp:=0; j:=length( bind )-1;
  for i:=1 to length( bind ) do if bind[i]='.' then j:=i-2;
  for i:=1 to length( bind ) do
  begin
   if bind[i]='.' then
        j:=-1
   else
     begin
        if bind[i]='1' then temp:=temp+pangkat( 2,j );
        j:=j-1;
     end;
  end;
  desimal:=temp;
end;
function B2h( bind : string ): string;
const hexx:array[0..15] of char=( '0','1','2','3','4','5','6','7','8',
                                  '9','A','B','C','D','E','F' );
var
    pos   : byte;
    tmp   : tipe;
    n     : integer;
    dumy  : string;
begin
    pos:=0; tmp:=0; n:=length( bind ); dumy:='';
    for i:=1 to length( bind ) do if bind[i]='.' then
    begin
       pos:=i; n:=pos-1;
    end;
    if n mod 4=0 then j:=3 else j:=(n mod 4)-1;
    for i:=1 to length( bind ) do
    begin
        if bind[i]='.' then
        begin
           dumy:=dumy+'.';
           j:=4;
        end
        else
          if (j=0)or(i=n)or(i=length( bind )) then
        begin
           if bind[i]='1' then tmp:=tmp+pangkat( 2,j );
           dumy:=dumy+hexx[round(tmp)];
           j:=4; tmp:=0;
        end
        else if bind[i]='1' then tmp:=tmp+pangkat( 2,j );
        j:=j-1;
    end;
B2h:=dumy;
end;
function B2O( bind : string ): string;
const okt : array[0..7] of char=( '0','1','2','3','4','5','6','7' );
var pos   : byte;
    tmp   : tipe;
    n     : integer;
    dumy  : string;
begin
    pos:=0; tmp:=0; n:=length( bind ); dumy:='';
    for i:=1 to length( bind ) do if bind[i]='.' then
    begin
       pos:=i; n:=pos-1;
    end;
    if n mod 3=0 then j:=2 else j:=(n mod 3)-1;
    for i:=1 to length( bind ) do
    begin
        if bind[i]='.' then
        begin
           dumy:=dumy+'.';
           j:=3;
        end
        else if (j=0)or(i=n)or(i=length( bind )) then
        begin
           if bind[i]='1' then tmp:=tmp+pangkat( 2,j );
           dumy:=dumy+okt[round(tmp)];
           j:=3; tmp:=0;
        end
        else if bind[i]='1' then tmp:=tmp+pangkat( 2,j );
        j:=j-1;
    end;
B2O:=dumy;
end;

begin
   clrscr;
   TextMode( 40+Font8x8 );
   writeLn( 'KONVERSI BILANGAN (TIDAK/DENGAN) MENGGUNAKAN DIGIT DESIMAL' );
   writeLn( 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' );
   writeLn( 'example: 1101111 atau 1101.110110111101(untuk pecahan)');
   writeLn( 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ' );
   TextAttr:=$0A; k:=0;
   write  ( 'Masukan Bilangan Biner ',#26,' ' ); readLn( Bin );
   for i:=1 to length( Bin ) do
       if bin[i] in ['0','1'] then
       else
           if bin[i]='.' then inc( k )
       else
       begin
         WriteLn( 'Error Expression !' ); readkey; halt(1);
       end;
   if k > 1 then
   begin
     WriteLn( 'Error Expression ''.'' !' ); readkey; halt(1);
   end;
   writeLn( 'Desimalnya adalah      ',#26,' ',desimal( bin ):-8:2 );
   writeLn( 'Oktalnya adalah        ',#26,' ',B2O( bin ) );
   writeLn( 'HexaDesimalnya adalah  ',#26,' ',B2h( bin ));
   readkey;
  {TextMode( LastMode );}
   TextAttr:=$07;
end.
(* Originally written by Muhamad Taufan *)

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

Teknologi Pendidikan

Just another WordPress.com weblog

KATAKAMI

Jurnalisme Yang Dapat Dipercaya

Tonk Kosonk Baonk Bunyinya

Penampungan Serapah Tanpa Sumpah

Qey050489's Blog

Ayo Bangkit sobat..!!!!!

B. S. Totoraharjo

Orang Bodoh Yang Tak Kunjung Pandai

culturekitchen foodlab

New Food and Art in Yogyakarta

Wahyu Catur Wibowo

Musafir Dunia Maya

SQL.... Still Learning

My Reference on SQL Server

neinframe

Street Photography is like a box of a chocolates, you're never know what you're gonna get - Thomas Leuthard -

Keluarga Andrivito

-- Andrivito's Journal --

DRK™

This site is about Latest NEWS, Articles, Videos, Books, Course, Presentations, Tips & Tricks related to I.T Pro's

Gaurav Saxena

|| तत् त्वम् असि ||

Be a good Moeslim

Menuju Pribadi Muslim Sejati yang Bertaqwa

TuanSUFI

Manajemen Sholat, renungan spiritual, Teknologi Informasi

Pelangi di khatulistiwa....

Mari berbagi kebaikan, pengalaman dan senyum denganku

angkasa13

Ceritanya saya, Pikirannya saya, Hatinya saya

sikathabis

sikathabis semua informasi disini

%d bloggers like this: