Program Menghitung Tahun Kabisat dengan Python
Program Menghitung Tahun Kabisat dan Non-Tahun Kabisat dengan Python
Tahun kabisat (bahasa Inggris: Leap year) merupakan tahun yang mengalami penambahan satu hari dengan tujuan untuk menyesuaikan penanggalan dengan tahun astronomi.
Dalam satu tahun tidak secara persis terdiri dari 365 hari, tetapi 365 hari 5 jam 48 menit 45,1814 detik. Jika hal ini tidak dihiraukan, maka setiap empat tahun akan kekurangan hampir 1 hari (tepatnya 23 jam 15 menit 0,7256 detik).
Maka untuk mengkompensasi hal ini, setiap 4 tahun sekali (tahun yang bisa dibagi 4), diberi 1 hari ekstra: 29 Februari. Tetapi karena 5 jam 48 menit 45,1814 detik kurang dari 6 jam, maka tahun-tahun yang bisa dibagi 100 (seperti tahun 1900), bukan tahun kabisat, kecuali bisa dibagi dengan 400 (seperti tahun 2000).
source : wikipedia
Algoritma Tahun Kabisat
- Jika angka tahun itu habis dibagi 400, maka tahun itu sudah pasti tahun kabisat.
- Jika angka tahun itu tidak habis dibagi 400 tetapi habis dibagi 100, maka tahun itu sudah pasti bukan merupakan tahun kabisat.
- Jika angka tahun itu tidak habis dibagi 400, tidak habis dibagi 100 akan tetapi habis dibagi 4, maka tahun itu merupakan tahun kabisat.
- Jika angka tahun tidak habis dibagi 400, tidak habis dibagi 100, dan tidak habis dibagi 4, maka tahun tersebut bukan merupakan tahun kabisat
Penulisan Notasi Fungsional Penanggalan Tahun Non-Kabisat
DEFINISI DAN SPESIFIKASIHarike1900 : integer [1..31], integer [1..12] integer [0..99] → integer [1..366]
{Harike1900(d,m,y) dari suatu tanggal <d,m,y> adalah hari 'absolut' dihitung mulai 1 Januari 1900+y. 1 Januari tahun 1900+y adalah hari ke 1}
dpm : integer [1..12] → integer [1..36]
{dpm(B) adalah jumlah hari pada tahun ybs pada tanggal 1 bulan B. terhitung mulai satu januari: kumulatif jumlah hari dari tanggal 1 Januari s/d tanggal 1 bulan B, tanpa memperhhitungkan tahun kabisat}
REALISASI { TANPA KABISAT }
Harike1900 (d,m,y) :
dpm (m) + d - 1
dpm (B) : { analisa kasus terhadap B }
depend on B
B = 1: 1
B = 2: 32
B = 3: 60
B = 4: 91
B = 5: 121
B = 6: 152
B = 7: 182
B = 8: 213
B = 9: 244
B = 10: 274
B = 11: 305
REALISASI DALAM PYTHON
def dpm(B) :
if B==1:
return 1
elif B== 2 :
return 32
elif B== 3 :
return 60
elif B == 4 :
return 91
elif B == 5 :
return 121
elif B == 6 :
return 152
elif B == 7 :
return 182
elif B == 8 :
return 213
elif B == 9 :
return 244
elif B == 10 :
return 274
elif B == 11 :
return 305
elif B == 12 :
return 335
def HariKe(d,m,y) :
return (d+(dpm(m))-1)
APLIKASI
print (HariKe(31,12,90))

Komentar
Posting Komentar