Kekuatan Modulo dalam Pemrograman

modulo operation    Operasi Modulo tidaklah sama dengan persentase meskipun lambang dari keduanya adalah dua buah bulatan yang dipisahkan oleh sebuah garis miring. Singkatnya, modulo adalah sisa hasil bagi. Kemudian apa fungsionalitasnya? Pertanyaan bagus!

     Pengaplikasian dasarnya untuk dijadikan contoh, modulo dari 8 dibagi 5 adalah 3 dikarenakan sisa pembagian dari 8 dengan 5 adalah 3. Pernyataan tersebut jika ditulis dengan kalimat matematika adalah :

8 % 5 = 3 atau 8 mod 5 = 3

Berikut contoh yang lainnya :

24 mod 7 = 3

164 mod 13 = 8

53333 mod 2013 = 125

dan lain sebagainya…

     Kadang soal-soal sulit berpangkat seperti contoh terakhir muncul dalam olimpiade sekolah bahkan semenjak tingkat SMP. Teori dasarnya pun tidak sulit, namun pertanyaan terbesar adalah, untuk apa kita mempelajari ini semua? Mungkin beberapa saya akan coba jabarkan beberapa dari sisi pemrograman komputer.

 

  • Modulo berfungsi untuk mengecek ganjil-genap

     Bagaimana jika ada suatu kasus di mana jika sebuah variabel bilangan harus diketahui ganjil-genapnya? Misalnya, jika bilangan variabel itu ganjil maka harus melakukan perintah tertentu. Maka modulo adalah salah satu solusinya.

     Teori dasarnya yaitu segala sesuatu bilangan bulat yang habis dibagi 2 adalah bilangan genap.

 

  • Modulo berfungsi untuk mengecek status khusus

     Sebenarnya jika memang kita ingin menulis suatu kode yang tidak perlu orang lain tahu, maka cukup ditulis dengan bilangan-bilangan tertentu kemudian modulo dengan bilangan prima. Misalnya, kita ingin jikalau variabel murid hanya dapat menulis dan membaca sebuah tulisan, sementara variabel guru dapat melakukan semua hal. Maka,

      Adapun alternatif dalam menggunakan pengecekan status di atas adalah dengan menggunakan bitwise AND untuk yang telah memahami.

 

  • Modulo berfungsi sebagai pengulangan praktis

     Pernahkah kita melihat suatu tampilan menu baik itu di telepon selular ataupun di komputer bahkan dalam permainan sekalipun, jika kita berada pada menu yang paling bawah dan kita tekan tombol bawah, maka sorotan menu tersebut kembali lagi ke atas atau sebaliknya? Bagi programmer pemula mungkin masih menggunakan :

      Sebaiknya hal itu ditinggalkan karena hanya akan membuat kode terlihat lebih panjang. Menggunakan modulo adalah pilihan yang paling tepat.

 

  • Mengecek digit terakhir

     Sebenarnya tak hanya di pemrograman saja hal ini berlaku. Beberapa soal olimpiade juga banyak yang memakai hal ini. Contohnya adalah, berapa digit terakhir dari 123456 ?

     Maka jawabannya adalah cukup modulo soal tadi dengan 10 sehingga menjadi :

123456 mod 10

     Mengapa harus mod 10? Karena banyaknya digit untuk bilangan desimal dari 0-9 adalah 10 buah.


OO> Teori Dasar <OO

     Sebenarnya teori modulo cukup mudah untuk dipahami, berikut adalah beberapa dari teorinya :

Jika a, b adalah bilangan bulat dan n adalah bilangan asli, maka:

  • (a+b) mod n = (a mod n + b mod n) mod n.

Contoh : (6+11+16) mod 5

= (6 mod 5 + 11 mod 5 + 16 mod 5) mod 5

= (1+1+1) mod 5

= 3 mod 5

= 3

  • (ab) mod n = ((a mod n) * (b mod n)) mod n.

Berapakah digit terakhir dari (1996 x 1997 x 1998 x 1999)?

(1996 x 1997 x 1998 x 1999) mod 10 (ingat poin terakhir di atas)

= ((1996 mod 10) x (1997 mod 10) x (1998 mod 10) x (1999 mod 10)) mod 10

= (6 x 7 x 8 x 9) mod 10

= (42 x 72) mod 10

= (2 x 2) mod 10

= 4

  • (ab) mod n = ((a mod n)b) mod n, untuk b bilangan bulat positif.

21000 mod 7

= 2(3×333 + 1) mod 7

= 2 x (23)333  mod 7

= 2 x (8)333 mod 7

= 2 x (7+1)333 mod 7

= 2 x (7 mod 7 + 1333 mod 7) mod 7

= 2 x (0 + 1) mod 7

= 2 mod 7

= 2

Semoga Bermanfaat

2 Comments:

  1. Terima kasih sharingnya.
    Saat ini saya lagi belajar sendiri desain aplikasi web tapi pengetahuan matematika saya seperti anak SD,
    jadi kebingungan setengah mati kalo ketemu dengan rumus-rumus matematika seperti ini.
    Contohnya sekarang lagi belajar PHP dan ada hubungannya dengan operasi modulo, ada kode seperti ini:
    <?php
    for ($i=0; $i<=5; $i++) {
    if ($i % 2 == 0) { continue; }
    for ($k=0; $k<=5; $k++) {
    echo $i . "-".$k."”;
    }
    }
    ?>

    dan kalau di preview outputnya seperti ini:
    1-0
    1-1
    1-2
    1-3
    1-4
    1-5
    3-0
    3-1
    3-2
    3-3
    3-4
    3-5
    5-0
    5-1
    5-2
    5-3
    5-4
    5-5

    Yang mau saya tanyakan, apakah betul variable $i=0 tidak sampai masuk ke echo callback karena 0 mod 2 = 0 atau 0%2=0 ??

    • Terima kasih kembali atas kunjungan dan komentarnya. Iya, mas sudah betul bahwa sisa hasil bagi dari 0 dibagi 2 adalah 0. Dan ini juga berlaku bagi semua bilangan kecuali 0.

      Intinya, setiap nol yang dibagi dengan seluruh bilangan selain nol memiliki hasil bagi yang juga nol. Ini sekaligus membuktikan bahwa nol juga termasuk bilangan genap seperti yang telah disebutkan di poin paling awal.

      Semoga penjelasan saya mudah dipahami. Terima kasih sekali lagi. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Apa tema yang kalian inginkan untuk postingan baru saya selanjutnya?

    Terima kasih atas pilihannya, Anandastoon akan terus berusaha memenuhi keinginan para pembaca yang tercinta. :)