Sabtu, 07 November 2015

STRUKTUR DATA

NAMA:CECEP AGUSM
KLS:3E
NAMA MATA KULIAH:STRUKTUR DATA
NAMA JURUSAN:TEKHNIK INFORMATIKA
NAMA DOSEN:ALI KHUMAIDI S.KOM


  1. apa itu struktur data??
Dalam istilah bahasa komputer "STRUKTUR DATA ADALAH", sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data didalam media penyimpanan computer sehingga data tersebut dapat digunakan secara efisien. 
"SEDANGKAN DATA ITU SENDIRI" representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau dipresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau symbol
"DAN FAKTA MEMPUNYAI ARTI SEPERTI" kenyataan yang tercatat mengenai suatu objek. Data dapat dinyatakan menjadi konstanta dan variable.
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.
Struktur adalah komposisi, susunan yang teratur, bertahap. Sedangkan data merupakan informasi yang telah diolah.
Maka definisi struktur data adalah komposisi dan susunan teratur dari data, dalam hal ini data dapat diartikan sebagai data secara umum seperti diatas atau data dalam bidang pemrograman computer.  Struktur Data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.

HUBUNGAN ALGORITMA DAN STRUKTUR DATA

Program = Struktur Data + Algoritma
Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, demikian juga sebaliknya. Yang termasuk dalam struktur data antara lain yaitu senarai berantai, antrian, tumpukan, daan pohon binear. Adapun yang dimaksud
Algoritma yaitu suatu langkah atau prosedur yang ditunjukan untuk memanipulasi data. Sebagai contoh algoritma diperlukan untuk memasukkan data ke dalam suatu struktur data atau untuk mencari suatu data yang tersimpan dalam struktur data

Struktur Data, meliputi :
·         Struktur data sederhana,
a.       Array
b.      Record.
·         Struktur data majemuk, terdiri dari :
a.       Linier : Stack, Queue, serta List dan Multilist
b.      Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat didalam proses pemrograman menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secarakeseluruhan 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)


ALGORITMA DAN METODE PEMROGRAMAN:
Penekanan bagaimana memecahkan masalah dengan algoritma yang tepat. Dasar-dasar algoritma :
·         Statement Elementer :
°  Asignment (untuk memberikan nilai ke variable yang telah dideklarasikan)
°  Comparison (Untuk keperluan pengambilan keputusan diperlukan operator)
°   Aritmatic Statement (Pangkat, Perkalian, Pengurangan, Penjumlahan, Pengurangan, Operator aritmatika yang pemakaiannya khusus yaitu % sisa pembagian )
°  Operator Boolean (Operator Boolean atau operator logika biasa dipakai untuk menghubungkan ungkapan relasi yang hasilnya adalah true atau false, yaitu:& & and (dan), “| |  or (atau),”   Not (tidak))
°  Instruksi I/O ( Untuk memasukan data ke komputer dapat melalui Instruksi (dalam bahasa C) sebagai berikut: Scant(), Getch(), Getche() )
·         Statement Control :
°  Alternatif :
Ø    If, Bentuk Umum : If (Kodisi)
                                                {Persyaratan}
Ø  If-Else, Bentuk Umum  : If (Kodisi)
                                                            {Persyaratan - True}
                                                            Else
                                                            {Pernyataan – False}
Contoh mencari/menentukan bilangan x adalah bilangan ganjil/genap ?




Ø  Switch, Bentuk Umum :  Switch (ekspresi)
                                    {
                                    Case – 1 : Pernyataan – 1
                                    Break;
                                    …………..
                                    Case – n : Pernyataan – n
                                    Break;
                                    }
°  Pengulangan :
Ø  do while, Bentuk Umum :  do
                                    {pernyataan}
                                    while (kondisi)
Ø  while, Bentuk Umum :  while (kondisi)
                                    {pernyataan}
Ø  For, Bentuk Umum : For (ungkapan-1; ungkapan-2; ungkapan-3)
                                    {Pernyataan}                         
°  Percabangan (Memerlukan label sebagai identitas cabang), Bentuk umum :
Label:
{
pernyataan
}  goto label

ket:
nah diatas adalah contoh pembuatan aplikasinya dan juga fungsi fungsinya juga udah saya jelaskan diatas 
saya akan menjelaskan lagi tentang tipe data 

Hirarki Type data :
1.      Type Data Sederhana ( Menyimpan sebuah nilai data dalam sebuah variable) :
·         Integer (Bilangan bulat)

 ·         Real : Bilangan Real Presisi-Tunggal (Float) dan Bilangan Real Presisi-Ganda (Double)


·         Boolean (Operator Logika)
·         Karakter
·         Tak Bertipe
1.      Type Data Terstruktur ( Tipe dimana suatu variable bisa menyimpan lebih dari sebuah nilai data ) :
·         Type String
Data yang berisi sederetan karakter dimana banyaknya karakter bisa berubah-ubah sesuai kebutuhan.
Bentuk umum : Char nama_variabel[ukuran]
·         Larik (Array)
Variabel larik hanya bisa menyimpan 1 tipe data saja.
Bentuk umum : tipe_data nama_variabel[ukuran]
·         Record
Terdiri dari beberapa variabel yang terstruktur dan masing-masing variabel bisa mempunyai tipe yang berbeda.
Bentuk umum : struct nama_variabel_struktur
                              {tipe field1;
                                tipe field2;
                                ……;
                                tipe fieldN;
                              }Var_struk1, Var_struk1,……..,Var_strukN;
·         Set (Himpunan)
o  Union (Memungkinkan suatu lokasi memori ditempati oleh dua atau lebih variabel  yang tipenya bisa berlainan)
o  Enumerasi (Himpunan dari konstanta integer yang diberi nama)
·         File (Organisasi dari sejumlah record sejenis)
2.      Type Data Pointer ( Variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang ditunjuk oleh pointer tersebut )
Bentuk umum : Tipe * nama_pointer



2.   apa itu ARRAY ???
Array adalah struktur data yang menyimpan data-data bertipe sama dalam urutan tertentu. Array dapat dianalogikan sebagai sebuah loker yang memiliki sederetan kotak penyimpanan yang diberi nomor berurutan. Data-data dalam array disebut elemen array. Dengan array setiap elemen bisa diakses langsung melalui indeksnya. Kelebihan lain dari array adalah kita bisa memakai sejumlah variable dengan nama yang sama asalkan variable tersebut dalam indeks yang berbeda.
1.      Karakteristik array :
E Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
E Mempunyai tipe data sama (bersifat homogen)
E Dapat diakses secara acak.
1.      Jenis array :
a)      Array Satu Dimensi
Array satu dimensi yaitu kumpulan elemen-elemen identik yang hanya terdiri dari satu baris atau hanya satu kolom alamat penyimpanan data (indeks). Elemen-elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.
Bentuk umum :
Tipe_data namaArray[n] = {elemen0, elemen1, elemen2,…..,n};
n = jumlah elemen
contoh pada progam : int ukur[5] = {39, 40. 41, 38, 40};
-      int adalah tipe data yang berupa bilangan bulat.
-      Ukur adalah nama variabel array.
-      [5] adalah ukuran untuk menyatakan jumlah maksimal elemen array.
-      {..} adalah tempat pemberian nilai/elemen array.

b)      Array Dua Dimensi
Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen bertipe sama sehingga dapat digambarkan sebagai berikut :
Bentuk umum :
Tipe_data namaArray [m][n] = {{a,b,…z},{1,2,…,n-1}};
m = banyaknya baris
n = banyaknya kolom
contoh : int lulus[4][3];
-      Nilai 4 untuk menyatakan banyaknya baris dan 3 untuk menyatakan banyaknya kolom.
Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian array satu dimensi, kecuali bahwa array dua dimensi terdapat dua jumlah elemen yang terdapat dikurung kurung siku dan keduanya boleh tidak sama. Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam kurung.
c)      Array MultiDimensi
Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu-waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.
Bentuk umum pendeklarasian array multidimensi :
Tipe_data namaArray[ukuran1][ukuran2]…[ukuranN];
Sebagai contoh :
int data_huruf[2][8][8]
contoh di atas merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga.
  1. Contoh kasus dari jenis- jenis Array:
a.       Array Berdimensi Satu.
Berikut ini adalah contoh program yang memberikan inisialisasi terhadap array berdimensi satu :



a.       Array Berdimensi Dua.

Berikut ini adalah contoh program yang memberikan inisialisasi terhadap array berdimensi dua :

a.       Array Berdimensi Tiga (Multi Dimensi).

Berikut ini adalah contoh program yang memberikan inisialisasi terhadap array berdimensi tiga:



nah itu adalah contoh apliklasi yang saya buat dan saya juga perjelas tentang codingan nya.

3. apa itu stack???
      Ada empat operasi dasar yang didefinisikan pada stack, yaitu :
      1. CREATE(stack)
      2. ISEMPTY(stack)
      3. PUSH(elemen,stack)
      4. POP(stack)

 CREATE
      Operator ini berfungsi untuk membuat sebuah stack kosong dan didefinisikan bahwa :

NOEL(CREATE(S)) = 0 dan TOP(CREATE(S)) = null
                                                           
 ISEMPTY
      Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong. Operasinya akan bernilai boolean, dengan definisi sebagai berikut :
            ISEMPTY(S) = true, jika S adalah stack kosong
                                    = false, jika S bukan stack kosong
      atau
            ISEMPTY(S) = true, jika NOEL(S) = 0
                                    = false, jika NOEL(S) 0

      Catatan : ISEMPTY(CREATE(S)) = true.

 PUSH
      Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack. Notasi yang digunakan adalah :

            PUSH(E,S)

      Artinya : menambahkan elemen E ke dalam stack S.

      Elemen yang baru masuk ini akan menempati posisi TOP.
       Jadi : TOP(PUSH(E,S)) = E.
      Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL(S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false).


POP
      Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack. Notasinya :
                   POP(S)

      Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP. Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang dan elemen pada posisi TOP akan berubah. Operator POP ini tidak dapat digunakan pada stack kosong, artinya :

4. apa itu QUEQUE???


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



Untuk lebih jelasnya,dbawah ini ada contoh dalam bentuk coding 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<<”       cecep agus m”<<endl;
      cout<<”      UNIVERSITAS KRISNADWIPAYANA”<<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
sekian dan terimaksih