Program ini elum saatnya untuk kita buat karena menggunakan fungsi-fungsi yang belum di ajarkan.. tetapi sekedar refrensi tak apa lah,,,
Pada bagian awal ini akan dijelaskan dahulu konsep perhitungan
konversi dari desimal ke biner. Misalkan diberikan bilangan desimal 17.
Untuk langkah konversinya adalah sbb:
Step 1. 17 dibagi 2 mendapatkan 8 sisa 1
Step 2. 8 dibagi 2 mendapatkan 4 sisa 0
Step 3. 4 dibagi 2 mendapatkan 2 sisa 0
Step 4. 2 dibagi 2 mendapatkan 1 sisa 0
Karena pada step terakhir hasil pembagiannya sudah sama dengan 1
(atau dengan kata lain perulangan masih terus dilakukan selama hasil
baginya >= 1). Sekarang perhatikan sisa-sisa pembagian pada setiap
step. Langkah selanjutnya, susun sisa-sisa bilangan itu mulai dari step
terakhir sampai dengan step pertama dan diperoleh 0001. Langkah
terakhir adalah menambahkan digit 1 di depan 0001 menjadi 10001. Nah
diperoleh bilangan biner dari 17 adalah 10001.
Sekarang konsep di atas akan diimplementasikan ke dalam program
Pascal. Yang menjadi pertanyaan adalah bagaimana cara membagi bilangan
dengan 2 supaya diperoleh hasil bulat (seperti pada perhitungan 17
dibagi 2 mendapatkan 8). Jangan khawatir… dalam Pascal tersedia operator
div. Operator ini digunakan untuk membagi dua bilangan bertipe bulat dan menghasilkan hasil pembagian berupa bilangan bulat pula.
Selanjutnya, karena proses perhitungan di atas dilakukan
berulang-ulang maka nantinya akan digunakan
perulangan/looping dalam
program. Lantas, statement loopingnya menggunakan apa? FOR, WHILE atau
REPEAT? Jenis perulangan yang digunakan sebaiknya jangan menggunakan FOR
karena jumlah perulangannya tidak jelas. Sehingga nantinya akan
kesulitan dalam menentukan syarat berhentinya perulangan.
Berikut ini adalah program Pascal untuk mengkonversi bilangan desimal ke biner.
program konversiDecToBin;
var bilangan : integer;
function decToBin(desimal : integer) : string;
var hasilBagi, sisa : integer;
bin : char;
bilBiner : string;
begin
hasilBagi := desimal div 2;
bilBiner := '';
{ syarat perulangan : selama hasil bagi lebih besar sama dengan 1 }
while (hasilBagi >= 1) do
begin
sisa := desimal mod 2;
if (sisa = 0) then bin := '0'
else if (sisa = 1) then bin := '1';
{ menggabung sisa pada setiap perulangan untuk membentuk digit biner}
bilBiner := bin + bilBiner;
desimal := hasilBagi;
hasilBagi := desimal div 2;
end;
decToBin := '1' + bilBiner;
end;
begin
bilangan := 200;
write('Bilangan binernya : ', decToBin(bilangan));
readln;
end.