Kamis, 30 Mei 2013

STACK IN JAVA

Stack pada Java


Stack adalah salah satu struktur data yang memiliki sistem kerja Last In First Out (LIFO), yang terakhir masuk pertama keluar. Dapat di ilustrasikan seperti sebuah tumpukan buku, ketika mengambil sebuah buku di dalam tumpukan itu maka harus diambil satu persatu dari buku yang paling atas dari tumpukan buku tersebut.  Sebuah stack hanya dapat ditambahkan dan dikurangi elemennya hanya dari satu sisi yakni elemen atasnya atau biasa disebut Top Of Stack.

Fungsi dalam Stack:
  • Fungsi init: fungsi yang digunakan untuk inisialisasi atau membuat stack baru yang masih kosong.
  • Fungsi full: digunakan untuk mengetahui stack penuh atau tidak.
  • Fungsi empty: digunakan untuk mengetahui stack kosong atau tidak.
  • Fungsi clear: digunakan untuk mengosongkan stack. Stack dianggap kosong apabila puncak stack berada pada posisi -1.
  • Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast
  • Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top. Jika dalam Linked List menggunakan method removeLast.

    Penggunaan STACK :
    * Perhitungan ekspresi aritmatika (posfix)
    * algoritma backtraking (runut balik)
    * algoritma rekursif


    (cites from http://id.wikipedia.org/wiki/Stack_%28struktur_data%29)

Ilustrasi :
Misalnya dalam stack ada data A,B,C,D secara berurutan mulai dari bawah (Ascending). >> Jika ingin mengeluarkan data A, maka proses yang dilakukan : POP D –>POP C –> POP B –> POP A
>> Jika ingin memasukkan data E dibawah B, maka proses yang dilakukan adalah : POP D –> POP C –> POP B –> PUSH E


COMMON ERROR :
1. Jika kondisi stack dalam keadaan sudah penuh kemudian di-PUSH, maka akan terjadi Blue Screen
2. Jika kondisi stack dalam keadaan kosong kemudian di-POP, maka akan terjadi looping tanpa henti.


CODE 
Ada 2 class yang digunakan untuk program STACK dengan paradigma OOP ini. Yang pertama Main dan Stack

CODE MAIN.JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int pilihan;
int data;
Stack result = new Stack();
//looping until false condition
do{
//Displaying Menu
System.out.println(“1. PUSH Item”);
System.out.println(“2. POP Item”);
System.out.println(“3. Lihat Isi Data”);
System.out.println(“0. Keluar”);
Scanner input = new Scanner(System.in);
System.out.println(“Masukkan Pilihan :”);
pilihan = input.nextInt();
//condition for choice
if(pilihan==1){
System.out.println(“Data yang ditambahkan : “);
data = input.nextInt();
result.push(data);
}
else if(pilihan==2){
result.pop();
}
else if(pilihan==3){
result.Display();
}
else if(pilihan==0){
System.exit(0);
}
else{
System.out.println(“Pilihan Tidak Ada!!”);
}//end of condition
} while(pilihan!=0);//end looping
}
}
CODE STACK.java
class Stack {
private boolean empty,full;
private int pos;//menujukkan tempat kosong
private int max_data = 100;
private int item [] = new int[max_data];
public Stack(){
full = false;
empty = true;
pos = 0;
}//end of constructor
//method isFull
public boolean isFull(){
return(full);
}//end of isFull method
//method isEmpty
public boolean isEmpty(){
return(empty);
}//end of isEmptyl method
//method push
public void push(int data){
if(!isFull()){
item[pos++] = data;
empty = false;
if(pos == max_data) full = true;
System.out.println(“Data sudah ditambahkan”);
}
else{
System.out.println(“Stack sudah penuh”);
}
return;
}//end of push method
//method pop
public int pop(){
int x = 0;
if(!isEmpty()){
x = item[--pos];
full = false;
System.out.println(“Data yang di POP adalah :” + item[pos]);
System.out.println(“”);
item[pos]=0;
if(pos==0)empty = true;
else{
System.out.println(“Stack Kosong!”);
}
}else{
System.out.println(“Stack Masih Kosong!\n”);
}
return(x);
}//end of pop method
//method Display
public void Display(){
System.out.println(“Isi Stack Adalah : “);
//printing list item
for(int i=0; i<pos; i++){
System.out.print(item[i]+" ");
}
System.out.println("\n");
}//end of Display
}
IMPLEMENTASI PADA PROGRAM

Bagian progam. 
Tumpukan.java




public class Tumpukan {
     
        public int ukuran;
        public long [] tumpukan;
        public int top;
         
public Tumpukan(int s){
    ukuran = s;
    tumpukan = new long [ukuran];
    top = -1;
}
public void push(long j){
    tumpukan[++top] = j;
}
public long pop(){
    return tumpukan[top--];
}
public long peek(){
    return tumpukan[top];
}
public boolean isEmpty(){
    return (top == ukuran-1);
}
public boolean isFull(){
    return(top == ukuran-1);
     
}
public void baca(){
    int i=top;
    while (i>0){
        System.out.print(tumpukan[i]);
        System.out.print(" ");
        i--;
    }
    System.out.println(" ");
}
}



Program Pemanggil: aplistack.java






public class aplistack{
    public static void main (String [] args){
        Tumpukan tumpukan=new Tumpukan(10);
        tumpukan.push(56);
        tumpukan.baca();
        tumpukan.push(45);
        tumpukan.baca();
        tumpukan.push(67);
        tumpukan.baca();
        long nilai1=tumpukan.pop();
        System.out.println("nilai1 = "+nilai1);
        System.out.println(" ");
        tumpukan.push(83);
        tumpukan.baca();
        tumpukan.push(27); 
        tumpukan.baca();
        long nilai2 = tumpukan.pop();
        System.out.print("nilai2 = "+nilai2);
        System.out.println(" ");
        long nilai3 = tumpukan.pop();
        System.out.println("nilai3 = "+nilai3);
        System.out.println(" ");
        tumpukan.baca();
         
         
    }
}

Referensi:
http://hidayahweb.blogspot.com/2012/05/stack-pada-java.html
http://blog.uin-malang.ac.id/syauqi/2010/06/03/stack-tumpukan/

QUEUE IN JAVA

Queue pada Java

Queue (antrian) adalah struktur data dimana data yang pertama kali dimasukkan adalah data yang pertama kali bisa dihapus. Atau bisa juga disebut dengan struktur data yang menggunakan mekanisme FIFO (First In First Out).
queue
Queue dalam kehidupan sehari-hari seperti antrian pada penjualan tiket kereta api, dimana orang yang pertama datang adalah orang yang pertama kali dilayani untuk membeli tiket. Jika ada orang baru yang datang akan membali tiket, maka posisinya berada pada urutan paling belakang dalam antrian tersebut. Orang yang berada pada posisi terakhir dalam antrian adalah yang terakhir kali dapat dilayani dan memperoleh tiket kereta api (kalau kurang beruntung, maka akan kehabisan tiket). Contoh lain adalah nasabah yang antri di teller bank, paket data yang menunggu untuk ditransmisikan lewat internet, antrian printer dimana terdapat antrian print job yang menunggu giliran untuk menggunakan printer, dsb.

Fungsi dalam Queue:
  • Fungsi init : digunakan untuk membuat queue baru atau kosong, yaitu dengan memberi nilai awal (head) dan nilai akhir (tail) dengan -1.
  • Fungsi full: digunakan untuk mengetahui apakah queue sudah penuh atau belum. Dilakukan dengan memeriksa nilai akhir (tail) apakah sudah sama dengan maksimal queue.
  • Fungsi empty: digunakan untuk mengetahui apakah queue masih kosong atau tidak. Dilakukan dengan memeriksa nilai akhir (tail) bernilai -1 atau tidak.
  • Fungsi enqueue : digunakan untuk menambahkan elemen ke dalam queue.
  • Fungsi dequeue : digunakan untuk mengambil elemen dari queue, dengan cara memindahkan semua elemen satu langkah ke posisi depannya sehingga elemen yang paling depan tertimpa.
  • Fungsi clear : digunakan untuk menghapus semua elemen dalam queue. Ada dua cara yang bisa digunakan, yaitu menuliskan fungsi seperti inisialisasi atau memanggil fungsi remove sampai queue kosong.

Istilah-istilah yang digunakan dalam queue (antrian)Memasukkan data (insert) disebut juga dengan putadd, atau enqueue
Menghapus data (remove) biasa disebut dengan istilah deleteget, atau dequeue
Bagian belakang queue, dimana data bisa dimasukkan disebut dengan backtail (ekor), atau end (akhir).
Sedangkan bagian depan (frontqueue dimana data bisa dihapus juga biasa disebut dengan istilah kepala(head).

Circular Queue
Di dunia nyata apabila seseorang sedang mengantri (misalnya antri tiket kereta api), apabila telah dilayani dan memperoleh tiket, maka ia akan keluar dari antrian dan orang-orang yang berada di belakangnya akan bergerak maju ke dapan. Kita bisa saja menggerakkan setiap item data ke depan apabila kita menghapus data yang terdepan, tetapi hal ini kurang efektif. Sebaliknya kita tetap menjaga setiap item data di posisinya, yang kita lakukan hanyalah merubah posisi front dan rear saja.

Yang menjadi permasalahan adalah apabila posisi rear berada pada bagian akhir dari array (atau pada nomor indeks yang terbesar). Meskipun ada bagian yang kosong di awal-awal array – karena mungkin data telah dihapus, data baru tidak bisa dimasukkan lagi karena rear-nya sudah tidak bisa bergerak lagi. Atau mungkinkah posisi rear nya bisa berpindah? Situasi seperti itu bisa dilihat seperti gambar berikut:
circular queue 
Untuk menghindari permasalahan seperti itu (tidak bisa memasukkan data baru) – meskipun queue-nya belum penuh, maka front dan rear-nya berputar (kembali) ke bagian awal array. Kejadian seperti ini dinamakan dengan circular queue (atau kadang-kadang disebut juga dengan istilah ring buffer). Kejadian seperti ini seperti terlihat pada gambar berikut:
circular queue
Perhatikan bahwa setelah rear berputar (kembali) ke bagian awal array, posisinya sekarang di bawah front, kebalikan dari posisi aslinya (front berada di bawah rear). Coba hapus beberapa data sehingga pada suatu saat front juga akan berputar (balik) ke bagian awal array, sehingga front dan rear akan ke susunan aslinya (front di bawah rear).

Queue.java

class Queue
{
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
//————————————————————–
public Queue(int s)          // konstruktor
{
maxSize = s;
queArray = new long[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
//————————————————————–
public void insert(long j)   // letakkan item (data) di posisi belakang dari queue
{
if(rear == maxSize-1)         //
rear = -1;
queArray[++rear] = j;         //naikkan rear dan masukkan item (data) pada posisi rear yang baru
nItems++;                     //tambah satu item lagi
}
//————————————————————–
public long remove()         // hapus item (data) yang berada pada posisi front
{
long temp = queArray[front++]; //dapatkan nilainya dan naikkan front
if(front == maxSize)           //
front = 0;
nItems–;                      // item (data) berkurang satu
return temp;
}
//————————————————————–
public long peekFront()      //
{
return queArray[front];
}
//————————————————————–
public boolean isEmpty()    //benar jika queue-nya kosong
{
return (nItems==0);
}
//————————————————————–
public boolean isFull()     // benar jika queue-nya penuh
{
return (nItems==maxSize);
}
//————————————————————–
public int size()           // jumlah ietm (data) dalam queue
{
return nItems;
}
//————————————————————–
}  // end class Queue
QueueApp.java
class QueueApp
{
public static void main(String[] args)
{
Queue theQueue = new Queue(5);  // queue menampung 5 item (data)
theQueue.insert(10);            // masukkan 4 item (data)
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();              // hapus 3 item (data)
theQueue.remove();              //    (10, 20, 30)
theQueue.remove();
theQueue.insert(50);            // masukkan 4 item (data) lagi
theQueue.insert(60);            //    (wraps around)
theQueue.insert(70);
theQueue.insert(80);
while( !theQueue.isEmpty() )    // hapus dan tampilkan
{                            //    all items
long n = theQueue.remove();  // (
System.out.print(n);
System.out.print(“ “);
}
System.out.println(“”);
}  // end main()
}  // end class QueueApp

method insert()
Method insert() mengasumsikan bahwa queue tidak penuh (full). Kita tidak melihatnya dalam main(), tetapi kita bisa memanggil insert() hanya setelah memanggil isFull() dan memperoleh nilai kembalian yang salah. Pengisian data dengan cara menaikkan rear dan mengisikan data baru tersebut pada rear yang baru sekarang. Tetapi, jika rear berada di puncak array, pada maxSize-1, maka harus kembali ke posisi terbawah array sebelum penyisipan dilakukan. Caranya dengan memberi nilai rear=-1, sehingga jika terjadi kenaikan pada pada rear, maka rear akan menjadi 0, dasar dari array. Dan akhirnya, nItem bertambah.

Method remove()
method remove mengasumsikan queue-nya tidak kosong. Untuk meyakinkan bahwa queue-nya tidak kosong, anda harus memanggil method isEmpty(). Penghapusan selalu dimulai dengan memperoleh nilai pada front dan kemudian mengurangi front. Jika front-nya terletak pada akhir array, maka harus kembali ke 0. KemudiannItems dikurangi.

Method peek()
untuk mendapatkan nilai pada front.

Method isEmpty(), isFull(), and size()
untuk mengecek nItems, apakah kosong atau penuh.

LINKED LIST IN JAVA

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 semuanode dalam link list mempunyai nama. Sebaiknya kita memberi nama untuk node yang pertama (misal namanyahead), 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/

ARRAY IN JAVA

ARRAY adalah adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe yang sama. Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang disediakan.
Array pada pemrogramman Java, dapat dibagi menjadi 2 bagian besar, yaitu Array Berdimensi Satu dan Array Multidimensi.


A. Array Berdimensi Satu
Bentuk pendekarasian Array Berdimensi Satu pada pemrograman Java, seperti dibawah ini:
tipe_data[] nama_var_array;
nama_var_array = new tipe_data[ukuran];

Contoh pendeklarasian :
int[] nilai;
nilai = new int[10];

a. Memasukan Nilai ke Array
Untuk memasukan nilai kedalam elemen array, dengan cara menyebutkan index untuk elemen array tersebut. Index dimulai dari index ke 0, bukan dari index ke 1.

nilai[0] = 70;
nilai[1] = 60;
nilai[2] = 80;

b. Mengambil Nilai dari Array
Untuk mengambil nilai dari dalam elemen array, dengan cara yang sama seperti memasukan kedalam elemen array, yaitu dengan menyebutkan index dari elemen array tersebut.

nilai[0];
nilai[1];
System.out.println("Nilai Elemen : " + nilai[0]);

Berikut contoh program array untuk menghitung total nilai dan nilai rata-rata elemen array.



/* ----------------------------
 Nama File : Array_D1_01.java
 Author    : Frieyadie
------------------------------- */

import java.util.*;
class Array_D1_01
{
 public static void main(String[] args)
 {
 int a, n, jml_nil=0;
 double nil_rata=0;
 int[] nilai;         // deklarasi variabel array
 nilai = new int[10]; // membuat objek array

 Scanner input = new Scanner(System.in);

 System.out.print("Masukkan Banyak Data = ");
 n = input.nextInt();

 System.out.println("");

 //Memasukan Data ke Elemen Array
 for(a=0; a

CONTROL STRUCTURE JAVA AND FLOWCHART

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 forwhile 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.