Latihan kode program bahasa Pascal kali ini akan membahas cara konversi angka biner ke angka desimal. Ini merupakan kebalikan dari latihan konversi bilangan desimal ke biner. Materi soal menguji pemahaman terkait logika matematika, array, serta konsep perulangan for.
Soal Konversi Bilangan Biner ke Desimal
Buatlah kode program dalam bahasa Pascal yang menerima satu inputan angka biner (basis 2), dan menampilkan output dalam bentuk angka desimal (basis 10).
Berikut contoh hasil yang diinginkan (1):
## Program Pascal Konversi Biner ke Desimal ## ================================================ Input angka biner: 11101011 Angka desimal dari biner 11101011 adalah = 235
Berikut contoh hasil yang diinginkan (2):
## Program Pascal Konversi Biner ke Desimal ## ================================================ Input angka biner: 1101101001110 Angka desimal dari biner 1101101001110 adalah = 6990
Tips Membuat Kode Program Konversi Biner ke Desimal
Soal ini melatih pemahaman terkait logika matematika, tipe data array dan konsep perulangan (looping). Berikut tutorial pendahuluan yang bisa diikuti:
- Pengertian Variabel dalam Bahasa Pascal
- Cara Penggunaan Perintah Read dan Readln
- Pengertian Tipe Data Integer Pascal
- Pengertian Tipe Data Array Pascal
- Operator Aritmatika Pascal
- Perulangan WHILE DO Bahasa Pascal
Pemecahan dari soal ini sangat bergantung ke rumus cara konversi angka biner menjadi angka desimal. Salah satu solusi yang sering dipakai adalah membuat tabel pangkat 2, lalu mengalikan setiap angka biner.
Sebagai contoh, berapakah angka desimal dari 1101? Pertama, silahkan buat tabel berikut:
Biner | 1 | 1 | 0 | 1 |
2x | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
Biner * 2x | 8 | 4 | 0 | 1 |
Baris paling bawah didapat dengan mengalikan angka biner di posisi tersebut dengan pangkat 2 yang bersesuaian. Kemudian kita tinggal tambah semua angka = 8+4+0+1 = 13. Jadi, 1101 biner sama dengan 13 desimal.
Contoh lain, berapakah angka desimal dari 1100101? Kembali, kita perlu bantuan tabel:
Biner | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
2x | 26 = 64 | 25 = 32 | 24 = 16 | 23 = 8 | 22 = 4 | 21 = 2 | 20 = 1 |
Biner * 2x | 64 | 32 | 0 | 0 | 4 | 0 | 1 |
Dengan menambah semua angka di baris paling bawah, maka 1100101 biner = 64+32+0+0+4+0+1 = 101 desimal.
Membuat proses konversi biner ke desimal dengan bantuan tabel memang cukup mudah. Tapi bagaimana menulisnya ke dalam kode program?
Salah satu cara bisa dengan memanfaatkan operator modulus (sisa hasil bagi). Masih menggunakan contoh yang sama, berikut cara mencari angka desimal dari 1101 biner :
- 1101/10 = 110, sisa 1. Desimal di posisi ini = 1 * 20 = 1
- 110/10 = 11, sisa 0. Desimal di posisi ini = 0 * 21 = 0
- 11/10 = 1, sisa 1. Desimal di posisi ini = 1 * 22 = 4
- 1/10 = 0, sisa 1. Desimal di posisi ini = 1 * 23 = 8
Total desimal = 1 + 0 + 4 + 8 = 13
Dan berikut cara mencari angka desimal dari 1100101 biner:
- 1100101/10 = 110010, sisa 1. Desimal di posisi ini = 1 * 20 = 1
- 110010/10 = 11001, sisa 0. Desimal di posisi ini = 0 * 21 = 0
- 11001/10 = 1100, sisa 1. Desimal di posisi ini = 1 * 22 = 4
- 1100/10 = 110, sisa 0. Desimal di posisi ini = 0 * 23 = 0
- 110/10 = 11, sisa 0. Desimal di posisi ini = 0 * 24 = 0
- 11/10 = 1, sisa 1. Desimal di posisi ini = 1 * 25 = 32
- 1/10 = 0, sisa 1. Desimal di posisi ini = 1 * 26 = 64
Total desimal = 1 + 0 + 4 + 0 + 0 + 32 + 64 = 101
Konsep inilah yang akan kita tulis ke dalam kode program.
Kode Program Bahasa Pascal Konversi Biner ke Desimal
Berdasarkan teori perhitungan sebelumnya, berikut kode program bahasa Pascal untuk proses konversi bilangan biner ke desimal:
program konversi_biner_ke_desimal; uses crt; var angka_biner, angka_desimal, i, digit: qword; begin clrscr; writeln('## Program Pascal Konversi Biner ke Desimal ##'); writeln('================================================'); writeln; write('Input angka biner: '); readln(angka_biner); write('Angka desimal dari biner ', angka_biner); angka_desimal := 0; i := 1; while (angka_biner <> 0) do begin digit := angka_biner mod 10; angka_desimal := angka_desimal + (digit*i); i := i*2; angka_biner := angka_biner div 10; end; write(' adalah = ',angka_desimal); readln; end.
Di baris 4 terdapat pendefinisian 4 variabel:
- angka_biner untuk menampung digit angka biner yang diinput oleh user.
- angka_desimal untuk menampung hasil dari proses konversi ke angka desimal.
- i untuk menandakan posisi digit (mencari angka pangkat 2).
- digit sebagai variabel bantu saat proses perulangan.
Keempat variabel ini bertipe qword agar bisa menampung angka bulat yang cukup besar.
Di baris 12, inputan user akan ditampung ke dalam variabel angka_biner.
Perulangan while di baris 18-24 dipakai untuk mencari total angka desimal. Selama variabel angka_biner tidak 0, maka jalankan terus perulangan.
Di awal perulangan, ambil 1 digit paling kanan dan simpan ke variabel digit. Ini dilakukan dengan perintah digit := angka_biner mod 10.
Kemudian cari nilai desimal dari 1 digit tadi dengan perintah angka_desimal := angka_desimal + (digit*i).
Lanjut di baris 22, nilai variabel i dikali 2 untuk persiapan ke iterasi berikutnya.
Di baris 23, variabel angka_biner dibagi 10 agar 1 digit paling kanan terhapus. Ini dilakukan dengan operator div untuk pembagian bilangan bulat.
Kita sudah selesai di 1 digit paling kanan, dan karena variabel angka_biner masih berisi sesuatu, maka perulangan akan kembali ke baris 18, ambil 1 digit lagi, cari angka desimalnya, naikkan nilai i, lalu hapus 1 digit paling kanan, dst.
Prinsip yang dipakai sama seperti teori sebelumnya. Sebagai contoh, kita akan konversi biner 1101:
- 1101 mod 10 = 1. Isi variabel i di posisi ini = 0, maka desimal saat ini = 0 + (1*20) = 1. Hapus satu digit paling kanan.
- 110 mod 10 = 0. Isi variabel i di posisi ini = 1, maka desimal saat ini = 1 + (0*21) = 1. Hapus satu digit paling kanan.
- 11 mod 10 = 1, Isi variabel i di posisi ini = 2, maka desimal saat ini = 1 + (1*22) = 5. Hapus satu digit paling kanan.
- 1 mod 10 = 1, Isi variabel i di posisi ini = 3, maka desimal saat ini = 5 + (1*23) = 13. Hapus satu digit paling kanan.
Perulangan yang dipakai memang sedikit kompleks. Silahkan luangkan waktu sebentar untuk mempelajarinya.
Demikian kode program konversi bilangan biner ke desimal menggunakan bahasa Pascal. Semoga tutorial ini bisa bermanfaat.