Halo rekan2 sekalian..
Mari kita diskusikan tugas 1B di sini :D Saya akan memulai dengan
membahas 2 buah solusi yang sudah dikirim dan juga mengomentari
beberapa hasil dari diskusi yang lognya ada di
http://tempel.blankon.in/29887 (versi asli yg belum saya ubah sedikit
formatnya ada di
http://tempel.blankon.in/29173)
Tugas 1B ini berisi teka-teki bagaimana cara menghitung selisih dari
dua buah waktu yang diberikan. Deskripsi lengkapnya bisa dilihat di
https://github.com/fajran/uvt-python-2012/blob/master/Tugas/1B.txt
***
Solusi pertama yang masuk ke milis ini adalah yang berikut ini
https://github.com/Satmo54/python-UVT/blob/master/tugas_1B.py
Yang saya lihat di sana, selisih waktu dicari dengan mengubah 2 waktu
yang diberikan menjadi detik, lalu diselisihkan, dan terakhir diubah
lagi menjadi jam/menit/detik.
Ada banyak cara untuk menjawab tugas 1B ini dan cara di atas adalah
salah satu caranya! :D *tepok tangan*
Pada penjelasan tugas, dituliskan bahwa waktu B akan selalu lebih
besar dari waktu A dan selisihnya tidak akan lebih dari 24 jam.
Artinya, selisih waktu yg terjadi tidak akan negatif dan nilai "jam"
pada selisih tidak akan lebih dari angka 23.
Mengubah komponen waktu (jam/menit/detik) menjadi detik adalah salah
satu cara untuk menyederhanakan perhitungan. Jika kita mengurangi
angka untuk setiap komponen jam/menit/detik secara terpisah, maka akan
ada resiko selisih bernilai negatif seperti yang disebutkan pak
arifazik pada diskusi di IRC. Setelah selisih detik didapat, nilai
detik ini dapat diubah lagi ke jam/menit/detik dengan operasi
pembagian dan juga modulus.
Contoh:
200 detik adalah 3 menit dan 20 detik
200 = 3 x 60 + 20
nilai 3 (menit) didapat dari 200 modulus 60 = 200 % 60 = 3 menit
dan sisanya 20 (detik) didapat dari 200 detik - 3 menit = 3 - (3 x
60) = 200 - 180 = 20 detik
Pada diskusi di IRC sempat ada yang bertanya apa itu modulus? Modulus
adalah sisa pembagian. Contohnya 10 modulus 3 adalah 1 karena 10
dibagi 3 adalah 3 sisa 1. Contoh lainnya, 100 modulus 18 adalah 5 sisa
10 yang bisa ditulis lagi menjadi 100 = 5 * 18 + 10.
***
Solusi kedua yang dikirim bisa dilihat di
https://github.com/Satmo54/python-UVT/blob/master/tugas_1B_.py
Solusi ini menggunakan bantuan modul/library/pustaka "datetime" yang
ada di Python.
Modul datetime di python ini adalah modul yang berisi banyak
fungsi/kelas untuk memanipulasi waktu, misalnya
- mencari selisih
- mengubah teks menjadi waktu
- mengubah waktu menjadi teks
- dll
Saya lihat sudah pada mulai menggunakan "import" untuk berurusan
dengan modul di Python.. sepertinya kita perlu segera membahas
mengenai hal ini :-)
--
Fajran Iman Rusadi-
http://fajran.web.id http://dahsy.at