Liburan tahun baru kemaren, saya ga pulang ke rumah di sibolga karena disuruh orang tua ga usah pulang (hehehe... ngaco). Nah, daripada ga ada kerjaan, mending buat program yang bermanfaat. Rencana nya saya akan membuat program kalender dengan C++.
Algoritmanya sudah dipikir-pikir sejak awal.
Walaupun pelajaran Pengembangan Teknologi Informasi (dominan pelajaran c++) telah berakhir di kampus, ya moga aja saya tetap bisa melanjutkan pelajaran ini. Hehehe. Algoritmanya saya temukan setelah membeli sebuah buku yang berisi source kode kalender, dan ternyata algoritmanya masuk akal juga, pikirku. Emang sih, sejak dari SMA, saya sendiri kadang bingung, cara buat kelender itu gimana ya? Nah, kesempatan ini datang begitu saja, dan dengan penuh semangat, saya mulai mengetikkan baris-baris kode yang saya sudah tau alurnya stelah membaca buku tersebut. Setelah cek sana dan sini akhirnya kalender berhasil dikompile,dan cara kerjanya masih sederhana. Masukkan bulan dalam angka, setelah itu tahun, lalu kita akan dibawa pada tampilan kalender bulan yang telah kita masukkan. Tekan sembarang tombol dan program akan berakhir. Program yang masih sangat sederhana.
Nah, kemudian saya berpikir, apakah mungkin program ini bisa dibuat lebih bagus lagi? Daripada bertanya dan berpikir, mending dicoba aja.
Yang tersirat di kepalaku saat itu adalah membuat kalender, yang ketika program nya dijalankan, maka akan langsung menampilkan waktu bulan dalam computer tersebut, dalam table. Namun stelah saya coba, tampilannya hanya bagus pada bulan itu saja, ketika dicoba ke bulan yang lain, maka tampilannya akan sangat jelek. Ini disebabkan karena tampilannya memakai tabel. Nah, stelah mengerjakan program tadi, akhirnya kepala mulai jenuh, stress karena tampilannya ga bagus.
Keesokan harinya, saya lalu berpikir, bagaimana kalau tidak menggunakan table saja, mungkin tidak sebagus kalau memakai table, tapi akan lebih mudah dalam pembuatannya. Stelah menyusun ulang kode yang sempat terbengkalai, akhirnya program kalender selesai juga. Ada rasa puas tersendiri yang bisa kudapatkan ketika pekerjaan ku selesai.
Cara kerja program nya sederhana, begitu programnya dibuka, maka program akan menampilkan kalender bulan itu juga (tepatnya akan menyesuaikan dengan bulan pada computer). Kita bisa berpindah ke bulan sebelumnya, bulan setelahnya, tahun sebelumnya dan tahun sesudahnya hanya dengan menekan tombol khusus pada keyboard (saya menggunakan tombol H,U,J, dan K). atau kita bisa juga berpindah pada bulan dan tahun yang kita inginkan. Program ini bisa mengakses tanggal dari tanggal 1 januari 1900 sampai dengan beberapa ratus tahun ke depan.
Bagaimana algoritma kalendernya? Kita cukup mengetahui tanggal 1 januari adalah hari Minggu. Nah tahun yang bisa kita jadikan contoh adalah 1 January 1900, tepat pada hari Minggu. Mulai dari sini, kita menghitung jumlah hari sampai pada bulan ini dikurang 1. Misal bulan ini adalah bulan 6 tahun 2010, kita harus menghitung berapa banyak jumlah hari dari tahun 1900 sampai tahun 2009, kemudian tambahkan dengan jumlah hari pada bulan-bulan sebelumnya di tahun 2010 (tepatnya dari bulan January sampai May. Dengan demikian kita memperoleh jumlah hari total. Nah jika total ini dibagi dengan 7 (modulus 7) akan menghasilkan sisa antara 0-6, inilah yang akan menjadi akses dalam menentukan hari apa pada tanggal tersebut. Misal sisanya adalah 1, maka itu adalah hari Minggu. Kita akan lihat contoh sederhananya. Misal tanggal 5 January 1900, dari tanggal 1 january 1900-5 January 1900, kita mempunyai total hari sebanyak 5 hari. Jika dibagi 7 akan menghasilkan sisa 5, berarti tanggal 5 January adalah hari Kamis. Kita akan coba lihat hari apa tanggal 16 maret 1900. Mulai dari bulan January sampai February terdapat 59 hari (30+29, 1900 adalah kabisat), dan hingga pada tanggal 16 maret maka akan terdapat 76 hari (59+16). 76 jika dibagi 7 akan menghasilkan sisa 6, maka tanggal 16 maret 1900 adalah hari Jumat. Nah begitulah cara kerjanya.
Nah, kalau ada yang mau donlod source kode nya, bisa download dari sini.
Program ini di compile menggunakan turbo c++ versi 1.01, kalau belum punya, buka halaman ini untuk mendownload dan melihat cara memakai turbo c++.
Edit and print this page
Baca selengkapnya...
Wednesday, January 21, 2009
Membuat Kalender dengan C++
Monday, January 12, 2009
Permainan Tebak Angka

Pernah dengar permainan tebak angka kan? pasti pernah kan? Nah, permainan tebak angka memiliki banyak jenis. Kalau kita diajak untuk bermain tebak angka, pasti kita akan menanyakan bagaimana cara bermain nya. Karena jenis permainan ini sangat banyak, saya akan memberi tahu sebuah permainan saja, mudah-mudahan kalau ada kesempatan, saya akan memberi tahu permainan tebak angka yang lainnya. Nah, alat yang kita butuhkan hanya lah sebuah kalkulator dan juga seorang teman yang akan kita ajak bermain.
Pertama-tama, berikan kalkulator pada teman anda, kalkulator digunakan agar mempermudah perhitungan saja, kalau tidak punya kalkulator, ya hitung di kertas saja juga boleh kok. Setelah itu suruh teman anda untuk memilih sebuah bilangan, terserah bilangan berapa saja, boleh terdiri dari 3 angka, 4 angka, atau 5 angka, kalau bisa sih jangan 1 angka saja. Hehe. Nah, misalkan teman kita tadi memilih bilangan 1603 (saya lahir tanggal 16 Maret.hehehe)
setelah itu susun lah sebuah bilangan baru dengan memakai angka dari bilangan yang sebelumnya telah dipilih. Misalnya tadi kita memilih anga 1603, kita bisa membuat sebuah bilangan baru misal 3016,6013,3106,1063, atau berapa saja asal angka penyusunnya menggunakan angka dari bilangan sebelumnya.
Sekarang kita mempunyai 2 buah bilangan, yang pertama adalah 1603 dan yang kedua misal 6013. Setelah itu kurangilah bilangan pertama dengan menggunakan bilangan kedua.
Kita mempunyai hasil -4410, kalau hasilnya berupa bilangan negative atau positif, ya biarkan aja, kalau anda mau, negative positifnya diabaikan aja. Sampai sejauh ini, kita tidak tahu hasil yang ada pada kalkulator teman anda, bilangan yang kita pakai disini hanya pemisalan saja. Setelah itu suruh teman kita tadi agar mengalikan bilangan hasil terakhir tadi (-4410) dengan bilangan berapa saja, asalkan kalulator tadi masih bisa menampung semua angka-angka hasil perkalian nanti. Jika sudah memuat x10n pada akhir kalkulator, maka permianan ini tidak akan mujur.hehe. jadi usahakan agar nilainya tidak banyak. Kalau anda menggunakan kalkulator pada computer yang bisa memuat banyak angka, pasti permainan ini masih bisa dilaksanakan. Misal pada contoh di atas -4410x34.
Hasilnya adalah -149940. Kalau anda mau, anda bisa mengalikan dengan beberapa kali lagi dengan bilangan lainnya untuk meyakinkan teman anda bahwa kita benar-benar tidak tahu angka yang terdapat pada kalkulator tersebut (dan kenyataannya memang kita tidak tahu angka pada teman kita).
Nah disinilah permainan kita dimulai. Bilangan terakhir adalah -149940, kita akan menebak sebuah angka dari bilangan ini. Angka yang bisa kita tebak adalah dari 1-9, untuk itu suruhlah teman anda untuk menyimpan sebuah angka dari bilangan ini, misal angka yang disimpan adalah angka 9. Sekarang angka-angka yang tersisa adalah 14940, nah kalau mau, suruh lagi teman anda untuk mengacak letak bilangan ini, msal menjadi 44910, benar-benar meyakinkan bahwa kita tidak tahu bilangan nya bukan? hehehe.
Stelah itu apa lagi? Stelah itu suruhlah teman anda untuk menyebutkan angka-angka bilangan tadi, yaitu, 4,4,9,1,0. Setelah teman kita menyebutkan angka-angka tadi, beberapa saat kemudian kita akan berseru “angka yang kamu simpan, angka 9 ya? Hehehe..”. dan teman kita tadi pun terheran-heran. haha..
Nah, lantas bagaimana caranya? Koko bisa? Algoritmanya sederhana. Kita cuma memainkan teori aljabar sederhana dan membuatnya ke dalam sebuah permainan.
1. Pertama tadi kita menyuruh teman kita untuk memilih sebuah bilangan terdiri dari 3 angka atau lebih dan kemudian menyusun sebuah bilangan baru dengan menggunakan angka penyusun bilangan awal tadi. Dalam aljabar, misal kan kita sebut saja bilangan awal tadi adalah abcd, dan bilangan kedua adalah bdac. Kita mengurangkan bilangan pertama dengan bilangan kedua.
Ingat bahwa a pada bilangan pertama menempati ribuan, b menempati ratusan, c menempati puluhan dan d menempati satuan. Maka kita bisa menuliskan :
2. Dari persamaan di atas, kita bisa melihat bahwa hasil pengurangan nya akan mengasilkan sebuah bilangan yang merupakan kelipatan 9. Kita tahu bahwa semua bilangan yang merupakan kelipatan 9, maka jumlah angka-angka penyusunnya adalah kelipatan 9 juga, contoh 27 (2+7=9 kelipatan 9), 3618(3+6+1+8=18 kelipatan 9), dll. Pembuktiannya bisa dilihat di bawah, misal bilangan abcd habis dibagi oleh 9.
Jika abcd habis dibagi 9, maka a+b+c+d haruslah habis dibagi 9.
3. Setelah kita tahu bahwa bilangan tadi adalah kelipatan 9, maka ketika kita kalikan dengan bilangan berapa saja pun, hasilnya tetap kelipatan 9. Asal jangan dibagi saja.hehehe..
4. Misal pada contoh di atas angka-angka yang diberi tahu pada kita adalah 4,4,9,1,0, jumlahkan saja angka-angka tersebut, lalu cari angka berapa yang hilang agar jumlah seluruh angka nya menjadi kelipatan 9. Itulah angka yang kita tebak tadi, yaitu 9.
Pada contoh di atas angka berapakah yang jika ditambahkan dengan 18 akan menghasikan bilangan yang merupakan kelipatan 9? Jawabnya ada 2 yaitu 0 dan 9, kita kembali ke syarat pertama tadi, angka yang boleh ditebak adalah 1-9, maka jawabnya adalah 9. Kalau sekiranya angka 0 termasuk dalam angka yang boleh ditebak, kita harus berpikir 2 kali, mana angka yang disimpan, angka 0 atau angka 9.
Nah, sampai disini dulu penjelasannya, mudah-mudahan bisa menghibur dan “mengajari” anda semua betapa asyiknya bermain dengan angka.^.^
O iya, kalau mau, nih aku kasih source code nya dalam c++. dicompile menggunakan turbo c++.
Edit and print this page
Baca selengkapnya...
Menggabungkan Logika, Matematika, dan Kalimat

Mungkin, kita sudah tidak asing dengan ke 3 kata inti dari judul di atas, logika, matematika dan kalimat. Banyak hasil dan pelajaran yang bisa kita ambil dari ketiga kata ini. Logika seperti biasa memainkan angka 1 dan 0 yaitu benar dan salah. Kalimat, mungkin anda sudah tahu yang ini, kumpulan dari beberapa kata. Matematika, ya, sejak SD kita sudah mempelajarinya. Bagaimana kalau kita menggabungkan ketiganya? Apakah akan terbentuk sebuah pelajaran baru? Atau akan ada sebuah teori baru terbentuk? Mari kita analisis.
Mungkin kita kan melihat bahwa penggabungan ketiganya mungkin akan menimbulkan kebingungan bagi kita, karena semua data-data yang telah kita miliki akan saling bertentangan.
Mari kita review sedikit. Kita mempunyai kalimat di bawah :
Kalimat di atas adalah salah, agar kita mempunyai kalimat yang benar, kita harus me-negasikan kalimat di atas. Arti negasi bisa kita artikan sebagai “lawan”. Benar negasinya adalah salah. 1 negasinya adalah 0. Nah, pada umumnya, di dalam kalimat agar negasi bisa dilakukan, kita harus menambahkan/menghapus kata “tidak” pada kalimat tersebut (tergantung kalimatnya bagaimana). Kalimat di atas akan menjajdi benar jika ditambahkan kata tidak, menjadi :
Kalimat di atas sekarang telah menjadi benar. Kadang juga dalam kalimat kita tidak memakai kata “tidak”, tetapi memakai kata “bukan”. Misalnya :
Negasinya adalah :
Sekarang coba perhatikan kalimat ini :
Kita tahu bahwa kalimat di atas adalah salah. Kalimat diatas bukanlah terdiri dari 6 kata. Nilainya bernilai 0 atau salah. Nah jika kita ingin membuat pernyataan di atas menjadi benar, kita harus mengubah nilai 0 menjadi 1 (di-negasikan). Bukan hanya nilai nya saja, kalimatnya juga harus dinegasikan, menjadi :
Setelah kita perhatikan, kalimat di atas haruslah menjadi benar, tetapi kalau kita perhatikan, kalimat di atas tetap saja salah, kalimat di atas terdiri dari 6 kata. Intinya kalimat awal dan negasinya tetap bernilai salah, tidak akan menjadi benar. Kemudian saya bertanya pada adik asuh saya yang berada di SMA, apa yang salah dari kalimat tersebut. Katanya kalimat pertama harusnya begini :
Dan negasinya kalimat kedua adalah :
Coba lihat, apakah sudah benar? Kalau kita perhatikan, kedua kalimat di atas adalah benar, baik pernyataan awal maupun negasinya bernilai benar.
nah, sekarang coba perhatikan lagi kalimat di bawah ini :
Kalimat di atas adalah peraturan juga, isinya menerangkan bahwa semua peraturan mempunyai pengecualian. Nah, misal kita mambuat sebuah pengecualian terhadap
peraturan tadi. Peegecualiannya adalah bahwa tidak semua peraturan mempunyai peraturan. Berarti ada beberapa peraturan yang tidak mempunyai pengecualian, dan ini bertentangan dengan peraturan awal tadi (semua peraturan mempunyai pengecualian).
Kalimat yang berikut mungkin agak membingungkan :
Kalimat di atas menyatakan bahwa kalimat di atas salah. Nah, kalau kalimatnya salah, berarti pernyataan nya benar. Kalau kalimatnya benar, maka pernyataannya salah. Bingung? Saya juga bingung.hehehe…
Nah, biar ga bingung, baca lagi deh yang di atas, mudah-mudahan tambah bingung…^.^
Edit and print this page
Baca selengkapnya...
Friday, November 21, 2008
Bilangan Biner dengan C++
Hm... akhirnya ngebloging lg nih... hehhe..
Pada kesempatan kali ini saya akan membagi source kode untuk mengubah bilangan desimal ke bilangan biner dengan menggunakan bahasa C++.
nah, algoritma nya sangat sederhana. Kita hanya perlu membagi bilangan tersebut dengan 2 hingga nilainya 1. nah sisa dari hasil pembagian tadi dikumpul dan disusun menjadi sebuah bilangan biner. untuk lebih lengkapnya, anda dapat melihat cara mendapatkan bilangan biner di sini
untuk source kode program biner nya, anda bisa download dari sini.
Thankyu..
Edit and print this page
Baca selengkapnya...
Sunday, October 5, 2008
Derajat dalam Jam
Baiklah…mungkin ini akan menjadi artikel yang membosankan. Karena saya adalah penggemar matematika, maka kali ini saya akan menulis sebuah artikel dengan dasar matematika. Kalau anda penggemar matematika juga, saya tantang anda unutk membaca artikel ini. Kalau ada yang ga suka, mending ga usah dibaca deh… daripada ntar nyesel ga tau dan tambah pusing. Hehehehe…
Pernah liat jam dinding kan?? Keterlaluan kalo di rumah ga ada jam dinding. Hehehe. Nah, jam dinding itu bentuknya macam-macam. Ada yang berbentuk lingkaran, ada yang persegi, ada yang segitiga, malah ada yang ga berbentuk (waduh..gmana ya ngebayangin jam yang ga ada bentukny..jam setan kalee. wkwkwk). Kalau kita perhatikan, secara umun jam itu mempunyai 12 angka dengan angka 12 di atas, angka 3 di kanan, angka 6 di bawah, dan angka 9 di sebelah kiri masing-masing sisi jam (yang ini kita memakai jam yang model beginian, soalnya ada juga jam yang tidak memakai 12 angka, namun 24 angka). Lalu apa hubungannya? Nah, disini marilah kita mulai berpusing-pusing..:)
Sekarang mari kita membuat pengandaian bahwa jam tesebut mempunyai 2 buah jarum yaitu jarum untuk menit (selanjutnya saya akan menyebutnya jarum panjang) dan jarum untuk menunjukkan pukul (selanjutnya saya akan menyebutnya jarum pendek). Jarum yang menunjukkan detik kita abaikan saja. Perhatikan kata-kata berikut dengan seksama. Jika setiap menit, jarum menit akan bergerak, maka jarum yang menunjukkan pukul juga akan bergerak. Baiklah kalo masih bingung saya akan memisalkan begini. Kita berada pada pukul 10.00. Setelah 1 menit, maka jarum akan menunjukkan pukul 10.01 yang artinya jarum menit bergerak sebanyak 1 menit. Btul ga? Selain jarum menit, ternyata jarum jam juga bergerak walaupun tidak begitu tampak perbedaannya. Sekarang pertanyaan nya adalah, jika waktu menunjukkan pukul 15.34, maka berapa derajat kah sudut terkecil yang dibentuk oleh kedua jarum tersebut?? Bingung kan? Sebenarnya sih engga.. nanti akan kita jawab bersama-sama.
Kalo saya mengajukan pertanyaan begini. Jika waktu menunjukkan pukul 14.00. berapa derajat kah sudut yang dibentuk kedua jarum jam? Mungkin ada yang langsung menjawab “60 derajat mas”. Yap betul. Sebuah lingkaran jam (dan semua lingkaran) memiliki sudut total 360 ͦ. Sedangkan pada jam terdapat 12 angka. Yang artinya setiap angka yang satu dengan angka yang lainnya memiliki perbedaan sudut 30ͦ. Jadi kalau jam menunjukkan pukul 14.00 maka otomatis ada perbedaan 2 angka yang dibentuk oleh jarum jam yang artinya 2x30ͦ=60ͦ. Nah permasalahannya adalah, kasus saya tadi sudah melibatkan menit, artinya jika setiap menit berjalan, kita tidak hanya menghitung derajat jarum menit saja tapi derajat jarum jam nya juga dihitung. Supaya jangan tambah pusing saya akan kasih solusinya.
Setiap 1 jam, maka jarum panjang akan bergerak 360 derajat (1 putaran penuh). Nah 1 jam itu terdiri dari 60 menit. 60 menit akan ditempuh sejauh 360ͦ . ini berarti setiap 1 menit, jarum panjang akan bergerak sejauh 6ͦ yang berasal dari pembagian 360 dan 60. Itu untuk jarum panjang.
Untuk jarum pendek, kita bisa melihat bahwa setiap 1 jam (atau 60 menit), jarum pendek akan bergerak 30ͦ, artinya, setiap 1 menit maka jarum panjang akan bergerak sejauh ½ͦ yang tak lain adalah pembagian 30 dan 60. itu tadi adalah dasar-dasarnya. Dengan demikian kita bisa mengerjakan soal yang tadi kita ajukan.
Pukul 15.34. yang pertama kita lakukan adalah mengerjakan menitnya terlebih dahulu. Jika jarum panjang telah bergerak sejauh 34 menit, maka sudut yang telah ditempuh adalah 34x6ͦ=204ͦ. 204 derajat adalah sudut dihitung dari menit 00 yaitu angka 12 tepat sampai menit 34. sekarang kita akan menghitung jarum pendek. Jika menit telah berjalan 34 menit, maka jarum pendek akan bergerak sejauh ½ͦ x 34 =17 ͦ . nah sekarang sudah mulai jelas kan. Untuk mencari hasilnya, kita tinggal mengurangkan 17 dengan 204 204ͦ-17ͦ=287ͦ
Tadaaaa….. akhirnya ketemu juga jawabannya. Walapun banyak juga mungkin yang rada-rada bingung. Hehehe..
Intinya, ga usah takut dengan matematika, karena sebenarnya matematika itu menggunakan logika aja. ……
Edit and print this page
Baca selengkapnya...

