Vous êtes sur la page 1sur 33

Aquarius - Pembawa air (21 Januari - 19 Februari) Pisces - Ikan (20 Februari - 20 Maret) Aries - Domba Jantan (21

Maret 19 April) Taurus - Banteng (21 April - Mei 20) Gemini - Si Kembar (21 Mei - Juni 21) Cancer - Kepiting (22 Juni - Juli 22) Leo - Singa (23 Juli - 23 Agustus) Virgo - Gadis (24 Agustus - 22 September) Libra - Timbangan (23 September - 23 Oktober) Scorpio - Kalajengking (24 Oktober - 22 November) Sagitarius - Pemanah (23 November - 21 Desember) Capricorn - Kambing Jantan (22 Desember - 20 Januari)

Algoritma untuk Menampilkan Deret Fibonacci


Sudah tahu deret Fibonacci?? bagi yang belum tahu atau yang sudah lupa, deret Fibonacci sbb. : 1, 1, 2, 3, 5, 8, 13, 21, 34, ... dst. Jika ketemu soal untuk menampilkan deret, yang harus diketahui adalah cara memperoleh bilangan tiap sukunya atau dengan kata lain : harus tahu rumusnya!! baru kita dapat menyusun algoritmanya.

Jika kita tidak tahu rumusnya... tidak usah takut... kita cukup melakukan pengamatan pada deret tersebut di atas. Suku ke-1 adalah 1, suku ke-2 adalah satu. Antara suku ke-1 dan 2 hubungannya adalah... nilainya sama... Jadi kalau dibuat rumusnya : suku1 = suku2 yaitu 1. Suku ke-3 adalah 2 hubungannya dengan suku ke-2 dan suku ke-1 adalah suku3 = suku2 + suku1 --> 2 + 1 = 3 Suku ke-4 adalah adalah 5 hubungannya dengan suku ke-3 dan suku ke-2 adalah suku4 = suku3 + suku2 --> 3 + 2 = 5 ... dan seterusnya Jika disimpulkan maka : suku1 = 1 suku2 = 1 suku di atas 2 atau suku N = suku N-1 + suku N-2 Berarti algoritmanya...

Sebenarnya yang membuat sulit membuat program adalah karena kita tidak tahu algoritmanya! Nah biar tahu algoritmanya bagaimana? Paling tidak kita harus tahu definisi bilangan prima itu apa. Berikut definisi bilangan prima yang beredar di masyarakat : 1. Bilangan yang tepat mempunyai dua faktor. Yaitu 1 dan bilangan itu sendiri 2. Bilangan yang habis dibagi 1 dan habis dibagi bilangan itu sendiri. Artinya kalau suatu bilangan dibagi 1 pasti tidak ada sisanya, demikian pula jika bilangan dibagi dengan bilangan itu sendiri pasti juga tidak ada sisanya! Dari dua definisi di atas, bisa dong membuat algoritmanya... hah?! masih nggak ngerti juga??? Okelagh qallo beggittu.... Misal kita ingin mengetahui apakah 5 itu bilangan prima atau bukan. Kita tinggal membagi 5 dengan bilangan di bawahnya yaitu 4, 3, 2,... Kalau angka 1 nggak usah dijadikan pembagi! karena semua bilangan pasti habis dibagi 1... iya toh??!! 5 juga ga usah karena 5:5 hasilnya 1 dan tidak ada sisanya. Berikut ini perinciannya :

5 : 4 = 1 sisa 1 5 : 3 = 1 sisa 2 5 : 2 = 2 sisa 1

Karena hasil pembagian di atas semuanya ada sisa, maka 5 adalah bilangan prima. Sekarang dicoba ambil contoh bilangan yang bukan prima, misalnya 8. Berarti kita harus membagi dengan bilangan-bilangan di bawahnya : 7, 6, 5, 4, 3, 2

8 : 7 = 1 sisa 1 8 : 6 = 1 sisa 2 8 : 5 = 1 sisa 3 8 : 4 = 2 sisa 0 8 : 3 = 2 sisa 2 8 : 2 = 4 sisa 0

Karena hasil pembagiannya ada yang tidak memiliki sisa (8:4 dan 8:2) maka 8 bukan bilangan prima! Jelas? kalau sudah jelas silahkan bikin algoritmanya... sok dilanjuuttt

Algoritma Bubble Sort


Bubble Sort atau pengurutan gelembung menggunakan array. Algoritma bubble sort berdasarkan pada; perbandingan nilai array sekarang dengan nilai array selanjutnya. Jika nilai array sekarang lebih besar dari pada nilai array selanjutnya maka posisi nilai array ditukar. Demikian seterusnya sampai nilai array yang terakhir. Kemudian perbandingannya diulang-ulang lagi dari nilai array paling awal sampai akhir, dan pengulangan dihentikan jika tidak ada pertukaran lagi. 1. n = banyaknya nilai 2. i = 0 3. tukar = true 4. jika tukar = true maka ke langkah no. 5 selain itu ke langkah no. 14 5. tukar = false 6. jika i <= n maka ke langkah no. 7 selain itu ke langkah no. 13 7. jika A(i) > A(i+1) maka ke langkah no. 8 selain itu ke langkah no. 12 8. tmp = A(i) 9. A(i) = A(i+1) 10. A(i+1) = tmp 11. tukar = true 12. i = i + 1 13. ke langkah no. 4 14. selesa

Algoritma untuk menampilkan bilangan Fibonacci. 1 f1=0 2 f2=1 3 for i=1 to 8 do 4 iFibo=f1+f2 5 display Angka ke-,i, adalah ,iFibo,NL 6 f1=f2 7 f2=iFibo 8 end for

Fibonaciiii

public class Fibonacci { public static void main(String[] args) { int n0 = 1, n1 = 1, n2; // Initialize variables System.out.print(n0 + " " + // Print first and second terms n1 + " "); // of the series for (int i = 0; i < 18; i++) { // Loop for the next 18 terms n2 = n1 + n0; // Next term is sum of previous two System.out.print(n2 + " "); // Print it out n0 = n1; // First previous becomes 2nd previous n1 = n2; // And current number becomes previous } System.out.println(); // Terminate the line } }

Ex 44

public class Main { /** Creates a new instance of Main */ public Main() { } /** * @param args the command line arguments */ public static void main(String[] args) { //a method int num1 = 1; //first number in fibonacci sequence int num2 = 1; //second number in fibonacci sequence int num3 = 2; //provides summation of previous two numbers

System.out.println("The first 15 fibonacci numbers are: "); System.out.println(num1); System.out.println(num2);

while( num3 <= 377){ //loop ends after calculating the first 15 fibonacci numbers num3 = num1 + num2; System.out.println(num3); num1=num2; num2=num3; } if ( num3 % 2 == 0 ); System.out.println(num3 + "*"); num1 = num2; num2 = num3;

acip saifudin JALAN PINTAS DI ANGGAP PANTAS

My Blog

Search ...

Archive for the Category LOGIKA DAN ALGORITMA


13 Okt PSEUDO CODE acip saifudin Pseudocode adalah cara untuk menuliskan sebuah algoritma secara high-level (level tingkat tinggi).

Biasanya Pseudocode dituliskan dengan kombinasi Bahasa Inggris dan notasi matematika. Biasanya sebuah Pseudocode tidak terlalu detail dibandingkan dengan program. Isu-isu detail dalam program yang sifatnya teknis tidak dibahas di dalam Pseudocode. Komponen-komponen Pseudocode, antara lain :
1. Variabel. Merupakan tempat penyimpanan sebuah nilai. 2. Perulangan (Loop). Teknik for-do Teknik repeat-until Teknik while-do 3. Percabangan (branch).

Teknik if-then Teknik select-case 4. Modul. Procedure/Sub Function. Teknik Rekursif

Contoh Pseudocode, sederhana :


1. Algoritma untuk menampilkan 7 buah simbol #.

1 for i=1 to 7 do 2 display # 3 end for


2. Algoritma untuk menghitung faktorial dari N.

1 iTampung=1 2 for i=1 to N do 3 iTampung=iTampung*i 4 end for 5 display Faktorial dari ,N, adalah ,iTampung,NL
3. Algoritma untuk menampilkan bilangan Fibonacci.

1 f1=0 2 f2=1 3 for i=1 to 8 do 4 iFibo=f1+f2 5 display Angka ke-,i, adalah ,iFibo,NL 6 f1=f2 7 f2=iFibo 8 end for
Category: LOGIKA DAN ALGORITMA Leave a Comment 07 Okt Flowchart acip saifudin

Untuk menggambarkan sebuah algoritma yang terstruktur dan mudah dipahami oleh orang lain (khususnya programmer yang bertugas mengimplementasikan program), maka dibutuhkan alat bantu yang berbentuk Diagram Alir (Flowchart). Diagram alir ini akan menunjukkan alur di dalam program secara logika. Diagram alir ini selain dibutuhkan sebagai alat komunikasi, juga diperlukan sebagai dokumentasi. Dan sebelum lebih jauh memahami komponen-komponen diagram alir, maka perlu kiranya disampaikan aturan-aturan dalam perancangan diagram alir tersebut, yaitu :

1. Diagram alir digambarkan dengan orientasi dari atas ke bawah dan dari kiri ke kanan; 2. Setiap kegiatan/proses dalam diagram alir harus dinyatakan secara eksplisit; 3. Setiap diagram alir harus dimulai dari satu Start State dan berakhir pada satu atau lebih Terminal Akhir/Terminator/Halt State; 4. Gunakan Connector dan Off-Page Connector state dengan label yang sama untuk menunjukkan keterhubungan antar path algoritma yang terputus/terpotong, misalnya sebagai akibat pindah/ganti halaman.

Selain dengan Flowchart, untuk menuliskan sebuah algoritma dapat pula digunakan PseudoCode, yaitu suatu teknik penulisan algoritma dengan menggunakan sebanyak mungkin komponen-komponen dari salah satu bahasa tingkat tinggi (suatu bahasa pemrograman yang masih memerlukan unit kompilator untuk mengeksekusi program agar dapat berjalan). Dalam arti penulisan algoritma dengan Pseudo-Code ini hampir menyerupai sebuah program, tetapi tanpa menyertakan atribut-atribut program (seperti tipe data, dll), hanya menuliskan proses intinya saja. Berikut ini adalah simbol-simbol state yang digunakan untuk menggambarkan algoritma dalam bentuk diagram alir. Sedangkan keterangan yang terdapat di bawah masing-masing simbol adalah kegunaan dari simbol-simbol yang bersangkutan.

Contoh-contoh flowchart : Berikut ini adalah contoh-contoh pembuatan flowchart untuk menyelesaikan suatu masalah :
1. Menghitung Luas Lingkaran

Category: LOGIKA DAN ALGORITMA Leave a Comment 01 Okt LOGIKA DAN ALGORITMA : metode divide and conquer acip saifudin

Prinsip dasar dari metoda ini adalah membagi n input menjadi k subset input yang berbeda (1<kn). Dari k subset input yang bebeda akan terdapat k subproblem . Setiap subproblem mempunyai solusi masing-masing, sehingga akan diperoleh solusi yang optimal. Metoda DandC menggunakan teknik rekursif. DandC digunakan untuk menyelesaikan persoalan searching dan sorting.

Algoritma DandC secara umum : procedure DandC(p,q) global n, A(1:N); integer m,p,q if SMALL(p,q) then G(p,q) else mDIVIDE (p,q) COMBINE(DandC(p,m), DandC(m+1,q)) endif end DandC Keterangan :

Small(p,q) adalah fungsi bernilai boole yang menentukan apakah input q-p+1 berukuran cukup kecil sedemikian sehingga solusinya dapat dihitung tanpa pemecahan. Jika demikian halnya maka fungsi G(p,q) yang akan diproses atau dieksekusi. Pada keadaan lain, fungsi divide (p,q) yang diproses. Fungsi divide(p,q) menghasilkan bilangan bulat yang menguraikan input menjadi dua bagian. Misal m= divide(p,q) maka input dipecah menjadi A(p:m) dan A(m+1:q). Fungsi combine merupakan fungsi yang menentukan solusi umum atau solusi yang diharapkan dari persoalan semula A(p:q)

SEARCHING

Menentukan bilangan maksimum dan minimum dengan menggunakan teknik iteratif.

Algoritma : procedure straitmaxmin(A,n,max,min) integer i,n maxminA(1)

for i2 to n do if A(i) > max then maxA(i) else if A(i)<min then minA(i) endif repeat endstaritmaxmin
1. Keadaan Terbaik (Best Case)

Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara menaik (increasing). Contoh: array A berisi 4 bilangan yang disusun secara menaik
2 4 5 10

A= Jika dijalankan dengan algortima straitmaxmin maka akan diperoleh:

maxminA(1)=2 i=2 A(2) > max ? 4 > 2 ? ya max = 4 1 operasi perbandingan i=3 A(3) > max ? 5 > 4 ? ya max = 5 1 operasi perbandingan i=4 A(4) > max ?

10 > 5 ? ya max = 10 .1 operasi perbandingan Sehingga akan diperoleh min=2, max=10 Penyelesaian tersebut diperoleh dengan membutuhkan 3 operasi perbandingan atau secara umum (n-1)satuan opersai, n banyaknya elemen dalam array.
1. Keadaan Terburuk (Worst Case)

Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara menurun (decreasing).
80 21 6 -10

A= Jika dijalankan dengan algortima straitmaxmin maka akan diperoleh:

maxminA(1)=80 i=2 A(2) > max ? 21 > 80 ? tidak A(2) < max ? 21 < 80 ? ya min = 21 2 operasi perbandingan i=3 A(3) > max ? 6 > 80 ? tidak A(3) < max ? 6 < 80 ? ya min = 6 2 operasi perbandingan i=4 A(4) > max ? -10 > 80 ? tidak A(4) < max ? 21-10 < 80 ? ya min = -10 2 operasi perbandingan

Sehingga akan diperoleh min = -10, max = 80 Penyelesaian tersebut diperoleh dengan membutuhkan 6 operasi perbandingan atau secara umum 2(n-1)satuan opersai, n banyaknya elemen dalam array.
1. Keadaan Rata-rata (Average Case)

Keadaan ini akan tercapai jika elemen-elemen pada array disusun secara acak. Akan diperoleh waktu sebesar (3n/2-1) satuan operasi.

Menentukan bilangan maksimum dan minimum dengan menggunakakan metoda DandC (teknik rekursif)

Algortima : procedure maxmin(I,j,fmax,fmin) integer i,j global n,A(1:n) case : i=j ; fmaxfminA(i)

: i=j-1 ; if A(i) < A(j) then fmaxA(j); fminA(i) else fmaxA(i); fminA(j) endif : else mid(i+j)/2

call maxmin(i,mid,gmax,gmin) call maxmin(mid+1,j,hmax,hmin) fmaxmax(gmax,hmax) fminmin(gmin,hmin) endcase endmaxmin Contoh : dalam suatu array terdapat 9 bilangan yaitu

22

13

-5

-8

15

60

17

31

47

A= Penyelesaian

disimulasikan dalam bentuk pohon (tree). Nilai i=1, j=n=9

6, 9

1, 5 -5, -5

3, 3 22, 13 1, 2

Bilangan maksimum = 60 Bilangan minimum = -8 Analisis algoritma : T(n/2) + T(T(n/2) + 2 ; untuk n>2 T(n) = 0 1 ; untuk n= 2 ; untuk n =1

Category: LOGIKA DAN ALGORITMA Leave a Comment 01 Okt DASAR LOGIKA DAN ALGORITMA acip saifudin

Definisi Logika : Logika berasal dari kata Yunani kuno (logos) yang berarti hasil pertimbangan akal pikiran yang diutarakan lewat kata dan dinyatakan dalam bahasa. Logika adalah salah satu cabang filsafat. Sebagai ilmu, logika disebut dengan logike episteme (Latin: logica scientia) atau ilmu logika (ilmu pengetahuan) yang mempelajari kecakapan untuk berpikir secara lurus, tepat, dan teratur[1]. Ilmu disini mengacu pada kemampuan rasional untuk mengetahui dan kecakapan mengacu pada kesanggupan akal budi untuk mewujudkan pengetahuan ke dalam tindakan. Kata logis yang dipergunakan tersebut bisa juga diartikan dengan masuk akal. ( sumber : http://id.wikipedia.org/wiki/Logika) Definisi Algoritma : Ahli sejarah matematika menemukan kata algoritma berasal dari nama penulis buku Arab terkenal, yaitu Abu Abdullah Muhammad Ibnu Musa Al-Khuwarizmiseorang ahli matematika, astrologi, astronomi dan geografi. Algoritma adalah sekumpulan langkah (tahapan) logis untuk menyelesaikan suatu pekerjaan (permasalahan). Merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai. Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama
Category: LOGIKA DAN ALGORITMA Leave a Comment 01 Okt pengantar logika dan algoritma dengan pascal acip saifudin

Pengertian LOGIKA: Logika berasal dari bahasa Yunani yaitu LOGOS yang berarti ilmu. Logika pada dasarnya filsafat berpikir. Berpikir berarti melakukan suatu tindakan yang memiliki suatu tujuan. Jadi pengertian Logika adalah ilmu berpikir / cara berpikir dengan berbagai tindakan yang memiliki tujuan tertentu. Pengertian ALGORITMA: Pada Merriam-Websters Collegiate Dictionary, istilah algoritma diartikan sebagai prosedur langkah demi langkah untuk memecahkan masalah atau menyelesaikan suatu tugas. Kamus Besar Bahasa Indonesia (KBBI) mendefinisikan algoritma sebagai urutan logis pengambilan keputusan untuk pemecahan masalah. Alat Bantu untuk menuliskan Logika dan Algoritma, salah satunya adalah FLOWCHART. Pengertian FLOWCHART: gambaran dalam bentuk diagram alir dari algoritma dalam suatu program atau prosedur sistem secara logika, yang menyatakan arah alur program dalam menyelesaikan suatu masalah. SIMBOL Flowchart Pedoman-pedoman dalam Membuat Flowchart:
1. Bagan alir sebaiknya digambar dari atas ke bawah dan mulai dari bagian kiri dari suatu halaman. 2. Kegiatan di dalam bagan alir harus ditunjukkan dengan jelas. 3. Harus ditunjukkan dari mana kegiatan akan dimulai dan dimana akan berakhirnya (diawali dari satu titik START dan diakhiri dengan END). 4. Masing-masing kegiatan di dalam bagan alir sebaiknya digunakan suatu kata yang mewakili suatu pekerjaan, misalnya:

Persiapkan dokumen Hitung gaji


1. Masing-masing kegiatan di dalam bagan alir harus di dalam urutan yang semestinya. 2. Kegiatan yang terpotong dan akan disambung di tempat lain harus ditunjukkan dengan jelas menggunakan simbol penghubung. 3. Gunakanlah simbol-simbol bagan alir yang standar.

Secara garis besar, Ada 3 bagian utama dalam flowchart : Contoh: Buat algoritma dan Flowchart untuk Menghitung Luas Persegi Panjang:

Pekerjaan: Rumus: LuasPersegiPanjang = Panjang x Lebar Algoritma:


1. 2. 3. 4. Tentukan nama variabel yang akan menampung data Panjang, lebar dan luas persegi panjang. Masukkan (inputkan) data Panjang dan Lebar pada variabel yang sudah ditentukan. Hitung Luas persegi panjang. Tampilkan (outputkan) Luas persegi panjang.

Flowchart: Latihan: Buat algoritma dan Flowchart untuk Menghitung:


1. Luas Segitiga 2. Luas Lingkaran

IMPLEMENTASI DALAM PROGRAM (Sebagai contoh: Bahasa Pemrograman Pascal) Pengertian PROGRAM: Kumpulan instruksi (statements) yang disusun secara logis untuk memecahkan suatu masalah. Instruksi-instruksi yang digunakan disesuaikan dengan jenis bahasa pemrograman yang digunakan (reserved word yang disediakan). Stuktur Penulisan Pascal: Program Nama_Program; uses . . . {Unit-unit yang dipakai} ; label . . . {label-label yang dipakai } ; const

. . . {pengumuman tetapan-tetapan} ; type . . . { pengumuman tipe-tipe data }; var . . . { pengumuman peubah-peubah }; procedure Nama_Prosedur; begin ... end; Function Nama_Fungsi; begin ... end; { Program utama } begin ... end. Perintah Input : Perintah Pascal yang digunakan untuk memasukkan/menginputkan data. Bentuk perintah: Read dan Readln Struktur penulisan: Read(nama variabel);

Readln(nama Variabel) Perintah Output: Perintah Pascal yang digunakan untuk menampilkan/mengoutputkan data. Bentuk perintah: Write : setelah menampilkan data atau teks, kursor berada tepat disamping kanan data yang ditampilkan. Write : setelah menampilkan data atau teks, kursor berada pada baris berikutnya. Struktur penulisan: write(nama variabel); write(teks); writeln(nama Variabel); writeln(teks); Contoh: Buat program sederhana untuk Menghitung Luas Persegi Panjang: Program LuasPersegiPanjang; Var Luas, Panjang, Lebar : integer; Begin Readln(panjang); Readln(Lebar);Luas:= Panjang*Lebar; Writeln(Luas Persegi Panjang adalah:,Luas); Readln; End. Tampilan pada lembar kerja Pascal:

Menjalankan program dengan perintah: Ctrl+F9(tekan tombol Ctrl dan F9 bersama-sama). Apabila Panjang diisi 7 dan lebar diisi 8 maka hasil perintah diatas tampil sbb: Latihan: Buat program sederhana untuk Menghitung:
1. Luas Segitiga 2. Luas Lingkaran

STRUKTUR KENDALI IF Struktur kendali aliran adalah suatu bentuk/struktur yang memiliki peranan khusus untuk mengatur aliran urutan pengerjaan operasi atau beberapa operasi tertentu. Salah satu contoh pernyataan kendali yaitu pernyataan if . Pernyataan if (if statement) akan memeriksa suatu persyaratan dan menentukan apakah syarat tersebut benar atau salah, kemudian melakukan pekerjaan sesuai dengan nilai pernyataan tersebut. Struktur Penulisan: Berikut adalah bentuk-bentuk dari pernyataan if yang sering digunakan :
1. If dengan satu pernyataan (statement)

If (kondisi) then pernyataan ;


1. If dengan dua atau lebih pernyataan (statement)

If (kondisi) then begin pernyataan1 ; pernyataan2 ; .. end;

1. If dan else

If (kondisi) then begin pernyataan1 ; pernyataan2 ; .. end else begin pernyataan1 ; pernyataan2 ; .. end; Dari bentuk bentuk pernyataan if di atas yang harus diperhatikan adalah untuk pernyataan if dan else, pernyataan-pernyataan setelah then tanpa menggunakan ;. Dengan kata lain jika pernyataan setelah then hanya terdiri dari satu pernyataan saja makan pernyataan tersebut tanpa menggunakan ;, namun jika pernyataan setelah then terdiri dari lebih dari satu pernyataan makan setelah end tanpa menggunakan ;. Latihan: Buat flowchart dan program sederhana untuk menampilkan bilangan terbesar.
Category: LOGIKA DAN ALGORITMA Leave a Comment 30 Sep logika algoritma : teknik backtracking acip saifudin

TEKNIK BACKTRACKING

Pertama kali diperkenalkan oleh DH Lehmer (1950), dirumuskan dalam suatu algortima oleh RJ Walker (1960), aplikasinya dikembangkan oleh Golomb dan Baumert. Dasar dari teknik Backtracking adalah searching. Backtracking merupakan salah satu algotritma yang didasarkan pada pencarian ruang solusi. Pencarian ruang solusi dalam algoritma backtracking menggunakan teknik pencarian Depth First Search (DFS). Masalah-masalah yang dapat diselesaikan dengan menggunakan algoritma Backtracking adalah : o The 8-Queen Problem o The 4-Queen Problem o Sum of Subsets o Graph Coloring o Hamilton Cycles o Knapsack Problem o The Travelling Salesman Problem

Penyelesaian Sum of Subsets dengan Menggunakan Algoritma Backtracking Masalah utama dari SUM of SUBSETS adalah jika terdapat n bilangan real dan ingin dihitung semua kombinasi yang mungkin dari himpunan bilangan tersebut. Kombinasi yang didinginkan adalahkombinasi yang jumlah seluruh elemen-elemennya sama dengan M (tertentu). Algoritma Sum of Subset procedure sumofsub(s,k,r) global integer M,n global real w(1:n) real r,s integer k,j x(k) = 1 if s + w(k) = M then print(x(j),j 1 to k) else if s + w(k) + w(k+1) M then call sumofsub(s+w(k), k+1, r-w(k)) endif

endif if s + r-w(k) M and s + w(k+1) M then x(k) 0 call sumofsub(s, k+1, r-w(k)) endif end sumofsub Permasalahan : Suatu himpunan terdiri dari 6 bilangan yaitu {5, 10, 12, 13, 15, 18} yang disusun secara tidak turun. Akan ditentukan himpunan-himpunan bagiannya yang jumlah seluruh elemennya adalah 30 Penyelesaian : n=6 W(1:6) = {5,10,12,13,15,18} M = 30 Diasumsikan bahwa w(1) M dan w(i) M Dalam hal ini w(1)= 5 30 dan w(i) = 73 30,
k-1 j=1

dan nilai s diperoleh dari


n

w(j)x(j)
j=k

nilai r diperoleh dari w(j)


Category: LOGIKA DAN ALGORITMA Leave a Comment

Menampilkan deret bilangan Fibonacci

Algoritma :

1. Inisialisasikan a=0, b=1, c, i

2. Masukkan banyaknya deret bilangan Fibonacci dalam n

3. Cetak nilai b

4. Proses looping

- Untuk i=1 sampai n-1

- Tambahkan a dengan b dalam variable c, c = a + b

- Cetak nilai c

- Nilai b dimasukkan ke dalam nilai a

- Nilai c dimasukkan ke dalam nilai b

- Kembali ke proses 4a

5. Program selesai ]

String & Rekursif : Program Bilangan Fibonacci


7 12 2009

2. Buat program yang menampilkan metode bilangan Fibonacci Rumus : elemen dalam himpunan Fibonacci A = {e1, e2, e3, e4, , n-2, n} En = en-1 + en-2 Diketahui : elemen pertama (e1) dan kedua (e2) dari himpunan A Input : elemen ke-n dari himpunan Fibonacci A Contoh : Jika e1 = 1, dan e2 = 1 Dan input n =5, maka e3 = e2 + e1 = 1 + 1 = 2 e4 = e3 + e2 = 2 + 1 = 3 e5 = e4 + e3 = 3 + 2 = 5 Maka hasil = 5 Algoritma Program : 1. Program menampilkan instruksi kepada user untuk memasukkan nilai input. 2. Program menampilkan nilai himpunan fibonacci dari bilangan tersebut dengan memanggil fungsi fibonacci. 3. Jika nilai input sama dengan 1 atau 2 , fungsi akan mengembalikan nilai 1 ke fungsi main. 4. Jika tidak, fungsi fibonacci akan menjumlahkan nilai dari rekursi input dikurangi 1 dengan rekursi input dikurangi 2, kemudian mengembalikan hasil penjumlahan tersebut ke fungsi main. Source Code Program :
#include<stdio.h> #include<conio.h> int fibonacci(int);

main() { int input; printf("Masukkan nilai input ==> "); scanf("%d", &input); printf("Nilai himpunan fibonacci dari %d ==> %d", input, fibonacci(input)); getch(); } int fibonacci(int inp) { int elm, elm1, elm2; if (inp == 1 || inp == 2) { elm = 1; } else { elm1 = fibonacci(inp - 1); elm2 = fibonacci(inp - 2); elm = elm1 + elm2; } return elm; }

Posted By : Evan Yofiyanto @ Evans Blog : Kuliah Informatika (kuliahinformatika.wordpress.com) [FREAX]

String & Rekursif : Metode Perulangan Rekursif serta Pengaplikasiannya & Metode Perulangan Iteratif serta Pengaplikasiannya
7 12 2009

1. Apa yang Anda ketahui tentang metode perulangan rekursif ? Berikan contoh program yang mengaplikasikan perulangan rekursif !

Metode perulangan rekursi adalah suatu metode perulangan yang menggunakan suatu fungsi yang selalu memanggil dirinya sendiri sampai keadaan yang ditentukan pada fungsi tersebut terpenuhi. Contoh program yang mengaplikasikan perulangan rekursif adalah :

Algoritma Program : Program menampilkan statemen Mencari Faktorial dari x!. Program menampilkan instruksi kepada user untuk memasukkan input. Program memanggil fungsi faktorial. Fungsi faktorial menghitung nilai faktorial. Jika inputan user sama dengan 1 maka nilai yang dikembalikan ke fungsi main sama dengan satu. Jika tidak fungsi faktorial akan melakukan rekursi dengan mengurangi nilai input user 1 setiap kali rekursi. 5. Fungsi faktorial mengembalikan nilai ke fungsi main. 6. Program menampilkan output kepada user. 1. 2. 3. 4. Source Code Program :
#include<stdio.h> #include<conio.h> int faktorial(int); void main() { int x; puts("Mencari Faktorial dari x!"); printf("Masukkan nilai x(bulat positif): "); scanf("%d", &x); printf("Faktorial dari %d adalah: %d\n", x, faktorial(x)); getch();

} int faktorial(int a) { if(a == 1) return(1); else return(a*faktorial(a-1)); }

2. Apa yang Anda ketahui tentang metode perulangan iteratif ? Berikan contoh program yang mengaplikasikan perulangan iteratif !

Metode perulangan iteratif adalah Adalah suatu metode perulangan dimana kode program tersebut akan selalu diulang hingga keadaan yang ditentukan terpenuhi. Dalam C dapat menggunakan statement for, while dan do..while dalam penggunaannya. Contoh program yang mengaplikasikan perulangan iteratif adalah :

Algoritma Program : Program menampilkan statemen Mencari Faktorial dari x!. Program menampilkan instruksi kepada user untuk memasukkan input. Program memanggil fungsi faktorial. Fungsi faktorial menghitung nilai faktorial dengan melakukan perkalian dari bilangan 1 sampai bilangan inputan user secara looping(iteratif). 5. Fungsi faktorial mengembalikan nilai ke fungsi main. 6. Program menampilkan output kepada user. 1. 2. 3. 4. Source Code Program :
#include<stdio.h> #include<conio.h> int faktorial(int); void main() { int x; puts("Mencari Faktorial dari x!"); printf("Masukkan nilai x(bulat positif): ");

scanf("%d", &x); printf("Faktorial dari %d adalah: %d\n", x, faktorial(x)); getch(); } int faktorial(int a) { int i, fkt=1; for(i=1; i<=a; i++) fkt*=i; return fkt; }

Posted By : Evan Yofiyanto @ Evans Blog : Kuliah Informatika (kuliahinformatika.wordpress.com) [FREAX]

/** * * @author www.javadb.com */ public class Main { private final int UPPER_LIMIT = 10000; public void calculatePrimeNumbers() {

int i = 0; int primeNumberCounter = 0; while (++i <= UPPER_LIMIT) { int i1 = (int) Math.ceil(Math.sqrt(i)); boolean isPrimeNumber = false; while (i1 > 1) { if ((i != i1) && (i % i1 == 0)) { isPrimeNumber = false; break; } else if (!isPrimeNumber) { isPrimeNumber = true; } --i1; } if (isPrimeNumber) { System.out.println(i); ++primeNumberCounter; } } System.out.println("Nr of prime numbers found: " + primeNumberCounter); } /** * @param args the command line arguments */ public static void main(String[] args) { new Main().calculatePrimeNumbers(); } }

/** * @param args */ public static void main(String[] args) { if(args.length==0) { System.out.print("Please ennter a Number."); System.exit(0); } int count=0; int number= Integer.parseInt(args[0]); int[] numColl= new int[number]; for (int i=1;i<number;i++) { if(i==1) { continue; } else if(i==2||i==3||i==5||i==7) { count++; numColl[i]= i; continue; } else { if(i%2==0||i%3==0||i%5==0||i%7==0) continue; else { numColl[i]= i; count++; continue; } } } Arrays.sort(numColl); System.out.println("Prime numbers between 1 and "+number+" are "+ count); int N=1; for(int i=0;i<numColl.length;i++) { if(numColl[i]==0)

continue; else { System.out.println("Prime number " +N+ " is: "+numColl[i]); N++; } } }

public class PrimeNumberTest { public static void main(String a[]) { int fac=0; for(int i=2; i<100; i++) { for(int j=2; j<=i/2; j++) { if(i%j == 0) fac++; } if(fac > 0) System.out.println(i+ " is Not Prime"); else System.out.println(i+ " is Prime"); fac=0; } } }

//

public static void main(String[] args) { int valueToCheck = 17; // value to check int nRange = 50; boolean isPrime = false;

for (int i = 2; i <= nRange; i++) { if (i >= 2) { isPrime = true; // first check and assume it's prime number // try divide valueToCheck // with all number less than it self // and begining from 2 for (int j = 2; j < i; j++) { if (i % j == 0) { //if divides exactly so stop the loop and it must be not prime isPrime = false; break; // no need to check again } } } if(isPrime){ System.out.println(i);} } //System.out.println("is " + valueToCheck + " Prime ? "); //System.out.println("the answer is " + isPrime); } }

Vous aimerez peut-être aussi