Kamis, 06 Maret 2014

Minggu, 02 Maret 2014

STRUKTUR DATA

DEMO INPUT STRING


DEMO KARAKTER


DEMO IF


DEMO IF ELSE


DEMO NESTED IF


PROGRAM "AND"


PROGRAM "OR"


MULTIPLE ACTION


SWITCH CASE


ANAGRAM

          Anagram adalah salah satu jenis permainan kata yang huruf-huruf di kata awal biasanya diacak untuk membentuk kata lain atau sebuah kalimat. Anagram sering dipakai sebagai kode. Permainan yang menggunakan anagram antara lain adalah scrabble dan boggle. Dalam kedua permainan ini, pemain berusaha membentuk kata-kata dari huruf yang disediakan.
            Menurut Encyclopedia Britannica, anagram adalah cara untuk mengubah susunan atau urutan huruf dalam kata atau dalam kalimat. Kata atau makna yang baru timbul tadi akan membentuk kata atau kalimat baru yang harus memiliki arti. Dengan kata lain, anagram bisa didefinisikan sebagai salah satu jenis permainan kata, di mana huruf-huruf di kata awal dapat diacak untuk mendapatkan kata lain atau sebuah kalimat yang berbeda. Arti baru yang muncul dari sebuah anagram bisa berupa sinonim, antonim, atau bahkan sebuah sindiran terhadap kata sebelumnya. Anagram sering dipakai sebagai kode. Bahkan permainan  Scrabble dan Boggle adalah salah satu jenis contoh penggunaan anagram. Sedangkan orang yang menciptakan anagram disebut sebagai anagramatis.
            Anagram mempunyai aturan tersendiri yang berbeda dengan antigram. Dalam otak atik anagram, paling tidak perlu adanya keselarasan kata atau kalimat yang terkait secara logika dengan kata yang asli walaupun  tidak semua arti anagram memiliki hubungan dengan kata aslinya. Sementara itu, antigram adalah sebuah anagram di mana kata baru yang dihasilkan memiliki pertentangan makna. Misalnya, restful (tenang) ber antigram dengan kata fluster (bingung). Salah satu aturan yang harus diingat dalam anagram adalah keharusan penggunaan seluruh huruf dalam kata atau kalimat asli berikut jumlah yang harus  sama persis dengan yang terdapat dalam kata atau kalimat asli. Jika salah satu huruf tidak digunakan maka kata atau kalimat awal tadi tidak bisa disebut sebagai anagram. Contoh sebuah anagram sindiran atau olok olok seperti nama penyanyi Amerika, Justin Timberlake yang bisa beranagram dengan frase” I m a jerk but listen.” Coba anda perhatikan, apakah ada huruf yang hilang, lebih atau tidak dipakai?

            Dari paparan diatas muncul pertanyaan, apakah anagram juga sering muncul dalan bahasa Indonesia? Pada kenyataaannya, bentuk anagram memang sangat mudah didapatkan dalam bahasa Inggris, walaupun ada juga di dalam Bahasa Indonesia. Beberapa contoh kata kata berikut ini seperti “daku muda” bisa menjadi “kamu duda”, “duka lara” menjadi “luka dara”, kata “marah” menjadi “ramah”, bahkan “lajang’’ menjadi “jalang”, dan lain-lain. Unik memang!! Bahkan, kata atau frase lokal bisa dianagramkan menjadi term internasional sepanjang kita bisa mengotak-atiknya. Contoh paling pas disini adalah frase Lumpur Lapindo yang beranagram menjadi “unpopular mild” yang bermakna “cairan yang tidak disukai!!” Tepat bukan???

Menara Hanoi


Menara Hanoi adalah sebuah permainan matematis atau teka-teki. Permainan ini terdiri dari tiga tiang dan sejumlah cakram dengan ukuran berbeda-beda yang bisa dimasukkan ke tiang mana saja. Permainan dimulai dengan cakram-cakram yang tertumpuk rapi berurutan berdasarkan ukurannya dalam salah satu tiang, cakram terkecil diletakkan teratas, sehingga membentuk kerucut.
Tujuan dari teka-teki ini adalah untuk memindahkan seluruh tumpukan ke tiang yang lain, mengikuti aturan berikut:
·        Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
·        Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang tersebut.
·        Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.

Teka-teki ini ditemukan Ă‰douard Lucas, ahli matematika Perancis pada tahun1883. Ada sebuah legenda tentang candi Indian yang berisi ruang besar dengan tiga tiang yang dikelilingi 64 cakram emas. Pendeta Brahma, melaksanakan tugas dari peramal di masa lalu, sesuai dengan aturan teka-teki ini. Menurut legenda ini, bila teka-teki ini diselesaikan, dunia akan kiamat. Tidak jelas benar apakah Lucas menemukan legenda ini atau terinspirasi olehnya.
Bila legenda ini benar, dan pendeta itu bisa memindahkan satu cakram tiap detik, menggunakan pemindahan paling sedikit, maka akan memakan waktu 264−1 detik atau kurang lebih 584,582 milyar tahun.


Permainan Menara Hanoi sering digunakan dalam penelitian psikologis dalam hal pemecahan masalah. Selain itu, juga sering digunakan dalam pengajaran algorima rekursif bagi pelajar pemrograman. Permainan ini juga digunakan sebagai ujian ingatan oleh ahli psikolog syaraf dalam berupaya mengevaluasi amnesia.

Program Sederhana Menghitung Faktorial dengan JAVA

Guna memperdalam pemrograman, terutama untuk pemrograman berorientasi objek yang biasanya disebut OOP (Object Oriented Programming) dengan java. sebenarnya pemrograman berorientasi objek dapat juga menggunakan C++, tapi dalam artikel kali ini saya bagikan program sederhana untuk menghitung faktorial dengan menggunakan bahasa pemrograman java.

Berikut source codenya :

class hitung{
            public static int hsl(int nilai)
    {
        int i,tot=1;
        for (i=1;i<=nilai;i++)
        {
            tot=tot*i;
        }
        System.out.println("Faktorial dari "+nilai+"! : ");
        return(tot);
    }
};

class faktorial
{
    public static void main(String[] args)
    {
        int hasil;
        hitung ht=new hitung();
        hasil=ht.hsl(7);
        System.out.println("Hasil Faktorial = "+hasil);
    }
}

Konsepsi logika dalam 
menghitung faktorial adalah misal 4!, untuk mengetahui nilai faktorial tersebut diperoleh dari 1x2x3x4 dan hasilnya 24. logikanya begini, misal hasil dari faktorial ditampung dalam variabel X, maka nilai awal X diisi dengan nilai 1 kemudian ada perulangan yakni nilai counter 1 sampai 4. saat masuk pada counter 1, nilai X yang baru=X yang lama dikali counter 1 (X=1*1, X=1) dilakukan terus hingga isi counter berakhir dinilai 4, dan akhirnya nilai X yang baru=niai X yang lama dikali dengan 4 (X=6*4, X=24) dan hasilnya nilai X terakhir adalah 24 (hasil faktorial).










REKURSIF


Dalam matematikafaktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Secara umum dapat dituliskan sebagai:
Sebagai contoh, nilai dari  adalah  Berikut ini adalah daftar sejumlah faktorial :
n n!
0 1
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
12 479001600
14 87178291200
16 20922789888000
18 6402373705728000
20 2432902008176640000
25 1.5511210043×1025
42 1.4050061178×1051
50 3.0414093202×1064
70 1.1978571670×10100
100 9.3326215444×10157
450 1.7333687331×101.000
1000 4.0238726008×102.567
3249 6.4123376883×1010.000
10000 2.8462596809×1035.659
25206 1.2057034382×10100.000
100000 2.8242294080×10456.573
205023 2.5038989317×101.000.004
1000000 8.2639316883×105.565.708
Fungsi faktorial didefinisikan sebagai:
Selain definisi tersebut, terdapat juga definisi secara rekursif, yang didefinisikan untuk 
Untuk n yang sangat besar, akan terlalu melelahkan untuk menghitung n! menggunakan kedua definisi tersebut. Jika presisi tidak terlalu penting, pendekatan dari n! bisa dihitung menggunakan rumus Stirling. 
Juga terdapat definisi analitik untuk faktorial, yaitu menggunakan fungsi gamma.
Metoda rekursif adalah metoda mengulang dirinya sendiri. Metoda ini memanggil dirinya sendiri untuk melakukan proses berulang-ulang. Kasus sederhana yang sering muncul adalah proses berulang-ulang menghitung hasil factorial. Misalnya adalah factorial dari 5 adalah 1 x 2 x 3 x 4 x 5. Dari proses itu kita ketahui bahwa untuk menghitung factorial 5 manualnya seperti 1 x 2 = 2, lalu hasil 2 ini dikalikan 3 sehingga hasilnya adalah 6, lalu hasil 6 ini dikalikan lagi dengan 4 sehingga hasilnya adalah 36, lalu hasil 36 ini dikalikan dengan 5 sehingga hasilnya adalah 120.
            Nah inilah yang dinamakan rekursif, hasil dari proses awal digunakan lagi untuk proses berikutnya sampai batas yang diinginkan.
Langsung aja ya ke javanya :

class faktorial{
int fak_rekursif(int n){
int Hasil;
if(n==1 || n==0) return 1;
Hasil = fak_rekursif(n-1) * n;
return Hasil;
}
int fak_perulangan(int n){
int t;
int Hasil;
Hasil = 1;
for(t=1; t<=n; t++)
Hasil *= t;
return Hasil;
}
}
class faktorialDemo{
public static void main(String args[]){
faktorial fak = new faktorial();
System.out.println("Hitung Faktorial dengan Rekursif");
System.out.println("Faktorial dari 4 adalah : "+ fak.fak_rekursif(4));
System.out.println("Hitung Faktorial dengan Perulangan");
System.out.println("Faktorial dari 4 adalah : "+ fak.fak_perulangan(4));
}
}
Kode diatas saya selipkan juga factorial dengan menggunakan perulangan. Pada proses factorial dengan perulangan, awalnya adalah hasil factorial bernilai 1 dan terus bertambah dengan perkalian tiap kenaikan t dari perulangan.
Berbeda dengan factorial dengan menggunakan metoda rekursif. Code yang menunjukan bahwa proses rekursif adalah :

Hasil = fak_rekursif(n-1) * n;
Nilai dari variable Hasil ini didapat dari pemanggilan terlebih dahulu fungsi fak_rekursif dengan parameter mundur. Jadi secara tidak langsung, code ini menghitung terlebih dahulu factorial dari yang kecil. Misalnya adalah factorial 5, maka code tadi itu menghitung.

Hasil = fak_rekursif(1-1) * 1; , memanggil fungsi fak_rekursif(0)
Hasil = fak_rekursif(2-1) * 2; , memanggil fungsi fak_rekursif(1)
Hasil = fak_rekursif(3-1) * 3; , memanggil fungsi fak_rekursif(2)
Hasil = fak_rekursif(4-1) * 4; , memanggil fungsi fak_rekursif(3)
Hasil = fak_rekursif(5-1) * 5; , memanggil fungsi fak_rekursif(4)

Karena proses awalnya adalah fak_rekursif(5-1)*5; , maka otomatis fungsi itu memanggil fungsi fak_rekursif (4), di dalam fungsi fak_rekursif(4), ada proses pemanggilan fungsi fak_rekursif(4-1)*4, yaitu fungsi fak_rekursif(3). Dan seterusnya.
Moga jelas ya, jadi proses rekursif adalah proses pemanggilan dirinya sendiri.