Cari Blog Ini

Rabu, 12 Maret 2025

Modulo 11 untuk ISBN

 


Saat membaca atau memegang buku, pernahkah kalian meluangkan waktu untuk melirik bagian belakang buku, tepatnya pada International Standard Book Number atau disingkat ISBN. Nah pada bagian belakang buku, nomer ISBN ini tercetak pada Barcode.

Seperti gambar di atas, ISBN dari sebuah buku dengan 13 digit. Sebelum ini yang kita kenal adalah ISBN dengan 10 digit. Perubahan dari 10 ke 13 ini ditandai dengan ditambahnya digit 978 di bagian depan kode.

Tahukah kalian, algoritma untuk men-generate ISBN adalah menggunakan modulo 11.

Modulo 11 banyak sekali digunakan sebagai alat keamanan. Sebagai contoh, antara lain sebagai digit uji pada ISBN

Sebelum kita bahas lebih lanjut, kita kenali dulu yuk, arti masing – masing bagian dari ISBN yang terdiri dari 5 bagian.

1. Bagian pertama, ISBN 13 digit selalu diawali “978″
2. Bagian kedua menandakan Group Geografi atau Negara penerbit .

3. Bagian ketiga adalah identitas penerbit
4. Bagian keempat adalah kelompok judul buku.

5. Bagian kelima adalah Karakter Uji yang memvalidasi ISBN.

Pada contoh barcode di atas 0 adalah kode negara berbahasa Inggris (UK, US, Australia, NZ, Canada,South Africa, Zimbabwe) [Ireland, Puerto Rico, Swaziland]

Karakter penguji digunakan untuk mendeteksi kesalahan pada karakter ISBN atau kesalahan pada pergeseran angka-angkanya. Karakter uji ini didapat dengan melakukan perhitungan sebagai berikut:

Karakter uji = mod 11

Contoh menentukan karakter uji adalah sebagai berikut :

Sebagai contoh, kita gunakan contoh ISBN di atas. Gunakan mulai digit 4 dan digit ke-12 yaitu : 0-7334-2609

Jumlahkan = 0+14+9+12+20+12+42+0+81 = 290

Hitung 290 mod 11 = 4 (256 / 11 = 26 sisa 4)

Sisa 4 ini yang nanti akan menjadi karakter terakhir sebagai Karakter Uji, sehingga secara keseluruhan ISBN secara lengkap adalah 0-7334-2609-4

Jika karakter terakhir disertakan, maka hasil perhitungan modulo sama dengan 0.

Contoh :

Jika pada contoh diatas, kita lanjutkan perhitungan hingga karakter terakhir (digit ke-10), maka 290 + (10×4) = 330

330 mod 11 = 0

Berikut ini merupakan kode program sederhana memakai bahasa C++ untuk melakukan pengecekan terhadap suatu kode ISBN dengan memanfaatkan karakter uji:





















Untuk menguji apakah kode ISBN yang dimasukan valid atau tidak kita tinggal melakukan pemeriksaan terhadap hasil perhitungan modulo 11 dari nilai total penjumlahan hasil perkalian indeks dengan digit kode ISBN. Apakah sama dengan karakter uji atau tidak.

Jika sama maka artinya kode ISBN valid. Atau dalam program diatas digunakan persamaan:

sum % 11 == (string[9]-48)

Dimana nilai string[9]-48 adalah digit terakhir dari kode ISBN.

Sebelum tiap karakter diperiksa terlebih dahulu dikurangkan dengan 48. Kenapa? Karena string[i] akan bernilai sama dengan kode ASCII. Untuk angka 0-9 kode ASCII berada diantara 48-57.

Dalam program ini terdapat satu fungsi yaitu inputISBN(). Fungsinya adalah untuk mendapatkan inputan kode ISBN dari pengguna. Inputan akan diperiksa apakah panjangnya sudah 10 digit atau belum. Fungsi ini yang pertama kali dijalankan saat program dieksekusi.

Blok program :

for(int i = 1; i <= strlen(string) – 1; i++)

{

tambah = tambah + (i * (nomorISBN[i-1] – 48));

}

akan menghitung nilai tiap digit kode (nomorISBN[i-1] – 48) dikalikan dengan nilai i kemudian dijumlahkan dengan nilai tambah.

Setelah diperoleh nilai tambah maka dilakukan pemeriksaan dengan menggunakan ekspresi sum % 11 == (string[9]-48).

Jika benar (menghasilkan nilai 1) maka akan ditampilkan string “Kode ISBN valid”, jika salah akan ditampilkan string “Kode ISBN tidak valid”.

Selamat Mencoba.

Referensi :

Buku Matematika Diskrit, Rinaldi Munir, Informatika, Bandung
https://asihwidi.wordpress.com/2012/01/04/modulo-11-untuk-isbn/


0 comments:

Posting Komentar