JTree pada Java

Written by Unknown on Selasa, 04 Juni 2013 at 00.14

JTree pada Java

JTree merupakan komponen yang digunakan untuk membuat struktur pohon. Salah satu yang membuat rumit di JTree adalah cara menambah datanya. Anda perlu membuat TreeModel dan juga menambahkan MutableTreeNode. Sayangnya tidak ada kelas yang dapat menyederhanakan proses pembuatan data di JTree.
JTree: pohon adalah jenis grafik khusus yang dirancang untuk menampilkan data dengan hirarki properti dengan menambahkan node ke node dan menyimpan konsep induk dan anak node.
Node: node yang merupakan objek setiap posisi dalam JTree dimana data yang terkait atau yang mewakili.
Path: Path adalah kumpulan berdampingan set node yang berisi satu atau banyak buku. Path adalah kosong atau null ketika path belum ada node.
Daun: Ini adalah khusus jenis node pada akhir jalan. Daun node tidak terhubung ke lebih node.
Root: Ini adalah node dari titik tertinggi dalam hirarki di pohon.
Orang tua: ini mewakili hubungan antara node dengan node lain. Dalam pemrograman berorientasi objek-konsep induk adalah super kelas.
Anak: ini mewakili hubungan antara node dengan node lain. Dalam pemrograman berorientasi objek-konsep anak adalah subclass dari induk. Ia inherits semua properti dari induk.
Keterangan program:
Berikut membuat program yang Komponen JTree sederhana. Pohon adalah khusus jenis grafik yang membangun pohon hirarki dengan menambahkan node ke node dan menyimpan konsep orang tua dan anak node atau root dan anak dari root node. Apabila Anda akan membuat sebuah pohon, Anda akan memerlukan root node yang akan dibuat oleh DefaultMutableTreeNode () metode. Semua benda yang DefaultMutableTreeNode ditambahkan dalam menentukan orang tua anak atau node yang akan ditentukan oleh Anda dan akar node ditambahkan dalam JTree juga objek yang akan ditambahkan pada frame.
Keterangan kode:
DefaultMutableTreeNode ( “Warna”, benar):
Ini adalah pembina dari DefaultMutableTreeNode kelas. Ia menciptakan sebuah pohon node tanpa root node, anak dari root node, ditentukan oleh pengguna objek dan memungkinkan hanya anak-anak yang harus ditentukan. Memerlukan waktu boolean jenis nilai baik ‘benar’ atau ‘palsu’. Jika anda akan mengambil ‘benar’ berarti bahwa anak-anak node diperbolehkan karena akan menampilkan IllegalStateException.
JTree (TreeNode induk):
Ini adalah pembina dari JTree kelas yang menunjukkan hirarki satu set data. Hasilnya JTree yang diberikan dengan TreeNode yang menampilkan root node di pohon. Dengan standar, pohon mendefinisikan node daun dari pohon. Yang diperlukan berikut jenis argumen:
induk : Ini adalah nama obyek yang TreeNode yang menampilkan root node.
Jikalau bisa disederhanakan, kenapa tidak kita yang mencoba untuk menyederhanakan cara pembuatan data di JTree? Dan artikel ini akan membahas tentang membuat JTree dinamis sederhana. Hanya ada satu root dan beberapa child :
1 2 3 4 5 6 7 8 9
Root
|_Child 1
|_Child 2
|_Child 3
|_Child 4
|_Child 5
|_Child 6
|_Child 7
|_Child 8

Membuat Kelas Creator

Untuk mempermudah pembuatan data di JTree, ada baiknya kita buat kelas Creator. Creator maksudnya kelas ini yang akan kita gunakan untuk membuat data TreeModel untuk JTree.
Sederhananya, kurang lebih kelasnya seperti pada kode dibawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
/*
* Copyright (c) 2011, StripBandunk and/or its affiliates. All rights reserved.
*
* http://stripbandunk.com/
*
* STRIPBANDUNK PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package stripbandunk.tutorial.jtreedemo;
 
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
 
/**
*
* @author Eko Kurniawan Khannedy
*/
public class TreeModelCreator {
 
private DefaultTreeModel model;
 
private DefaultMutableTreeNode root;
 
public TreeModelCreator(String rootData) {
root = new DefaultMutableTreeNode(rootData);
model = new DefaultTreeModel(root);
}
 
public void addChild(String child) {
root.add(new DefaultMutableTreeNode(child));
}
 
public TreeModel getModel() {
return model;
}
}

Menggunakan Kelas Creator untuk JTree

Setelah membuat kelas TreeModelCreator, kita dapat menggunakan kelas tersebut untuk membuat TreeModel untuk JTree, contohnya seperti berikut :
1 2 3 4 5 6 7
TreeModelCreator creator = new TreeModelCreator("Root");
creator.addChild("Eko");
creator.addChild("Kurniawan");
creator.addChild("Khannedy");
creator.addChild("StripBandunk");
 
jTreeSample.setModel(creator.getModel());

Hasil Akhir

Hasil akhirnya adalah sebagai berikut :
JTree Demo
JTree Demo

Recursive

Written by Unknown on at 00.13

Recursive

Definisi Recursive 
 
Recursive adalah proses pemanggilan dirinya sendiri (fungsi atau prosedur). Fungsi maupun prosedur yang memanggil dirinya disebut fungsi atau prosedur rekursif. Fungsi untuk suatu bagian program yang mengembalikan (menghasilkan) hanya satu nilai. Sebuah function call adalah suatu ekspresi jadi ia memberikan satu nilai.Procedure adalah suatu bagian program yang melakukan aksi/fungsi khusus, biasanya berdasarkan sekumpulan parameter. Sebuah procedure call adalah suatu statemen, jadi ia melakukan aksi. Banyak obyek dalam matematika didefinisikan dengan menampilkan suatu proses untuk  menghasilkan obyek-obyek tsb.

Misalnya : n faktorial (n!) didefinisikan sebagai produk dari semua integer diantara n dan 1. Contoh lain adalah bilangan asli. 1 adalah bilangan asli.Successor dari 1 adalah bilangan asli.
Perbedaan rekursi dengan prosedur/fungsi adalah rekursi bisa memanggil kedirinya sendiri tetapi prosedur atau fungsi harus dipanggil lewat pemanggil prosedur/fungsi. Ciri masalah yang dapat diselesaikan secara rekursif adalah masalah tersebut dapat direduksi menjadi satu atau lebih masalah-masalah serupa yang lebih kecil. Secara umum suatu algoritma rekursif selalu mengandung 2 macam kasus :
  1. satu atau lebih kasus yang pemecahan masalahnya dilakukan dengan menyelesaikan masalah serupa yg lebih sederhana (menggunakan recursive call).
  2. satu atau lebih kasus pemecahan masalahnya dilakukan tanpa recursive call. Kasus ini disebut kasus dasar atau penyetop. Supaya tidak terjadi rekursif tak hingga, maka setiap langkah rekursif haruslah mengarah ke kasus penyetop.
Sistem komputer mengikuti jalannya program yang rekursif biasanya dengan menggunakan suatu struktur data yang disebut stack. Ketika eksekusi program sampai pada suatu rekursif call, ia menghentikan sementara komputasi yg sedang dilaksanakannya sekarang untuk melakukan recursive call tsb, agar ia dapat kembali ke keadaan semula setelah recursive call itu selesai , ia harus menyimpan informasi yang cukup. Informasi yg diperlukan disebut activation frame.  Activation frame disimpan pada bagian memori yg diatur dalam benruk stack.  Rekursif yang berlapis-lapis dapat menghabiskan memori yang mengakibatkan stack overflow.  Masalah yg mempunyai solusi rekursif juga mempunyai solusi iteratif(menggunakan loop).  Versi iteratif seringkali lebih efisien daripada versi rekursif karena rekursif biasanya menggunakan memori yg lebih besar dan memerlukan waktu ekstra u/ penanganan stack of activation frame.
Contoh 1 menghitung faktorial :


recursion1

Hasil Outputnya


recrusion2


Parameter and local Variable
Stacks  adalah Struktur data dimana data yang terkhir masuk adalah data yang akan diproses terlebih dahulu. Stack biasanya dimplementasikan dengan menggunakan sebuah array,dalam stack kita bisa menambah data dengan perintah operasi push,dan menghapus data dengan menggunakan perintah operasi pop
Fungsi Rekursi pada Matematika
Banyak fungsi matematika yang dapat didefinisikan dengan rekursi.
Contoh: fungsi faktorial dari n (n!), dapat didefinisikan secara iteratif :
0! Adalah 1 dan  n! Adalah n x (n-1)!, untuk n>0
Misal: 4! Adalah 4 x 3!, yang artinya 4 x 3 x 2 x 1, atau 24

Iteratif  dan  rekursi
1.      Persamaan dan perbedaan Iteraktif dan rekursif
  • Persamaan
          Sama-sama merupakan bentuk perulangan
          Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang
  • Perbedaan
          Pada rekursi, dikenal adanya istilah recursive step
          Sedangkan pada iteratif ada decrement
Kelebihan dan kekurangan recursive
  • Kelebihan
          solusi sangatlah efisien
          dapat memecahkan masalah yang sulit dengan tahapan yang mudah dan singkat
  • Kelemahan
          sulit dipahami
          perlu stack besar (stack overrun)
Kasus Menara Hanoi 
Definisi menara hanoi
Menara Hanoi adalah problem di mana kita harus memindahkan balok yang mempunyai perbedaan ukuran dari suatu menara (tower) ke menara lainnya.
Masalah  :
1. Memindahkan n balok dari menara A ke menara C menggunakan menara B bila dibutuhkan.
2. Hal yang harus dicermati :
Hanya satu buah balok saja yang dapat dipindahkan dalam satu waktu  balok yang lebih besar tidak boleh diletakkan di atas balok yang lebih kecil

Review Algorithma

Written by Unknown on at 00.12

Review Algorithma

Dalam matematika dan komputasi, algoritma atau algoritme 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.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
DEFINISI ALGORITMA
  1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis. (Rinaldi Munir, 2006).
  2. Algoritma diartikan sebagai prosedur langkah demi langkah untuk memecahkan masalah atau penyelesaian tugas khususnya dengan menggunakan bantuan komputer (merriam-webster`s Collegiate Dictionary).
  3. Algoritma sebagai urutan logis pengambilan keputusan untuk pemecahan masalah (Kamus Besar Bahasa Indonesia)
  4. Algoritma adalah teknik penyusunan langkah demi langkah penyelesaian masalah dalam bentuk kalimat singkat dengan jumlah kata terbatas, namun tersusun secara logis sistematis (suarga, 2006).
  5. Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah terbatas tetapi tersusun secara logis dan sistematis.
  6. Prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya.
Berdasarkan beberapa petikan defenisi, bahwa algoritma merupakan urutan langkah yang logis dan mengikuti suatu urutan tertentu, tidak boleh melompat-lompat (Microsoft Press Computer and internet Dictionaary 1997, 1998). Ini berarti, hasil dari urutan langkah-langkah tersebut harus dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar dapat memberi hasil yang salah. 
Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis menyebabkan alogaritma seseorang dapat juga berbeda dari alogaritma yang lain, yang tertuang dalam bentuk kalimat, gambar, atau table tertentu (Moh. Sjukani, Algoritma dan struktur data dengan C, C++, dan JAVA).

Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah pemprograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik, maka proses pemprograman akan menjadi salah atau rusak, lambak dan tidak efisien.

Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemprograman dan komputer yang mengeksekusinya. Notasi alogaritma bukan notasi bahasa pemprograman tetapi dapat diterjemahkan kedalam berbagai bahasa pemprograman.
SEJARAH ISTILAH ALGORITMA
Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem (program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran (diagram alur) diatas kertas.
JENIS-JENIS ALGORITMA
Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.
  • Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
  • Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.
PENULISAN ALGORITMA
  1. Menggunakan bahasa natural (bahasa indonesia, bahasa inggris atau bahasa yang di mengerti oleh manusia), kendala yang sering muncul adalah pernyataan yang dibuat menggunakan bahasa natural adalah sering menimbulkan kebingungan (ambiguous).
  2. Menggunakan flowchard (diagram alir). Pengguna diagram ali dalam algoritma lebih baik dibanding pain 1, karena alogaritma dalam bentuk flowchart baik secara visual tetapi bila algoritmanya panjang maka flowchartnya juga menjadi repot.
  3. menggunakan pseudo-code. Penulisan ini dekat pada bahasa pemprograman namun sulit dimengerti oleh orang yang tidak mengerti pemrograman
SYARAT / CIRI ALGORITMA

Syarat sebuah algoritma yang baik menurut Donald E. Knuth sebagai berikut:
  1. Finiteness yaitu, Algoritma harus berakhir setelah melakukan sejumlah langkah proses.
  2. Definiteness yaitu, Setiap langkah algoritma harus didefenisikan dengan tepat dan tidak menimbulkan makna ganda. Sehingga, langkah yang tepat menuliskan algoritma adalah dengan menggunakan languange (bahasa pemprograman computer).
  3. Input yaitu, Setiap algoritma memerlukan data sebagai data untuk masukan untuk diolah.
  4. Output yaitu, Setiap algoritma memberikan satu atau beberapa hasil luaran.
  5. Effectiveness yaitu, Langkah-langkah algoritma dikerjakan dalam waktu yang wajar sebisa mungkin harus dapat dilaksanakan dan efektif.
JENIS PROSES ALGORITMA
  1. Sequace Process merupakan Instruksi dikerjakan secara sekuensial (berurutan).
  2. Selection Process merupakan Instruksi dikerjakan jika memenuhi kriteria tertentu.
  3. Interation Process merupakan Instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
  4. Concurret Process merupakan beberapa instruksi dikerjakan secara bersama.
ALGORITMA SEBAGAI SUB BIDANG ILMU KOMPUTER

Ilmu komputer (computer science) adalah ilmu pengetahuan yang berisi tentang teori, metodologi, desain dan implementasi, yang berhubungan dengan komputasi, komputer dan algoritmanya dalam perspektif perangkat lunak (sofware) maupun perangkat keras (hardware). Ilmu komputer sangat berkaitan erat dengan algoritma, hampir semua bidang dari ilmu komputer (computer science) tidak terlepas dari algoritma. Bahkan pada saat ini, studi tentang algoritma telah menjadi subbidang khusus dalam ilmu komputer. Studi atau ilmu yang mempelajari tentang algoritma sering disebut dengan istilah algorithmics.


TAHAPAN ALGORITMA

Proses pemecahan masalah dengan algoritma tertentu hingga menjadi program dapat dibagi dalam tahapan berikut:
  1. Mendefinisikan masalah : masalah yang ingin dicapai harus jelas lingkupnya.
  2. Membuat model (bentuk) matematis yang dapat digunakan untuk memecahkan masalah.
  3. Merancang algoritma: apa masukannya, bagaimana rincian prosesnya dan apa keluarannya.
  4. Menuliskan program: ubah algoritma menjadi program (source code) sesuai dengan bahasa pemprograman tertentu.
  5. Mengubah source code menjadi executable code melalui proses compiling
  6. Memeriksa hasil compiling, jika salah maka kembali ke tahap empat.
  7. Menjalankan program (run) untuk diuji kebenarannya dengan menggunakan berbagai data.
  8. Memperbaiki keselahan
  9. Mendokumentasikan program bila sudah benar.

Sorting and Searching pada Java

Written by Unknown on at 00.12

Sorting and Searching pada Java

Didalam pemograman Java terdapat dua algoritma yang dapat digunakan dua metode yaitu sorting dan searching. Dibawah ini akan membahas dua algoritma tersebut dan beserta contoh listing pemograman dalam java.

1. Sorting
Sorting adalah proses menyusun elemen - elemen dengan tata urut tertentu dan proses tersebut terimplemantasi dalam bermacam aplikasi.
Macam - macam algoritma sorting :
  •       Insertion Sort
Salah satu algoritma  sorting  yang paling sederhana adalahinsertion sort. Algoritma Insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian arrayyang belum diurutkan dan kemudian diletakan sesuai dengan posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang terisisa pada bagian array yang belum diurutkan.
  •       Selection Sort
Selection Sort adalah memilih elemen dengan nilai yang paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai dari 1 ke-n, dimana n adalah jumlah total elemen dikurangi 1.
  •     Merge Sort 
Sebelum pembahasan mengenai algoritma merge sort, akan dijelaskan garis besar dari konsep divide and conquer karena merge sort mengadaptasi pola tersebut.
  • Pola Divide and Conquer
Beberapa algoritma mengimplentasikan konsep rekursi untuk menyelesaikan permasalahan.  Permasalahan utama kemudian dipecah menjadi sub-masalah, kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan utama.

Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah:
1. Divide
Memilah masalah menjadi sub masalah.

2. Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut
cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan
lebih efektif.

3. Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju
penyelesaian atas permasalahan utama.
Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen tersebut menandakan bahwa bagian tersebut telah terurut sesuai dengan rangkaiannya.
Studi Kasus dalam pemograman java dengan menggunakan algoritma Sorting :
Class Bubble :

Class Insert :



Class Max :




Class Output :


2. Searching
 
      Searching merupakan kegiatan untuk menemukan atau mencari suatu data yang ditentukan disuatu tempat, apakah sudah sesuai atau belum. Algoritma searching mempunyai beberapa metode, salah satunya adalah metode pencarian beruntun atau disebut juga denganSequential SearchSequantial Search adalah metode pencarian yang dimulai dari data elemen pertama.
Studi Kasus dalam pemograman java dengan menggunakan algoritma Searching :




Class Searching :





Hasil Output :
Referensi
http://dinifitrianti.blogspot.com/2011/10/sorting-dan-searching-dalam-pemograman.html/
http://asmauna.wordpress.com/2012/11/29/sorting-pada-java/

structure control java and Flowchart

Written by Unknown on at 00.11

structure control java and Flowchart

Dalam membuat aplikasi tentunya bukan hanya membutuhkan masukan (input) dan keluaran (output). Namun aplikasi yang dibuat juga harus dapat memproses secara tepat data yang pengguna inputkan sehingga diharapkan dapat menampilkan output informasi yang tepat pula.
 
Untuk memproses data tersebut, dibutuhkan adanya prosedur yang tepat yang perlu dibuat yang merupakan suatu intruksi yang harus atau tidak harus dilakukan oleh komputer. Di dalam pemrograman, instruksi yang kita tuliskan dalam bentuk kode bahasa pemrograman, tentunya tidak harus dilakukan semua secara berurutan tetapi program harus bisa memilih apa yang harus dilakukan oleh komputer ketika menemui suatu kondisi khusus yang memerintahkan komputer untuk melakukan atau mengabaikannya. 
Java mempunyai tiga macam struktur kontrol yaitu struktur berurutan (sequence structure), struktur penyeleksian (selection structure), dan struktur perulangan (repetition structure). Setiap program Java yang kompleks dibentuk dengan mengkombinasikan struktur berurutan, struktur penyeleksian, dan struktur perulangan.

Normalnya, pernyataan program dieksekusi satu demi satu sesuai urutan ketika pernyataan ditulis di program. Eksekusi semacam ini dinamakan dengan eksekusi berurutan (sequential execution). Namun demikian, seringkali kita akan dihadapkan pada situasi dimana harus menyediakan pernyataan alternatif untuk dieksekusi. Dengan adanya pernyataan alternatif ini, pernyataan berikutnya yang dieksekusi kemungkinan bukan pernyataan sesuai urutan ketika ditulis di program. Proses seperti ini disebut pemindahan kontrol (transfer of control). Java menyediakan beberapa pernyataan untuk maksud ini yaitu pernyataan if, if … else, nested if, switch, dan ekspresi bersyarat (conditional expression). Jenis pernyataan yang memungkinkan pemindahan kontrol disebut juga selection statement.

Java juga menyediakan pernyataan perulangan untuk mengontrol berapa kali pernyataan atau blok pernyataan program dieksekusi. Misalnya, Anda ingin menampilkan nama sebanyak empat puluh kali. Tanpa menggunakan pernyataan perulangan, System.out.println(“Aristo Khairan”); Anda harus ditulis sebanyak empat puluh kali, suatu cara yang membosankan. Dengan menggunakan pernyataan perulangan, komputer dapat diminta untuk menampilkan nama berulang kali tanpa harus menulis pernyataan berulang kali pula. Java menyediakan tiga macam pernyataan perulangan untuk maksud ini yaitu pernyataan while, do-while, dan for.
Berikut penjelasan sedikit mengenei dua jenis Struktur Kontrol yang dapat kita buat di dalam pemrograman Java yaitu :
  1. Kontrol Percabangan, yaitu struktur kontrol yang memerlukan sebuah atau beberapa kondisi sebelum menjalankan program lainnya. Jika telah memenuhi suatu kondisi, maka pernyataan di dalam kondisi yang sesuai tersebut akan dijalankan. Jika tidak, maka akan mencari kondisi lainnya yang sesuai di dalam kontrol percabangan. Dan jika masih tidak ditemukan kondisi yang sesuai di dalam percabangan tersebut, maka akan dilanjutkan ke instruksi berikutnya di luar percabangan jika ada, dan akan berhenti jika tidak ada kondisi yang sesuai. Ada beberapa instruksi yang dapat kita deklarasikan untuk membuat percabangan dalam pemrograman java antara lain if, if-else dan switch

     


     Kontrol
     Percabangan 
    Bentuk Instruksi
     if
     if (kondisi) {
        PernyataanJikaMemenuhi;
      }
     atau 
     if (kondisi) {
        PernyataanJikaMemenuhi1;
        PernyataanJikaMemenuhi2; 
        . . . .
      }
     if-else
     if (kondisi) {
        PernyataanJikaMemenuhi1;
        PernyataanJikaMemenuhi2; 
        . . . . 
      }
      else{
        PernyataanJikaTidakMemenuhi1;

        PernyataanJikaTidakMemenuhi2; 
        . . . .
      }
     switch
     switch (switch_ekspresi) {
        case nilai1 :
          pernyataan; // jalankan instruksi
          break;      // hentikan
        case nilai2 :
          pernyataan; // jalankan instruksi
          break;      // hentikan
        case nilai3 :
          pernyataan; // jalankan instruksi
          break;      // hentikan
        default:
          pernyataan; // jalankan instruksi
          break;      // hentikan
      }
  2. Kontrol Perulangan, yaitu struktur kontrol yang menangani sebuah instruksi yang dilakukan berulang-ulang hingga suatu kondisi terpenuhi. Blok instruksi perulangan akan diulang secara terus-menerus hingga suatu kondisi terpenuhi. Dalam perulangan, harus terdapat sebuah kondisi yang akan menyebabkan perulangan tersebut terhenti, karena jika tidak, maka perulangan akan melakukan blok instruksi tersebut secara terus-menerus tanpa henti, yang akan menyebabkan kesalahan program. Ada beberapa instruksi yang dapat kita deklarasikan untuk membuat percabangan dalam pemrograman JAVA antara lain for, while dan do-while.
 Kontrol
 Perulangan 
Bentuk Instruksi
 for
 for(inisialisasi;kondisi;TahapEkspresi){
   pernyataan1;
   pernyataan2; 
   . . . .
  }
while
  while(boolean_ekspresi){
   pernyataan1;
   pernyataan2; 
   . . . .
  }
 do-while
 do{
   pernyataan1;
   pernyataan2; 
   . . . .
  }while(boolean_ekspresi)




 

PENULISAN ALGORITMA

Perlu diketahui bahwa algoritma bukan bahasa pemrograman, sehingga setiap orang dapat membuat notasi algoritmik (notasi-notasi deskriptif) yang berbeda. Notasi algoritmik, bukan notasi baku bila dibandingkan dengan bahasa pemprograman, yang dibuat merupakan notasi yang mudah dibaca dan dimengerti untuk menghindari terjadinya kekeliruan.

Simbol Bagan Alir.

Bagan alir (flowchart) adalah rangkaian simbol-simbol yang menjelaskan langkah-langkah sebuah proses. Bagan alir program (program flowchart) berbeda dengan bagan alir sistem (system flowchart). Bagan alir program lebih terperinci dan menyangkut langkah-langkah proses program dari awal sampai akhir. Bagan alir sistem hanya menggambarkan arus data dari sistem. Simbol-simbol yang digunakan di bagan alir program dan bagan alir sistem ada yang sama dan ada pula yang berbeda. Beberapa simbol bagan alir program dapat digunakan untuk memahami struktur kontrol program lebih mudah. Berikut ini adalah simbol-simbol yang pada umumnya digunakan di bagan alir program:
Sebuah program sederhana dapat dengan mudah dibuat tanpa bantuan bagan alir. Bagan alir akan bermanfaat dan membantu apabila digunakan untuk pengembangan program aplikasi skala besar yang melibatkan lebih dari satu orang.

Pseudo-code

Ilmuwan komputer menyukai menuliskan algoritma agar lebih praktis yaitu notasi pseudo code. Pseudo code (pseudo berarti semu atau tidak sebenarnya) merupakan notasi yang mirip dengan notasi bahasa pemprograman. Pseudo code merupakan campuran antara bahasa alami (natural) dengan bahasa pemprograman. Kemudahan menggunakan pseudo code adalah kemudahan menkonversikan (mentralisasi) ke nota bahasa pemprograman karena terdapat korespondin (hubungan yang saling terkait) antara setiap pseudo code dengan notasi bahasa pemprograman.

Pedoman yang perlukan diketahui bagaimana menyusun pseudo code yang digunakan adalah
  1. Notasi dipakai untuk memberikan nilai ke suatu variabel.
  2. Setiap pernyataan atau suatu perintah yang dapat berdiri sendiri akan ditulis dalam sebuah baris tersendiri.
  3. Setiap variable (nama yang digunakan untuk menyimpan data yang dapat diubah-ubah) akan ditulis dengan awalan huruf.
  4. Tipe data majemuk atau disebut tipe data rekaman (tipe data yang dapat mengandung beberapa data dengan nama yang berbeda-beda ).
  5. Indentasi (penjorokan ke kanan) digunakan untuk menuliskan pernyataan yang berada dalam suatu struktur blok.
  6. Symbol // digunakan untuk menyatakan komentar (keterangan yang ditujukan untuk pembaca algoritma, tidak ditujukan untuk proses oleh komputer).
  7. Notasi masukkan ( ) dan tampilkan ( ) secara berurutan mewakili perintah untuk memperoleh masukan dan menyajikan keluaran.
  8. Nilai logika yang dapat dipakai untuk membandingkan pernyataan dan logika yang akan memberikan suatu hasil apakah bernilai benar atau salah.
  9. Bentuk menyatakan model penulisan untuk menangani struktur selesai.
 


Referensi
http://erfan2040.blogspot.com/2012/10/memahami-struktur-kontrol-pada.html
http://ayadesain.wordpress.com/2009/05/24/struktur-kontrol-java/
http://www.termasmedia.com/2012-05-29-02-56-17/java/209-struktur-kontrol-java-dan-simbol-bagan-

Linked List Java

Written by Unknown on at 00.10

Linked List Java

Pengertian Linked list :
  • sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian
  • struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.
Link list adalah desain tempat penyimpanan data yang terdiri dari node-node (simpul-simpul) yang saling terhubung.

Link list dapat diilustrasikan seperti kereta api, dimana kereta api terdiri dari gerbong-gerbong yang saling terhubung yang dapat mengangkut penumpang. Gerbong disini setara dengan node dalam link list yang berfungsi untuk menyimpan data.


Jika kita menyimpan data 3, 5 dan 7 dalam array, maka ilustrasi tempat penyimpanannya sbb:
Dengan 1 nama, array bisa menyimpan data yg bertipe sama. Dimana setiap data mempunyai indeks.
Sedangkan jika data tersebut disimpan dalam link list, maka ilustrasi tempat penyimpanannya sbb:
Singly Linked List :
~ Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya dan juga memiliki field yang berisi data.
~ Akhir linked list ditandai dengan node terakhir akan menunjuk ke null yang akan digunakan sebagai kondisi berhenti saat pembacaan linked list.
Single Linked List Non Circular
Singly Linked List Non Circular
Doubly Linked List :
~ Linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu: 1 field pointer yang menunjuk ke pointer berikutnya, 1 field pointer yang menunjuk ke pointer sebelumnya dan field yang berisi data dari node tersebut.
~ Pointer next dan prev-nya menunjuk ke null.
Doubly Linked List
Doubly Linked List
 

Singly Circular Linked List :
~ Single Linked List yang pointer next-nya menunjuk ke dirinya sendiri, jika terdiri dari beberapa node maka pointer terakhirnya akan menunjuk ke pointer terdepannya.
Singly Circular Linked List
Singly Circular Linked List

Double Circular Linked List :
~ Double Linked List yang pointer next dan prev-nya menunjuk ke dirinya sendiri secara circular.
Doubly Circular Linked List
Doubly Circular Linked List
Link list tidak mempunyai indeks seperti array. Kita hanya bisa memberi nama node. Akan tetapi, tidak semua node dalam link list mempunyai nama. Sebaiknya kita memberi nama untuk node yang pertama (misal namanya head), dan node yang terakhir (misal namanya tail). Tujuannya untuk memudahkan operasi link list dari depan atau belakang, misal nambah data atau menghapus data. 
Langkah yang pertama, kita harus mendefinisikan apa itu node. Dalam Java, sebaiknya pendefinisian node ini dibuat dalam sebuah class, misal:






 


Kemudian kita buat design link list dalam class yang lain, misal:


* untuk contoh program lengkap ada dalam file. download disini.
Operasi-operasi yang bisa dilakukan dalam link list yaitu:
  1. Tambah data (insert)
  2. Edit data (edit)
  3. Hapus data (delete)
  4. Pengurutan data (sorting)
  5. Pencarian data (searching)
Tambah Depan
Untuk tambah data dari depan, caranya:


Tambah Belakang
Untuk tambah data dari belakang, caranya:








Hapus Depan
Untuk menghapus data dari depan, caranya:








Hapus Belakang
Untuk menghapus data dari belakang, caranya:









Referensi:
http://dianuraiman.blogspot.com/2011/11/link-list-dalam-java.html 
http://tutorialpemrograman.wordpress.com/2009/02/14/linked-list-dalam-bahasa-java/
http://desiasfi.wordpress.com/2012/04/14/stack-dan-queue-dengan-linked-list-pada-java/