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.

if (bilangan % 2 == 0) {
    //bilangan genap
} else {
    //bilangan ganjil
}

 

  • 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,

/*
Berikut adalah daftar variabel, tidak perlu dideklarasikan
menulis = 2;
membaca = 3;
mengecek = 5;
menghapus = 7;
Di mana untuk hak akses pada sistem, cukup dengan modulo variabel murid
dan guru dengan status di atas. Jika hasil modulo 0 atau habis dibagi,
itu artinya variabel diperbolehkan untuk mengakses salah satu dari
ke-empat fitur di atas.
*/

// Maka status murid adalah

int murid = 6; //murid hanya dapat membaca dan menulis karena 6 habis dibagi 2 dan 3.

// dan status guru adalah

int guru = 210; //guru dapat melakukan semua hal.

      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 :

// Jika tombol bawah ditekan
if (posisiMenu > banyakMenu) {
    posisiMenu = 0; //sorotan menu pindah ke awal
} else {
    posisiMenu++; //posisiMenu bertambah sebanyak 1
}

// Jika tombol atas ditekan
if (posisiMenu < 0) {
    posisiMenu = banyakMenu; // sorotan menu pindah ke akhir
} else {
    posisiMenu--; //posisiMenu berkurang sebanyak 1
}

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

// Jika tombol bawah ditekan
posisiMenu ++;

// Jika tombol atas ditekan
posisiMenu --;

posisiMenu %= banyakMenu; //akhirnya, posisi menu dimodulo sebanyak banyakMenu

 

  • 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

  • Selesai membaca? Jangan pergi dulu! 😉

    Minta waktunya sebentar dong, plis sebentaaarrr doang. Gak sampe 5 menit saya janji. Anandastoon minta saran dan komplain kalian di formulir berikut untuk membuat situs ini menjadi lebih baik. Komplain kalian sangat berarti bagi Anandastoon. Makasih ya sebelumnya.
    Oiyak! Untuk melihat apakah saran kalian didengar Anandastoon atau tidak, bisa cek ke halaman penerapan komplain berikut...


    Diskusi dengan Anandastoon


    Anandastoon baru saja buat forum untuk diskusi dengan sesama pembaca. Temanya banyak, mulai dari pengalaman horor, menarik, travelling, curhat, tanya jawab, programming, dan lain sebagainya. Mari kunjungi Forum Anandastoon

  • 2 Jejak Manis yang Ditinggalkan

    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 *

    Kembali
    Ke Atas
    Mode Gelap