Blog yang menyediakan pelajaran, source code, dan artikel-artikel seputar pemrograman dan komputer.

Friday, June 17, 2011

DERET FIBONACCI

7:57 PM Posted by Vyn , No comments

Perumpamaan Fibonacci

Sebuah cerita:
Si Badu (Namanya norak banget -_-“) punya sepasang kelinci kecil yang baru dibeli
(Seekor jantan dan seekor betina) ditempatkan dalam sebuah kandang untuk berkembang biak (Kita sebut pasangan kelinci yang pertama ini sebagai K1). Melewati bulan awal, pasangan kelinci K1 ini belum produktif, jadi total ada 1 pasang kelinci. Melewati bulan kedua pasangan kelinci ini juga belum produktif, jadi total kelinci tetap 1 pasang. Pada awal bulan ketiga, pasangan kelinci ini mulai melahirkan sepasang anak, jantan dan betina (Kita sebut pasangan baru lahir ini dengan K2). Jadi, pada bulan ketiga ada 2 pasang kelinci di dalam kandang. Dengan satu pasang kelinci yang produktif (hanya K1, K2 belum produktif).

Pada awal bulan keempat, pasangan kelinci K1 melahirkan sepasang kelinci lagi (Kita sebut pasangan baru ini dengan K3), pasangan kelinci K2 masih belum produktif. Jadi, pada akhir bulan keempat pasangan kelinci yang ada di dalam kandang ada 3 pasang.

Pada awal bulan kelima, pasangan kelinci K1 melahirkan sepasang kelinci lagi (Kita sebut pasangan K4) dan pasangan kelinci K2 juga melahirkan sepasang kelinci (Kita sebut pasangan kelinci K5) sehingga pada bulan kelima terdapat 5 pasang kelinci dengan 2 pasang kelinci produktif (K1 dan K2) dan 3 pasang kelinci tidak produktif (K3, K4 dan K5) bila dilanjutkan maka akan membentuk tabel:

  
Dari tabel diatas, kita bisa menyimpulkan bahwa... kelinci-kelinci ini sungguh unik karena setiap melahirkan pasti sepasang (Becandanya gak asik. -_-).

Yak jadi, bisa dilihat bahwa bilangan pembiakan kelinci diatas membentuk deret fibonacci. Bilangan fibonacci ketiga didapat dari penjumlahan bilangan fibonacci pertama dan kedua. Bilangan fibonacci keempat didapat dari penjumlahan bilangan kedua dan ketiga. Apabila ditulis dalam bentuk rumus, maka:

Fibonacci n = fibonacci n-1 + fibonacci n-2

Perhatikan urutan perubahan fibonacci n-1 dan fibonacci n-2 pada tabel dibawah:


Jadi dapat kita tuliskan Algoritma Deret Fibonacci:

fib_n <- 1
fib_nmin1 <- 1
fib_nmin2 <- 1
cacah <- 3
ulangi selama cacah <= n
     fib_n <- fib_nmin1 + fib_nmin2
fib_nmin2 <- fib_nmin1
fib_nmin1 <- fib_n
cacah <- cacah +1
akhir pengulangan
kembalikan fib_n

contoh program boleh di copy. monggo:

Enjoy it :)

Tuesday, June 7, 2011

Algoritma dan contoh program perfect number dalam C++ 2 (lanjutan..)

10:24 PM Posted by Vyn , 2 comments

Algoritma perfect number pertama bisa jadi lebih efisien (mengurangi kalkulasi) dengan menghitung batas pembagi yang lebih tepat. Contohnya bilangan 100, bilangan ini habis dibagi 1 sehingga jumlah bernilai 1. Seratus habis dibagi 2 dengan hasil 50, kedua nilai ini ditambahin ke dalam jumlah sehingga jumlah  yang awalnya bernilai 1 jadi bernilai 53. Sampai tahap ini seakan-akan kita sudah menguji bilangan 100 tadi dengan pembagi: 1, 2, 50, 51, 52, ..., 100. Dengan demikian pembagi-pembagi selanjutnya adalah 3,4,5,...,49 atau dengan kata lain batas pembagi menjadi 49. (wow,, thats great!)

Selanjutnya, pada pengujian dengan pembagi  bilangan 4 ternyata tu bilangan 4 habis membagi 100 dengan hasil 25. Empat dan 25 ditambahin kepada jumlah sehingga jumlah nilainya nambah lagi jadi 82. Sampai tahap ini seakan-akan kita sudah menguji bilangan 100 dengan pembagi: 1, 2, 3, 4, 25, 26, ..., 100. (WAH!! KEREN!! :o) Dengan demikian pembagi-pembagi selanjutnya adalah 5, 6, 7, ..., 24, dengan kata lain batas pembagi menjadi 24. (assseeeekkk,,, lanjut gan!)

Tabel dibawah ini memperlihatkan bahwa untuk menguji bilangan 100 hanya diperlukan 10 kali pengujian. Coba bandingin dengan algoritma sebelumnya yang memerlukan 50 kali pengujian (mantep tho,, wenak tho,,). Hal yang harus diperhatikan adalah apabila bilangan pembagi habis membagi 100 dengan hasil bilangan pembagi itu juga (sama), maka hanya bilangan pembagi saja yang ditambahkan ke dalam jumlah. (0.o? maksudnya??) liat baris terakhir tabel biar lebih jelas. Noh:

Pembagi
Hasil bagi
Jumlah
Batas pembagi
1
100
1
100
2
50
1+2+50=53
49
3
-
53
49
4
25
53+4+25=82
24
5
20
82+5+20=107
19
6
-
107
19
7
-
107
19
8
-
107
19
9
-
107
19
10
10
107+10=117
9


=================================================
Algoritma >> apakah n perfect number?
Jumlah <- 1
Batas <- n
Pembagi <- 2
Ulangi selama pembagi <= batas
     Jika n mod pembagi = 0
       Jumlah <- jumlah + pembagi
       Hasil <- n/ pembagi
       Jika hasil ≠ pembagi
         Jumlah <- jumlah +hasil
       Akhir jika
       Batas=hasil-1
     Akhir jika
     Pembagi <- Pembagi+1
Akhir perulangan
Jika jumlah = n
     n adalah perfect number
selain itu
     n bukan perfect number
akhir jika
==================================================

coding:

Download contoh programnya disini:

Download Program

Wednesday, June 1, 2011

Algoritma dan contoh program perfect number dalam C++

9:57 PM Posted by Vyn , No comments

Assalamu’alaykum,,

Kali ini kita akan belajar Algoritma untuk menentukan apakah suatu bilangan perfect number atau bukan. Tentunya disediakan contoh programnya juga. Monggoooo,,,

 APA ITU PERFECT NUMBER?
   perfect number adalah sebuah bilangan bulat yang nilainya
  sama dengan jumlah semua pembaginya kecuali bilangan itu sendiri.
  Bilangan 6 habis dibagi 1,2,3
  jadi 6 adalah perfect number.
  bilangan 28 habis dibagi 1,2,4,7 dan 14
  jadi 28 adalah perfect number.
  untuk menguji perfect number, bagi bilangan yang diuji dengan pembagi
  mulai dari satu sampai dengan setengah bilangan yang diuji.
  Apabila habis membagi bilangan yang diuji maka akumulasikan pembagi.
  Bandingkan hasil akumulasi dengan bilangan yang diuji.

===============================================
Algoritma >> apakah n perfect number?

Jumlah <- 1
Pembagi <- 2
Ulangi selama pembagi <= n/2
     Jika n mod pembagi = 0
       Jumlah <- jumlah + pembagi
     Akhir jika
     Pembagi <- pembagi + 1
Akhir perulangan
Jika jumlah = n
     n adalah perfect number
selain itu
     n bukan perfect number
akhir jika
=========================================

Coding programnya, Sedot gan,, LANJOOT!!: