Rabu, 08 Januari 2014

STRUKTUR DATA

Struktur data Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.Sedangkan Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
Konstanta digunakan untuk menyatakan nilai tetap sedangkan variable digunakan dalam program untuk menyatakan nilai yang dapat berubah-ubah selang eksekusi berlangsung.
Ada empat istilah data, yaitu:
1.      Tipe data adalah jenis atau macam data di dalam suatu variable dalam bahasa pemrograman.
2.      Objek data mengacu kumpulan elemen, D (domain).
3.      Representasi data : Suatu mapping dari struktur data ‘d’ ke suatu set ke struktur data ‘e’ (d===e) misal bolean di representasikan dalam 0 dan 1.
4.      Struktur data biasa dipakai untuk mengelompokan beberapa  informasi yang terkait menjadi sebuah kesatuan.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data.


Secara garis besar type data dapat dikategorikan menjadi:
Type data sederhana.
*       Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.
*       Type data sederhana majemuk, misalnyaString
Struktur Data, meliputi:
*       Struktur data sederhana, misalnya array dan record.
*       Struktur data majemuk, yang terdiri dari:
a)      Linier : Stack, Queue, sertaList dan Multilist
b)      Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang standar yang biasanya digunakan dibidang informatika adalah:
Ø   List linier (Linked List) dan variasinya
Ø   Multilist
Ø   Stack (Tumpukan)
Ø   Queue (Antrian)
Ø   Tree ( Pohon)
Ø   Graph ( Graf )
B.   PEMBUATAN STRUKTUR DATA
Untuk membuat menjadi struktur data, kita harus melakukan dulu aktivitas terhadap objek data, yaitu :
v  Mendeskkripsikan kumpulan operasi sah yang diterapkan ke elemen-elemen objek data.
v  Menunjukan mekanisme kerja operasi-operasi.
Objek data integer ditambah operasi (+ , - , * , / , mod ,cell , floor , < , >) dan operasi-operasi lain yang memanipuasi objek data integer menyatakan struktur data.
Struktur data = Objek data + { Operasi manipulasi }.
Tahap pembuatan struktur data adalah :
Ø   Tahap pertama      : Spesifikasi
Pendeskripsian / spesifikasi struktur data menyatakan apa yang dapat dilakukan struktur data, bukan cara penerapannya.

Spesifikasi dapat dilakukan dengan dua cara, yaitu :
·         Spesifikasi secara formal
·         Spesifikasi secara informal
Ø  Tahap kedua : Implementasi
Implementasi menyatakan cara penerapan struktur data dengan struktur data yang telah ada.Implementasi struktur data adalah proses pendefinisian tipe data abstrak sehingga semua operasi dapat dieksekusi computer. Implementasi struktur penyinpanan item-item data serta algoritma-algoritma untuk implementasi operasi-operasi sehingga menjamin terpenuhinya karakteristik struktur data, relasi item-item data atau invariant pada struktur data itu.
Ø  Tahap ketiga : Pemrograman
Pemrograman terstruktur adalah penerjemahan menjadi pernyataan di bahasa pemrograman tertentu. Prosesnya terdiri dari :
·         Deklarasi yang mendefinisikan objek-objek data dan hubungannya…
·         Pembuatan prosedur / rutin untuk operasi-operasi dasar yang menjaga invariant pada struktur data itu .
Sesuai dengan relasi yang didefinisikan di spesifikasi perancangan harus memilih tipe-tipe data yang telah ada untuk merepresentasikan struktur data.
Struktur data di bangun menggunakan fasilitas pembentukan atau pembuatan struktur data yang disediakan bahasa seperti array, record, dan sebagainya atau yang telah di buat seperti stack, queue, atau himpunan menggunakan linked list.
Pembuatan struktur data adalah pembentukan tipe data lengkap yang mempunyai empat property berikut :
1.      Nama         : Identifier tipe data
2.      Domain     : Domain / himpunan semesta nilai di tipe data
3.      Konstanta (penyebutan anggota-anggotanya) : Cara penyebutan anggota-anggota tipe data
4.      Operasi-operasi terhadap tipe data itu (operator) : Daftar operasi terhadap anggota tipe data sehingga kelakuan objek data sesuai spesifikasi.



STACK
STACK adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu.


Operasi-operasi pada Stack
Push : digunakan untuk menambah item pada stack pada tumpukan paling atas

Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas

Clear : digunakan untuk mengosongkan stack

IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong

IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh


Simulasi


 
 
Contoh Program Sederhana Menggunakan Bahasa C++ 

#include <iostream.h>
#include <conio.h>
#include <string.h>
struct
{

          char data [15][100], max [15];
          int i,j;
}
stack;

void isi () // push untuk memasukan data
{
          stack.i++;
          cout<<"masukan data: ";
          cin>>stack.max;
          strcpy (stack.data[stack.i],stack.max);
}
void buang () // pop untuk mengambil data
{
          if (stack.i>0)
          {
                cout<<"data yang terambil: "<<stack.data[stack.i]<<endl;
                     stack.i--; stack.j--;
          }
          else
                cout<<"tak ada data yang terambil"<<endl;
}
void muncul (int n)//print untuk menampilkan data
{
          if (stack.j>0)
          {
                for (int e=n; e>=1; e--)
                {
                     cout<<stack.data[e]<<endl;
                }
          }
          else
          cout<<"tak ada data tersimpan"<<endl;
}
void hapus () // clear untuk menghapus data
{
          stack.j=0; stack.i=0;
}

void main ()
{
          int n,plh;
          awal:
          clrscr();
          cout<<"contoh program stack (tumpukan)\n\n";
          cout<<"maksimal tumpukan data: "; cin>>n;
          stack.data[n];
          stack.i=0;
          stack.j=0;
          pilihan:
          clrscr();
          cout<<"\n1. push \n2. pop \n3. print \n4. clear \n5. quit \n";
          cout<<"\npilih :"; cin>>plh;
          cout<<"\n";

          if (plh==1)
                {
                     if (stack.j<n)
                     {
                          stack.j++; isi();
                     }
                     else
                     {
                          cout<<"tumpukan penuh"<<endl; getch();
                     }
                     goto pilihan;
          }
          else if (plh==2)
          {
                     buang(); getch(); goto pilihan;
          }
          else if (plh==3)
          {
                     muncul (stack.i); getch(); goto pilihan;
          }
          else if (plh==4)
          {
                     hapus();  getch(); goto pilihan;
          }
          else if (plh==5)
          {
                     getch(); goto awal;
          }
          else
          {
                     cout<<"input yang anda masukan salah !!!";
                     getch(); goto awal;
          }
}


Contoh Program Sederhana Menggunakkan Java

public class Tumpukan  {
    private jenis[] data= (jenis[])new Object[10];
    private int posisi=0;
    public void push(jenis isi){
        data[posisi++] = isi;
    }
    public jenis pop(){
        return data[--posisi];
    }
    public jenis peek(){
        return data[posisi-1];
    }
    public boolean isEmpty(){
        return(posisi==0);
    }
    public boolean isFull(){
        return(posisi==data.length);
    }
    public void clear(){
        posisi=0;
    }
}



Queue
 
Queue/antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung penyisipan biasa disebutrear/tail, sedang ujung penghapusa disebut front/head. Fenomena yang muncul adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil. Queue berdisiplin FIFO (First In, First Out). Queue merupakan kasus khusus ordered list. Dengan karakteristik terbatas itu maka kita dapat melakukan optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.
Misalnya Queue Q= (a1,a2,a3…,an), maka
1.Elemen a1 adalah elemen paling depan
2.Elemen ai adalah diatas elemen ai-1, di mana 1<i<n.
3.Elemen an adalah elemen paling belakang
Head (atau front) menunjuk ke awal antrian Q (atau elemen terdepan), sedangkan tail ( rear) menunjuk akhir antrian Q (atau elemen paling belakang).Disiplin FIFO pada Queue berimplikasi jika elemen A, B, C, D, E dimasukkan ke Queue, maka penghapusan/pengambilan elemen akan terjadi dengan urutan A, B, C, D, E.

2.2 Karakteristik Queue
Karakteristik penting antrian sebagai berikut :
1.Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
2.Head/front (elemen terdepan dari antrian ).
3.Tail/rear (elemen terakhir dari antrian ).
4.Jumlah elemen pada antrian (count).
5.Status/kondisi antrian.
Kondisi antrian yang menjadi perhatian adalah :
  • Penuh
Bila elemen di antrian  mencapai  kapasitas  maksimum  antrian. Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan Overflow.
  • Kosong
Bila tidak ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.

2.3 Operasi-Operasi Pokok di Queue
  • Operasi-operasi pokok antrian sebagai berikut :
1.createQueue (Q), atau constructor menciptakan antrian kosong Q.
2.addQueue (Q, X) memasukkan elemen X sebagai elemen akhir di Q.
3.removeQueue (Q, X)atau mengambil elemen depan di antrian Q ke elemenX.

  • Operasi-operasi pengaksesan tambahan yang dapat dilakukan adalah :
            1.headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa menghapus.
2.tailQueue (Q), mengirim elemen tanpa menghapusnya.

  • Operasi-0perasi Query tambahan yang dapat dilakukan adalah :
1.isEmptyQueue (Q), mengirim apakah antrian Q adalah kosong.
2.isFullQueue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas antrian Q didefinisikan.
3.isOverflowQueue (Q), mengirim apakah antrian Q telah mengalamioverflow.
4.isUnderflowQueue (Q), mengirim apakah antrian Q mengalamiunderflow.
                 
  • Operasi-operasi terhadap seluruh antrian Q antara lain adalah :
1.sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
2.isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana untuk menyatakan apa pun mengenai implementasinya.

2.4. Pengunaan Queue
Meski Queue sangat sederhana, namun Queue merupakan kakas dasar penyelesaian masalah-masalah besar. penggunaan Queue yang utama adalah untuk simulasi fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data.
Penggunaan Queue dapat dicontohkan seperti dibawah ini :
1.Simulasi antrian di dunia nyata, antara lain :
  • Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop.
  • Antrian mobil di depan gerbang jalan tol.
  • Antrian kendaraan di jalanan umum.
2. System produksi
  • Barisan bahan atau komponen yang akan diproses suatu mesin.
  • Barisan bahan atau komponen yang akan diproses suatu manusia



Contoh Program Sederhana Menggunakan Bahasa C++

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{
  int cek=0, data[8], x, hapus;
  char pil;
  do {
      clrscr();
      cout<<”    Ujian Praktikum Struktur Data Queue”<<endl;
      cout<<”       ISI NAMA ANDA”<<endl;
      cout<<”      ISI NAMA KAMPUS ANDA”<<endl;
      cout<<endl;
      printf(“d. Masukan Data Antrian\n”);
      printf(“e. Hapus Data Antrian\n”);
      printf(“n. Lihat Data Antrian\n”);
      printf(“y. Exit Program\n”);
      cout<<endl;
      printf(“Ketikan Huruf Dari Salah Satu Pilihan Diatas…  “);
      pil=getche();
      cout<<endl;

  if(pil!=’d’ && pil !=’e’ && pil !=’n’ && pil!=’y’ )
      printf(“\n\nSalah Ketik, Ulangi Lagi…\n”);
      else
      {
    if(pil==’d')   //PUSH
    {
      if(cek==8)
        printf(“\nAntrian Penuh\n”);
        else
        {
          printf(“\nMasukkan angka–>”);scanf(“%i”,&x);
          data[cek]=x;
          cek++;
        }}
        else
        {
          if(pil==’e')        //POP
          {
        if(cek==0)
          printf(“\nMaaf Tidak Antrian Untuk Dihapus \n\n”);
          else
          {
            hapus=data[0];
            for(int v=0;v<cek;v++)
            data[v]=data[v+1];
            data[cek-1]=NULL;
            cek–;
            cout<<endl;
            printf(“Yakin Anda Ingin Data Ini DiHapus ???  “);
            cout<<endl;
            printf(“\nData dgn nilai=%i akan terhapus. [Tekan Enter]“,hapus);
          }
          getch();
          }
        else
        {
          if(pil==’n')   //Mengecek Data
          {
            if(cek==0)
            printf(“\nMaaf Tidak Ada Antrian Untuk Ditampilkan.\n\n”);

            else
            {
              printf(“\n”);
              for(int z=0;z<cek;z++)
              {
            printf(” { “);
            printf(“%i”,data[z]);
            printf(” } “);
              }

            }
            getch();
            }
          }
        }
          }

    }while(pil!=’y');
    cout<<endl;
    cout<<endl;
         printf(“Yakin anda ingin keluar…??? {{{Tekan Enter Cak}}} “);
      pil=getche();
}m



Contoh Program Sederhana Menggunakan Bahasa Java

class LingkaranAntrian{
    private jenis[] data= (jenis[])new Object[10];
    private int ekor=0;
    private int kepala=0;
    private int jumlah=0;
    private jenis temp;
    public void enqueue(jenis isi){
        data[ekor]=isi;
        jumlah++;
        if(ekor==data.length){
            ekor=0;
        }else{
            ekor++;
        }
    }
    public jenis dequeue(){
        temp=data[kepala];
        jumlah--;
        if(kepala==data.length-1){
            kepala=0;
        }else{
            kepala++;
        }
        return temp;
    }
   
    public jenis peek(){
        return data[kepala];
    }
    public boolean isEmpty(){
        return(jumlah==0);
    }
    public boolean isFull(){
        return(jumlah==data.length);
    }
    public void clear(){
        kepala=0;
        ekor=0;
        jumlah=0;
    }
}




Sorting

Sorting bisa didefinisikan sebagai suatu pengurutan data yang sebelumnya disusun secara acak, sehingga menjadi tersusun secara teratur menurut aturan tertentu. sorting yang kita terapkan menggunakan tipe data array agar pemahaman serta pengimplementasiannya lebih mudah                                                                                 

Pada umumnya metode yang digunakan untuk sorting adalah :

1. Buble\Exchange sort
2. Selection sort
3. Shell Sort
4. Quick sort

Bubble/Exchange sort

Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergera/berpindah ke posisi yang tepat , seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. jika elemen sekarang  lebih besar dari elemen berikutnya maka elemen tersebut ditukar (untuk pengurutan ascending) jika elemen sekarang lebih kecil daripada elemen berikutnya, maka kedua elemen  tersebut ditukar (untuk pengurutan descending). algoritma ini seolanh olah menggeser satu per satu elemen dari kenan ke kiri atau kiri ke kanan. tergantung jenis pengurutannya. Ketika suatu proses telah selesai, maka bubble sort akan mengalami proses, demikian seterusnya. Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan,serta tercapai pengurutan yang telah diinginkan

Contoh pengurutan data yang dilakukan dengan metode bubble sort sebagai berikut :

Proses 1 :
22 10 15 3 8 2
22 10 15 3 2 8
22 10 15 2 3 8
22 10 2 15 3 8
22 10 2 15 3 8
22 2 10 15 3 8
2 22 10 15 3 8
Pengecekan dimulai dari data yang paling akhir, kemudian dibandingkan dengan data di depannya,jika data didepannya lebih besar maka akan di tukar.
Proses 2:
2 22 10 15 3 8
2 22 10 15 3 8
2 22 10 3 15 8
2 22 3 10 15 8
2 3 22 10 15 8

pengecekan dilakukan sampai dengan data ke-2 karena data pertama pasti sudah paling kecil.

Proses 3 :
2 3 22 10 15 8
2 3 22 10 8 15
2 3 22 8 10 15
2 3 8 22 10 15

Proses 4 :
2 3 8 22 10 15
2 3 8 22 15 10
2 3 8 15 22 10

Proses 5 :
2 3 8 15 22 10
2 3 8 15 10 22

Pengurutan berhenti.

Contoh Program :

#include
#include
#include
bubble_acak()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
srand(time(NULL));
for (i=0; i
arr[i] = rand() %1000;
//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
getch();
}
bubble_manual()
{
clrscr();
int arr[1000];
int x, i; //untuk array
int s, t, temp; //untuk sorting
//input jumlah data yang diproses
cout<<"angka yang akan dimasukkan : "; cin>>x;
//input nilai masing" array
for (i=0; i
{
cout<<"masukkan angka ke-"<
cin>>arr[i];
}
//output nilai" array
clrscr();
cout<<"====== array ======"<
cout<<"angka angkanya :"<
for (i=0; i
cout<
//sorting
cout<
cout<<"====== sorting ======"<
s = 0;
for (s=0; s
{
for (t = s+1; t
{
if (arr[s]>arr[t])
{
temp = arr[s];
arr[s] = arr[t];
arr[t] = temp;
}
}
}
cout<<"setelah sorting :"<
for (i=0; i
cout<
//mission complete
getch();
}
main ()
{
int pilih;
char ulang;
do
{
clrscr ();
cout<<"tekan 1 : bilangan yang disorting dimasukan secara acak"<
cout<<"tekan 2 : bilangan yang disorting dimasukan secara manual"<
cout<<"masukkan pilihan : "; cin>>pilih;
switch (pilih)
{
case 1:
bubble_acak();
break;
case 2:
bubble_manual();
break;
default:
clrscr();
cout<<"\"maaf\""<
cout<<"\"pilihan yang dimasukkan salah\"";
break;
}
cout< "; cin>>ulang;
}

Dalam Procedure Pascal :
Procedure Bubble(Var Temp : Data; JmlData : Integer);
Var I,J : Integer;
Begin
     For I:=2 To JmlData Do
            For J:=JmlData DownTo I Do
                     If Temp[J] < Temp[J-1] Then           {Untuk Descending
>}
                      SWAP(Temp[J], Temp[J-1]);
End;


Dalam Procedure SWAP :
Var Temp : Char;
 Begin
           Temp := A;
           A := B;
           B := Temp;
End;



Selection Sort

Cara kerja metode ini didasarkan pada pencarian elemen dengan nilai terkecil. kemudian dilakukan penukaran dengan elemen ke-I. Secara singkat metode ini bisa dijelaskan sebagai berikut. Pada langkah pertama, dicari data yang terkecil dari data pertama sampai terakhir. Kemudian data tersebut kita tukar dari data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding dengan data lain. Pada langkah kedua, data terkecil kita cari mulai dari data kedua sampai data terakhir. Data terkecil yang kita peroleh kita tukar dengan data kedua. Demikian seterusnya sampai seluruh data terurut.


Contoh dari proses sorting dengan menggunakan metode Selection sort : 

Dalam Procedure Pascal :
Procedure Selection(Var Temp : Data; JmlData : Integer); 
Var I,J, Lok : Integer; 
      Begin 
            For I:=1 To JmlData-1 Do 
                Begin 
                     Lok:=I; 
                     For J:=I+1 To JmlData Do 
                     If Temp[Lok] > Temp[J] Then Lok:=J; 
                     SWAP(Temp[I], Temp[Lok]); 
                 End; 
      End; 

Shell Sort

Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen  yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudain elemen kedua kita bandingkan dengan eleen lain dengan jarak yang sama seperti jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.
Contoh dari proses Sorting dengan menggunakan metode Shell Sort :
Dalam Procedure Pascal :
Procedure Shell(Var Temp : Data; JmlData : Integer); 
Var I,J, Jarak : Integer; 
        Begin 
             Jarak := JmlData Div 2; 
              While Jarak > 0 Do 
                    Begin 
                        For I:=1 To JmlData-Jarak Do 
                             Begin 
                                 J := I + Jarak; 
                                 If Temp[I] > Temp[J] Then  
                                 SWAP(Temp[I], Temp[Lok]); 
                             End; 
                             Jarak := Jarak Div 2; 
                    End; 
          End;

Quick Sort

Metode ini dikembangkan oleh CAR Hoare. Secara garis besar metode ini dijelaskan sebagai berikut. Misalnya kita ingin mengurutkan data A yang membunyai N elemen. Kita pilih sembarang elemen dari data tersebut, biasanya elemen pertama, misalnya X. Kemudain semua elemen tersebut disusun dengan menempatkan X pada posisi J sedemikian rupa shingga elemen ke 1 sampai ke J-1 mempuyai nilai lebih besar dari X. Sampai berikutnya diulang untuk  setiap sub data.
Contoh dari proses Soring dengan menggunakan metode Quick Sort

Dalam Procedure Pascal :
Procedure Quick(Var Temp : Data; Awal, Akhir : Integer); 
      Var I,J : Integer; 
       Procedure ATUR; 
                   Begin 
                   I:=Awal +1; 
                   J:= Akhir; 
                    While Temp[I] < Temp[Awal] Do Inc(I);
                   While Temp[J] > Temp[Awal] Do Dec(J); 
                   While I < J Do 
                         Begin 
                                SWAP(Temp[I], Temp[J]); 
                                While Temp[I] < Temp[Awal] Do Inc(I); 
                                While Temp[J] > Temp[Awal] Do Dec(J); 
                         End; 
                   SWAP(Temp[Awal], Temp[J]); 
End; 
                  Begin 
                      If Awal < Akhir Then 
                             Begin 
                                  ATUR; 
                                  Quick(Temp, Awal, J-1); 
                                  Quick(Temp,J+1,Akhir); 
                             End; 
End;
 
 
 
 
 
 
 
 
Sumber :
http://kael9001.blogspot.com/2013/02/bubble-sort.html
http://khaerulwaris.blogspot.com/2013/10/contoh-source-code-program-stack-dan.html
http://strukturdata18.blogspot.com/2013/05/makalah-struktur-dar.html
 

 








Rabu, 19 Desember 2012

Sejarah Komputer

Pengertian komputer

apa sih komputer itu…?? apakah perangkat yang ada dikantor-kantor yang terdiri dari kotak mirip tivi dan kubus panjang itu yang disebut komputer..?? apakah yang banyak di jinjing-jinjing di mall-mall itu yang disebut komputer…?
komputer adalah alat yang digunakan untuk memproses data menurut perintah yang telah di rumuskan, alat pengolah informasi, jadi apapun alat elektronik yang berfungsi sebagai alat pengolah informasi dapat disebut sebagai komputer (ya termasuk kalkulator), zaman sekarang keberadaan komputer semakin canggih, semakin tipis dan semakin praktis serta mudah dibawa kemana-mana, tapi sebelum melewati era seperti sekarang ini, sejarah komputer melewati 5 Generasi yaitu :

Sejarah komputer – Generasi Komputer Pertama

generasi pertama sejarah perkembangan komputer dilandasi oleh perang dunia ke dua, negara-negara yang terlibat dalam perang dunia kedua berlomba-lomba untuk mengembangkan dan menciptakan sistem komputer yang bisa mereka manfaatkan untuk menunjang sistem pertahanan dan kemampuan tempur
pada tahun 1941 seorang insinyur jerman yang bernama Konrad Zuse membangun sebuah komputer Z3 yang berfungsi untuk mendesain pesawat terbang dan peluru kendali
sejarah komputer Zuse Z3
Zuse Z3 Machine 1936
tahun 1943 inggris berhasil menciptakan komputer pemecah kode rahasia (dekripter) yang dibuat oleh jerman, komputer ini diberinama colossus, komputer ini fungsinya hanya sebagai pemecah kode rahasia dan tidak bisa digunakan untuk yang lain
sejarah perkembangan komputer colossus-computer
colossus computer
pihak Amerika tidak mau ketinggalan,  seorang insinyur havard yang bernama Howard H. Aiken berhasil membuat kalkulator yang diperuntukan bagi US navy (satuan khusus tentara amerika), komputer ini diberi nama MARK I , fungsi utamanya sebagai kalkulator yang dapat menyelesaikan perhitungan aritmatika dasar dan persamaan yang kompleks
sejarah komputer - mark 1
penampakan komputer MARK I
perkembangan komputer lain pada generasi ini adalah ENIAC ( Electronic Numerical Integrator and Computer) yang tercipta atas kerjasama antara amerika serikat dan University of Pennsylvania, ENIAC diciptakan oleh John Presper Eckert dan John W. Mauchly, ENIAC merupakan komputer serba guna yang memiliki kecepatan hingga 1000 kali lebih cepat dibanding MARK I

sejarah komputer eniac
komputer eniac
pertengahan 1940an John von Neumann mendesain Electronic Discrete Variable Automatic Computer (EDVAC), pada tahap ini komputer sudah menggunakan memori baik untuk program maupun data, sehingga komputer dapat melakukan proses pause dan resume
sejarah komputer EDVAC
komputer EDVAC
tahun 1951 diciptakan UNIVAC I (Universal Automatic Computer I) oleh Remington Rand, sebuah komputer komersial yang pertama, namun UNIVAC I masih menggunakan arsitektur dari EDVAC
komputer univac
komputer univac
pada generasi pertama ini komputer masih memiliki fungsi yang terbatas dan hanya berfungsi untuk satu tugas saja, komputer khusus untuk pekerjaan seperti menghitung, mendesain dlsb dilakukan oleh masing-masing komputer (komputer untuk menghitung sendiri, untuk mendesain sendiri)  masing-masing mesin memiliki bahasa mesinnya sendiri sendiri, jadi nggak multi fungsi seperti komputer jaman sekarang ini,
ukuran komputer pada generasi pertama ini juga berukurang raksasa hal ini diakibatkan oleh penggunaan tube vacum dan silinder magnetik untuk menyimpan data

Sejarah Komputer – Generasi Komputer ke Dua

generasi kedua ditandai dengan ukuran komputer yang semakin mengecil, hal ini dikarenakan adanya penemuan transistor yang menggantikan tube vacum, transistor sendiri mulai ramai diterapkan pada komputer komputer di tahun 1956.
perkembangan lain pada generasi ke dua ini adalah penemuan memori yang menggunakan inti magnetik, dimana komputer bekerja lebih cepat, hemat energi dan lebih handal, mesin pertama yang menganut teknologi baru pada masanya ini adalah superkomputer, IBM memproduksi superkomputer yang diberi nama Stretch dan  Sperry-Rand membuat komputer yang bernama LARC, walaupun pada masanya jenis komputer ini sangat canggih, namun tidak diproduksi masal dan tidak di pasarkan untuk bisnis karena harganya yang sangat mahal dan sangat rumit, pada tahap ini komputer sudah menggunakan bahasa assembly.

sejarah komputer IBM Stretch
komputer IBM Stretch
sejarah komputer LARC
komputer LARC
baru pada tahun 1960 komputer generasi kedua mulai di jual ke pasar dan banyak digunakan oleh kalangan bisnis, universitas maupun pemerintahan, pada masa ini komputer sudah sepenuhnya menggunakan transistor dan memiliki komponen-komponen modern seperti printer, disket, memori, sistem operasi dan program
pada tahun 1401 komputer di terima luas oleh kalangan industri dan pada tahun 1965 perusahan-perusahan besar sudah menggunakan komputer generasi kedua untuk memproses informasi keuangan
pada generasi ini beberapa bahasa pemrograman mulai bermunculan , bahasa pemrograman yang umum digunakan pada saat itu adalah Common Business-Oriented Language (COBOL) dan Formula Translator (FORTAN), bahasa pemrograman ini sangat membantu manusia karena mengganti kode mesin yang rumit menjadi kata-kata, kalimat dan formula matematika yang lebih dipahami oleh manusia.
pada masa ini berbagai karir baru mulai bermunculan seperti analis dan programer, indrustri perangkat lunak juga banyak bermunculan pada masa ini.

Sejarah Komputer – Generasi Komputer ke Tiga

transistor memang jauh lebih unggul dari tube vacum, namun transistor ternyata menimbulkan panas yang cukup besar, sehingga berpotensi untuk merusak komponen komputer yang penting, untuk mengatasi masalah ini digunakanlah batu kuarsa  (quartz rock), hingga pada tahun 1958 Jack Kilby, seorang insinyur di Texas Instrument, mengembangkan sirkuit terintegrasi (IC : integrated circuit).
jack kilby - sejarah komputer
jack kilby dikelilingi komputer generasi ke 3
IC terbuat dari pasir kuarsa yang didalamnya terdapat 3 komponen elektronik yang dikombinasikan, hingga kemudian ilmuwan berhasil memasukan lebih banyak lagi komponen kedalam sebuah chip yang disebut semikonduktor, hasilnya bisa kita tebak, ukuran komputer menjadi semakin kecil karena komponennya dipadatkan dalam sebuah chip IC.
pada tahap ini komputer sudah menggunakan sistem operasi yang memiliki kemampuan untuk menjalankan beberapa program secara serentak, dengna program utama yang mengontrol penggunaan memori komputer

Sejarah Komputer – Generasi Komputer ke Empat

setelah IC ditemukan, perkembangan komputer semakin pesat dan jelas, semakin banyak komponen yang bisa dimasukan kedalam chip hingga Pada tahun 1980-an, Very Large Scale Integration (VLSI) dapat memasukan ribuan komponen dalam sebuah chip tunggal
jumlah ribuan tersebut meningkat menjadi jutaan, jutaan komponen berhasil dimasukan kedalam sebuah chip tunggal, kemampuan tersebut berdampak pada semakin kecilnya ukuran komputer dan semakin murah harganya.
pada tahun 1971 chip INTEL 4004 membawa kemajuan besar dalam dunia IC, intel berhasil memasukan semua komponen dalam sebuah komputer (central processing unit, memori, dan kendali input/output) kedalam sebuah chip tunggal yang sangat kecil, jika sebelumnya IC digunakan untuk mengerjakan pekerjaan  tertentu saja maka pada masa ini mikroprosesor dapat diproduksi dan di program untuk menjalankan seluruh kebutuhan yang diinginkan.
sejarah komputer intel 4004
chip intel 4004
dengan perkembangan ini komputer bukan lagi miliki perusahan-perusahaan besar, masyarakat umum seperti kita-kita ini bisa menikmati komputer, pada tahun 1970an komputer mulai dipasarkan ke masyarakat umum, komputer yang dipasarkan ini dijuluki minikomputer, dijual sudah termasuk sistem operasi dan perangkat lunak yang mudah digunakan oleh masyarakat awam, perangkat lunak yang paling populer pada masa itu adalah program word processing dan spreadsheet
pada awal 1980an komputer sudah mulai digunakan untuk kebutuhan gaming, atari 2600 sangat menarik konsumen pada saat itu.
sejarah komputer atari-2600
atari-2600
pada tahun 1981 IBM memperkenalkan penggunaan Personal Computer (PC) untuk pengguna rumahan, kantor dan sekolah, ternyata langkah ini disambut sangat positif oleh pasar, terbukti dengan terjualnya 2 juta unit pada tahun 1981 menjadi 5,5 juta unit pada tahun 1982. Sepuluh tahun kemudian, 65 juta PC digunakan. komputer pun terus melanjutkan evolusinya, dari yang semula diatas meja, menjadi bisa dimasukan ke dalam tas (laptop) bahkan ada yang bisa digengam (palmtop).
sejarah komputer IBM 1981
komputer IBM tahun 1981
IBM bersaing keras dengan Apple machintos, machintos menjadi populer karena memperkenalkan sistem operasi berbasis grafis (GUI) sedangkan lawannya masih berbasis text, Macintosh juga memopulerkan penggunaan piranti mouse.
perkembangan komputer
machintos generasi pertama
Pada masa sekarang, kita mengenal perjalanan IBM compatible dengan pemakaian CPU: IBM PC/486, Pentium, Pentium II, Pentium III, Pentium IV (Serial dari CPU buatan Intel). Juga kita kenal AMD k6, Athlon, dsb. Ini semua masuk dalam golongan komputer generasi keempat

Sejarah Komputer – Generasi Komputer ke Lima

generasi ini lah yang akan kita lalui, belum ada proyek nyata untuk komputer generasi ke lima, karena sejauh ini masih berupa konsep dan jargon yang belum di kembangkan lebih jauh, konsep komputer generasi ke lima adalah adanya kecerdasan buatan sehingga komputer memiliki nalar seperti manusia, dapat belajar dari pengalamannya sendiri dan menggunakan masukan visual
perkembangan komputer
ilustrasi
walaupun masih konsep namun beberapa fungsi tersebut sudah mulai terlihat gambarannya walaupun masih kasar , beberapa komputer saat ini dapat menerima perintah suara dari manusia dan mampu meniru nalar manusia, menterjemahkan bahasa asing dlsb, agaknya komputer generasi ke lima ini ingin “memanusiakan” komputer, bukan tidak mungkin namun butuh waktu dan perjuangan ekstra keras untuk mewujudkannya, mengingat manusia bukan sekedar hitungan dan logika , manusia itu rumit..!!
Jepang adalah negara yang terkenal dalam sosialisasi jargon dan proyek komputer generasi kelima. Lembaga ICOT (Institute for new Computer Technology) juga dibentuk untuk merealisasikannya. Banyak kabar yang menyatakan bahwa proyek ini telah gagal, namun beberapa informasi lain bahwa keberhasilan proyek komputer generasi kelima ini akan membawa perubahan baru paradigma komputerisasi di dunia.