Function Tahun Kabisat yang Salah Kaprah

Sampai tadi pagi, jika saya ditanya: “gimana caranya menentukan sebuah tahun itu tahun kabisat atau bukan?” maka saya dengan yakin akan menjawab: “kalo angkanya habis dibagi empat berarti tahun kabisat, kalo tidak ya berarti bukan…”

Saya baru tahu bahwa jawaban saya salah. Faktanya tidak semua tahun yang angkanya habis dibagi 4 adalah tahun kabisat.

Lantas bagaimana menentukan apakah tahun itu adalah sebuah tahun kabisat atau bukan?

Memang sebagian besar tahun yang angkanya habis dibagi 4 adalah tahun kabisat, kecuali jika tahun itu habis dibagi 100 tapi tidak habis dibagi 400.

Sebagai contoh, tahun 1600 dan tahun 2000 adalah tahun kabisat, tapi tahun 1700, 1800 dan 1900 bukan tahun kabisat. Angka 1700, 1800 dan 1900 memang habis dibagi 4, tapi mereka bukan tahun kabisat karena 1700, 1800 dan 1900 habis dibagi 100 tapi tidak habis dibagi 400.

Parahnya lagi, selama ini setiap saya menulis program atau membuat algoritma (termasuk mengajarkan di kelas kapada mahasiswa T.T) untuk menentukan sebuah tahun itu kabisat atau bukan, saya selalu menggunakan logika sederhana dengan operasi modulo 4 seperti pada function berikut:

Function KabisatSesat(ByVal tahun As Integer) As Boolean
 If tahun Mod 4 = 0 Then
 Return True
 Else
 Return False
 End If
End Function

Padahal ternyata untuk menentukan apakah sebuah tahun adalah kabisat atau bukan tidak sesederhana itu, masih ada pengecualian karena ternyata tidak semua tahun yang angkanya habis dibagi 4 adalah tahun kabisat. Oleh karena itu saya harus mengubah function saya menjadi berikut ini:

Public Function Kabisat(ByVal tahun As Integer) As Boolean
 If tahun Mod 4 <> 0 Then
 Return False 'bukan kabisat
 ElseIf tahun Mod 100 <> 0 Then
 Return True 'kabisat
 ElseIf tahun Mod 400 <> 0 Then
 Return False 'bukan kabisat
 Else
 Return True 'kabisat
 End If
End Function

Mudah2an dengan ini saya bisa meralat ajaran sesat yang pernah saya sebarkan (karena ketidaktahuan dari diri saya sendiri, he3) sekaligus menyebarkan ajaran yg benar sehingga di akhirat nanti gak akan ditahan masuk syurga cuma gara2 pernah ngajarin yang gak bener.

Oiya, untuk function Kabisat di atas saya tulis dalam VB.NET, semoga bermanfaat🙂

Referensi: 
http://www.nmm.ac.uk/explore/astronomy-and-time/time-facts/leap-years
Sumber Gambar:
http://www.aliceinfo.org

6 thoughts on “Function Tahun Kabisat yang Salah Kaprah

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s