Sunday 8 May 2016

Struktur Data (Antrian/Queue)

Queue atau antrian didefinisikan sebagai sebuah jalur tunggu, seperti sebuah jalur orang menunggu untuk beli tiket, dimana orangyang pertama datanag akan dilayani terlebih dahulu.
Dalam aplikasi computer, queue didefinisikan sebagai sebuah list dmana semua penambahan elemen dibuat di ujung belakang dan penghapusan elemen list dibuat di ujung depan. Dengan bentuk yang demikian queue dapat dikatakan sebagai struktur data yang bersifat FIFO (First In Firs Out).

Contoh program :

class Antrian
{
     private int ukuran;
     private long[] antrian;
     private int depan;
     private int belakang;
     private int jumItem;

     public Antrian(int s)
     {
          ukuran = s;
          antrian = new long[ukuran];
          depan = 0;
          belakang = -1;
          jumItem = 0;
     }

     public void masuk(long j)
     {
          if(!isFull())
          {
              antrian[++belakang] = j;
              jumItem++;
          }
     }

     public long keluar()
     {
          long temp = antrian[0];
          for (int i=0;i<jumItem;i++)
              antrian[i]=antrian[i+1];
          jumItem--;
          belakang--;


          return temp;
     }

     public long peekDepan()
     {
          return antrian[depan];
     }

     public boolean isEmpty()
     {
          return (jumItem==0);
     }

     public boolean isFull()
     {
          return (belakang==ukuran-1);
     }

     public int ukuran()
     {
          return jumItem;
     }

     public void lihat()
     {
          for (int i=0; i<jumItem;i++)
              System.out.print(antrian[i]+" ");
          System.out.println("");
     }
}

class ApliAntrian
{
     public static void main(String[] args)
     {
          Antrian antrian = new Antrian(10);
          antrian.masuk(13);
          antrian.lihat();
          antrian.masuk(32);
          antrian.lihat();
          antrian.masuk(45);
          antrian.lihat();
          antrian.masuk(67);
          antrian.lihat();
          antrian.keluar();
          antrian.lihat();
          antrian.keluar();
          antrian.lihat();
          antrian.masuk(43);
          antrian.lihat();
          antrian.keluar();
          antrian.lihat();
          antrian.masuk(56);
          antrian.lihat();
          antrian.masuk(76);
          antrian.lihat();
          antrian.masuk(85);
          antrian.lihat();
          antrian.masuk(92);
          antrian.lihat();
          while( !antrian.isEmpty() )
          {
              long n = antrian.keluar();
              System.out.print(n);
              System.out.print(" ");
          }
          System.out.println(" ");
     }
}

Struktur data (Tumpukan/Stack)

Stack atau tumpukan adalah struktur data dimana semua penyisipan dan penghapusan data dilakukan pada salah satu ujung yang disebut top (puncak) stack. Stack dapat dibayangkan sebagai tumpukan kardus dimana hanya kardus teratas  yang dapat diperoleh kembali dengan satu langkah. Kardus-kardu yang terdapat dibawah hanya dapat diambil setelah kardus yang berada diatasnya diambil (dikeluarkan). Dengan bentuk yang demikian tumpukan dapat dikatakan sebagai struktur data yang bersifat LIFO (Last In Firs Out). Metode/fungsi yang terpenting pada stack adalah push dan pop.

Contoh program :
Class Tumpukan
{
     private int ukuran;
     private long[] tumpukan;
     private 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 == -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(" ");
     }

}

class ApliStack
{
     public static void main(String[] args)
     {
          Tumpukan stack = new Tumpukan(10);
          stack.push(56);
          stack.baca();
          stack.push(45);
          stack.baca();
          stack.push(67);
          stack.baca();
          stack.push(83);
          while( !stack.isEmpty() )
          {
              long nilai = stack.pop();
              System.out.print(nilai);
              System.out.print(" ");
          }
          System.out.println(" ");
     }
}


Selamat mencoba ^_^

Sumber : Modul Praktikum Struktur Data STMIK AKAKOM Yogyakarta

Struktur data (Sorting dan Searching)

Sorting (pengurutan) dan searching (pencarian) merupakan konsep/algoritma yang sering digunakan. Jika berhubungan dengan jumlah data yang besar, data akan mudah dikelola  jika sudah terurut. Algoritma pengurutan pencarian memuat banyak konsep-konsep dasar pemograman, yaitu:
·         Runtutan/Sequence. Kaidah pemrograman yang menyatakan bahwa perintah-perintah dalam program computer akan dieksekusi menurut urutannya dari atas ke bawah
·         Seleksi/Selection. Perintah-perintah dalam program komputer akan dieksekusi berdasarkan nilai kebenaran boolean tertentu.
·         Perulangan/Loop. Sejumlah perintah dalam  program computer yang akan dieksekusi beberapa kali berdasarkan nilai kebenaran boolean-nya.
Sorting dapat dilakukan dengan dua metode, yatu Ascending dan Descending. Ascending akan melakukan pengurutan dari data yang terkecil ke data yang lebih besar. Contoh : 1, 2, 3, . . . ,10.
Descending akan melakukan pengurutan dari data yang terbesar ke data yang lebih kecil. Contoh: 10, 9, 8, . . . , 1.
  1. Pencarian Linier (Linear search)
Pencarian Linier adalah metode pencarian yang membandingkan data kunci (data yang dicari) dengan seluruh data, mulai dari data pertama.
  1. Pencarian Biner (Binary Search)
Pencarian Biner adalah pencarian terhadap data yang sudah terurut. Data kunci dibandingkan dengan data tengah (data pivot), jika sama berarti pencarian ditemukan. Jika data kunci lebih besar dari data tengah maka pecarian akan dilakukan disebelah kanan data tengah (data diurutkan secara ascending). Jika belum ditemukan maka data pada sisi pencarian akan dibagi dua kembali, dibandingkan lagi, demikian seterusnya sampai data ditemukan/tidak ditemukan.  
  1. Bubble Sort
Algoritma bubble sort akan membandingkan elemen yang saat ini dibaca dengan elemen yang berikutnya. Jika elemen yang saat ini dibaca lebih besar dari elemen berikutnya,maka tukarkan.
  1. Insertion Sort
Pada metode ini pengurutan dilakukan dengan cara membandingkan data ke-i (dimulai dari data ke-2 sampai dengan data terakhir) dengan data berikutnya. Jika ditemukan dat yang lebih kecil maka data tersebut disisipkan ke depan sesuai dengan posisi yang seharusnya.
  1. Selection Sort
Metode ini akan membandingkan elemen yang sekarang dengan elemen beikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen yang lebih kecil dari elemen sekarang, maka dicatat posisinya dan kemudian ditukar.
  1. Quick Sort
Metode Quick Sort adalah membandingkan suatu elemen pivot dengan elemen yang lain dan menyusunnya sedemikian rupa sehingga elemen tersebut terletak disebelah kirinya dan elemen-elemen yang lebih  besar daripada pivot terletak disebelah kanan.

Contoh program :
import java.util.Scanner;

public class BubbleSort{

public void bubbleSort(float larik2[])
{
     for (int i=0;i<larik2.length;i++)
     {
          for (int elemen=0;elemen<larik2.length-1;elemen++)
          {
              if (larik2[elemen]>larik2[elemen+1])
                   tukar(larik2, elemen,elemen+1);
          }
     }
}

public void tukar(float larik3[], int satu, int dua)
{
     float temp;
     temp = larik3[satu];
     larik3[satu] = larik3[dua];
     larik3[dua] = temp;
}

public static void main(String args[]){
     Scanner masuk = new Scanner(System.in);
     BubbleSort lrk = new BubbleSort();
     float nilai[]= new float[5];
     System.out.println("Masukan 5 buat data nilai");
     for (int i = 0; i < 5; i++)
     {
          System.out.print( (i + 1 )+" : ");
          nilai[i]=masuk.nextFloat();
     }
     System.out.println("Data nilai yang dimasukan");
     for (int i = 0; i < 5; i++)
          System.out.println(nilai[i]);
     System.out.println("Data hasil pengurutan    ");
     lrk.bubbleSort(nilai);
     for (int i = 0; i < 5; i++)
          System.out.println(nilai[i]);
}
}

import java.util.Scanner;

public class QuickSort{

public void quickSort(float A[], int L, int R)
{
  int i,j;
  float p;
  p=A[(L+R)/2];
  i=L;
  j=R;
  while (i<=j)
  {
    while (A[i]<p) i++;
    while (A[j]>p) j--;
    if (i<=j)
    {
      tukar(A,i,j);
      i++;
      j--;
    }
  }
  if (L<j) quickSort(A,L,j);
  if (i<R) quickSort(A,i,R);
}

public void tukar(float larik3[], int satu, int dua)
{
     float temp;
     temp = larik3[satu];
     larik3[satu] = larik3[dua];
     larik3[dua] = temp;
}


public static void main(String args[]){
     Scanner masuk = new Scanner(System.in);
     QuickSort lrk = new QuickSort();
     float nilai[]= new float[5];
     System.out.println("Masukan 5 buat data nilai");
     for (int i = 0; i < 5; i++)
     {
          System.out.print( (i + 1 )+" : ");
          nilai[i]=masuk.nextFloat();
     }
     System.out.println("Data nilai yang dimasukan");
     for (int i = 0; i < 5; i++)
          System.out.println(nilai[i]);
     System.out.println("Data hasil pengurutan    ");
     lrk.quickSort(nilai, 0, nilai.length-1);
     for (int i = 0; i < 5; i++)
          System.out.println(nilai[i]);
}
}


import java.util.Scanner;

public class BinerSearch
{

     public int pencarianBiner(int b[], int kunciPencarian, int low, int high)
     {
       int i, middle;
       while (low<=high)
       {
         middle = (low+high)/2;
          if (kunciPencarian==b[middle]) return middle;
         else if (kunciPencarian<b[middle]) high = middle-1;
         else low = middle+1;
       }
       return -1;
     }

     public static void main(String args[])
     {
      Scanner input = new Scanner(System.in);
      BinerSearch biner = new BinerSearch();
      int i, x, hasil;
      boolean ketemu;
      int data[] = {9, 13, 14, 26, 34};
      System.out.print("Masukan Data yang dicari = ");
      x = input.nextInt();
      hasil = biner.pencarianBiner(data, x, 0, data.length-1);
      if (hasil>=0)
        System.out.println("Data tersebut ada pada posisi ke-"
             +(hasil+1));
           else
        System.out.println("Data tidak ketemu !");

     }
}


Selamat mencoba ^_^

Sumber : Modul Praktikum Struktur data STMIK AKAKOM Yogyakarta 

Struktur data (Tipe Data)

Setiap bahasa pemrograman memiliki tipe data yang spesifik. Tipe data akan digunakan untuk mendeklarasikan variable yang digunakan. Tipe data digunakan untuk menentukan bentuk data yag dapat ditampung oleh sebuah variabel .
Java memiliki delapan tipe data primitive, meliputi 4 tipe bilangan bulat, 2 tipe untuk bilangan titik mengambang dan sisanya untuk karakter dan boolean

a. Tipe  Bilangan Bulat
Ada empat macam tipe bilangan bulat, dimna masing-masing memiliki jangkauan nilai yang berbeda
Tipe
Ukuran
Jangkauan Nilai
byte
short
int
long
8 bit
16 bit
32 bit
64 bit
-128 s/d 127
-32.768 s/d 32.767
-2.147.483.648 s/d 2.147.483.647
-9.223.372.036.854.775.808 s/d
9.223.372.036.854.775.807
Bilangan integer biasanya menggunakan int, dan bukan byte, short maupun long. Bilangan integer juga mengenal nilai positif dan negatif ( signed number ). Tipe data byte dan short hanya digunakan pada aplikasi khusus yang memperhatikan penggunaan memori. Sedangkan long jarang digunakan karena jarang memerlukan bilangan sebesar kapasitas long. Semua bilangan bulat dalam Java secara default dianggap sebagai tipe int.. Sedangkan bilangan yang ingin dikategorikan sebagai long harus diakhiri dengan huruf  L. Misalnya : 18102006L.

b. Tipe Bilangan Titik Mengambang
Ada dua tipe data yang berkaitan dengan bilangantitik mengambang.
Tipe
Ukuran
Jangkauan Nilai
float
double
32 bit, presisi 6-7 digit
64 bit, presisis 14-15 bit
-3.4E38 s/d +3.4E38
-1.7E308 s/d +1.7E308
Semua bilangan pecahan atau desimal dalam Java tanpa diakhiri huruf f akan dianggap sebagai double. Sedangkan bilangan yang ingin dikategorikan sebagai float harus diakhiri dengan huruf F. Misalnya : 4.22 F atau 2.314f.

c. Tipe Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena String bukan merupakan tipe data primitif,  tetapi sudah merupakan sebuah objek. Tipe char mengikuti aturan unicode, sehingga dapat menggunakan kode /u kemudian diikuti bilangan dari 0 sampai 65535, tetapi yang biasa digunakan adalah bilangan heksadesimal dari 0000 sampai FFFF. Misalnya : ‘\u123’
Selain karakter biasa, juga terdapat karakter khusus yang didefinisikan dengan cara mengawalinya menggunakan tanda \ seperti pada tabel berikut :
Kode
Keterangan
\b
\t
\n
\r
\f
\’
\’’
\ddd
\xdd
Backspace
Tab
Linefeed
Carriage return
Formfeed
Petik tunggal
Petik ganda
Octal (dd= 0 s/d 377)
Heksadesimal (dd=0 s/d FF atau ff
d. Tipe Boolean
Dalam Java dikenal tipe data boolean yang terdiri dari dua nilaisaja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program.



Cobalah beberapa program dibawah ini
//Modul_1 ContohProgram_1

public class tipeData {

public static void main(String[] args) {

// Tipe data primitif
long data1 = 546767226531L;
int data2 = 2235641;
short data3 = 714;
byte data4 = 34;
float data6 = 1.733F; // tipe data pecahan
double data5 = 4.967; // tipe data pecahan
char data7 = 'C';
boolean data8 = true;
System.out.println("Nilai Long : "+ data1);
System.out.println("Nilai Int : "+ data2);
System.out.println("Nilai Short : "+ data3);
System.out.println("Nilai Byte : "+ data4);
System.out.println("Nilai Double : "+ data5);
System.out.println("Nilai Float : "+ data6);
System.out.println("Nilai Char : "+ data7);
System.out.println("Nilai Boolean : "+ data8);
}
}

//Modul_1 ContohProgram_2
public class contohString{
     public static void main(String[] args){
     System.out.println("STMIK\nAkakom");
     System.out.println("STMIK\tAkakom");
     System.out.println("\"Halo\"");
     }
}

//Modul_1 ContohProgram3
public class pembagian{
     public static void main(String[] args){
     int a=5,b=2,c;
     c=a/b;
     System.out.println("Hasil pembagian = "+c);

     }
}

public class Variabel {
static int a;
    public static void main(String[] args) {
    int x;
    x = 10;
    a = 2;
    System.out.println("Nilai a : " + a);
    {
     int y;
     y = 5;
     System.out.println("Nilai x : " + x);
     System.out.println("Nilai a : " + a);
     { int z;
       z = 20;
       System.out.println("Nilai x + y + z + a : "                         + (x + y + z + a));
      }
     System.out.println("Nilai Z : " + Z);
     System.out.println("Nilai y : " + y);
   }
   System.out.println("Nilai Z : " + Z);
   System.out.println("Nilai y : " + y);
   System.out.println("Nilai x : " + x);
  }
}



Selamat mencoba ^_^


Sumber : Modul praktikum struktur data STMIK AKAKOM Yogyakarta