Minggu, 25 Februari 2018

ALGORITMA & STRUKTUR DATA DALAM BAHASA C++

PENGERTIAN STRUKTUR DATA DAN JENIS-JENIS STRUKTUR DATA


Image result for gambar struktur data


A.        PENGERTIAN STRUKTUR DATA
Struktur data memegang peran penting dalam teknik pemrograman. Pemilihan struktur data yang tepat dapat meningkatkan efisiensi dan efektifitas sebuah program. Dalam teknik pemrograman, Struktur data adalah 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.

Dalam pengertian lain, Struktur Data dapat juga disebut sebagai suatu kumpulan objek-objek data yang memiliki aturan (terorganisir) yang kemudian di golongkan berdasarkan operasi-operasi untuk memanipulasinya. Contoh objek data tersruktur adalah Array, Record, Stack, Queue, Tree,dll.

1.    Atribut-Atribut Penting Untuk Suatu Tipe Data Terstuktur Yakni :
a.    Jumlah Komponen
Berdasarkan jumlah komponen selama eksekusi program, maka dapat dikelompokkan menjadi :
·  Struktur Data Statis (Jumlah komponennya tidak berubah), seperti Array, Record, himpunan.
·  Struktur Data Dinamis (Jumlah komponennya dapat berubah), seperti List, Queue, Stack.
b.    Tipe untuk setiap komponennya
Apabila tipe data untuk seluruh komponennya harus sama, maka disebut Struktur Data Homogen, dan bila dimungkinkan komponennya mempunyai tipe data yang berbeda-beda, maka disebut Struktur Data Heterogen.
c.    Nama-nama untuk memilih komponen
Hampir semua struktur data menyediakan operasi untuk mengakses komponen secara individu. Pada suatu array (kumpulan data yang mempunyai tipe sama), hal ini dilakukan dengan sebuah indeks berupa angka.
d.   Jumlah maksimum komponen
Tidak semua jenis struktur data harus ditentukan jumlah maksimum komponen, namun untuk sebuah tipe data dinamis mungkin perlu ditentukan dengan jelas.
e.    Pengorganisasian semua komponennya
Susunan yang paling umum adalah berupa barisan linier seperti pada array berdimensi 1, record, list, stack dan file. Selanjutnya ada yang dapat dikembangkan menjadi struktur non linier seperti array multi dimensi dan juga pohon/tree.
2.    Kegunaan
1)        Memudahkan dalam memahami dan memecahkan masalah  algoritma
2)        Meningkatkan  efisiensi  memori  saat  program  komputer  sedang  bekerja
3)        Proses reservasi memori yang tidak perlu akan diminimalisasi



B. JENIS - JENIS STRUKTUR DATA
1.    Struktur Data Sederhana (Primitif)
a.    Integer
Tipe data "Int" yaitu bilangan bulat dengan jangkauan nilai antara -2147483648 sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar 4 byte.
b.   Short
Tipe data "Short" yaitu bilangan bulat dengan jangkauan nilai antara -32768 sampai dengan 32767. Tipe data ini membutuhkan memori sebesar 2 byte. Tipe ini bisa digunakan untuk memproses umur seseorang.
c.    Long
Tipe data "Long" yaitu bilangan bulat dengan jangkauan nilai antara -2147483648 sampai dengan 2147483647. Tipe data ini membutuhkan memori sebesar 4 byte.
d.   Long Long
Tipe data "Long Long" yaitu bilangan bulat dengan jangkauan nilai antara -9232372036854775808 sampai dengan 9232372036854775807. Tipe data ini membutuhkan memori sebesar 8 byte. Tipe data ini bisa digunakan untuk memproses keuangan.
e.    Float
Tipe data "Float" yaitu bilangan real dengan ketelitian rendah yaitu 6-7 digit serta memiliki jangkauan nilai antara 10-38 sampai dengan 1038  Tipe data ini membutuhkan memori sebesar 4 byte. Tipe ini bisa digunakan untuk menghitung volume atau luas suatu bangun.
f.     Double
Tipe data "Double" yaitu bilangan real dengan ketelitian tinggi yaitu 15 digit serta memiliki jangkauan nilai antara 10-308 sampai dengan 10308. Tipe data ini membutuhkan memori sebesar 8 byte.
g.    Boolean
Tipe data "Bool" yaitu Nilai logika yang bernilai true (benar) dan false (salah). Tipe data ini membutuhkan memori sebesar 1 byte.
h.   Character
Tipe data "Char" yaitu sebuah karakter. Tipe data ini membutuhkan memori sebesar 1 byte. Tipe ini bisa digunakan untuk pembuatan password.


2.    Struktur Data Majemuk (Non-Primitif)
a.    Linear
1)   Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang  bertipe sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap  elemen  dapat diakses langsung melalui indeksnya. Indeks larik harus berupa  tipe data yang berurutan (misalnya integer atau karakter) dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
2)   Stack
Pengertian Stack atau Tumpukan 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 linear yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.

OPERASI-OPERASI/FUNGSI 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.

3)   Queue
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out). 
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 

KARAKTERISTIK QUEUE (ANTRIAN) : 
·      Elemen antrian.
·      Front (elemen terdepan antrian).
·      Tail (elemen terakhir).
·      Jumlah elemen pada antrian.
·      Status antrian

OPERASI-OPERASI QUEUE : 
·      Create(), untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head dan Tail = -1.
·      IsEmpty(), untuk memeriksa apakah antrian sudah penuh atau belum dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah pergerakan pada antrian terjadi dengan penambahan elemen antrian ke belakang, yaitu menggunakan nilai Tail.
·      IsFull, untuk mengecek apakah antrian sudah penuh atau belum dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh.
·      Enqueue, untuk menambahkan elemen ke dalam antrian, penambahan elemen selalu ditambahkan di elemen paling belakang penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu.
·      Dequeue(), digunakan untuk menghapus elemen terdepan/pertama (head) dari antrian dengan cara menggeser semua elemen antrian ke depan dan mengurangi Tail dengan 1 penggeseran dilakukan dengan menggunakan looping.
·      Clear(), untuk menghapus elemen-elemen antrian dengan cara membuat Tail dan Head = -1. Penghapusan elemen-elemen antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesannya ke nilai -1 sehingga elemen-elemen antrian tidak lagi terbaca.
·      Tampil(), untuk menampilkan nilai-nilai elemen antrian menggunakan looping dari Head sampai dengan Tail.

4)   List dan Multi-List (Daftar)
List linear adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian. Sebuah list linear dikenali dengan :
·      Elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first).
·      Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next.
·    Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat diakses.
·      Elemen terakhirnya.

b.   Non-Linear
1)   Binary Tree (Pohon Biner)
Sebuah pohon biner (binary tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left) dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.

2)   Graph
Graph merupakan struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data. Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian.
Contoh: informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini kota X bisa berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk memeriksa keterhubungan dan jarak tidak langsung antara dua kota dapat diperoleh berdasarkan data keterhubungan-keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Representasi data dengan struktur data linear ataupun hirarkis pada masalah ini masih bisa digunakan namun akan membutuhkan pencarian-pencarian yang kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straightforward) dilakukan pada strukturnya sendiri.




REFERENSI :
Wantoro, Jan dan Sukirman. 2017. ALGORITMA & STRUKTUR DATA DALAM BAHASA C/C++. Surakarta: Muhammadiyah University Press.
Arizal, Anton. 2015. Pengertian Struktur Data dan Jenis-jenisnya. From http://antonarizal.blogspot.co.id/2015/01/pengertian-struktur-data-dan-jenis.html. 11 Januari 2015
Ridahani. S, Lutfiana. 2017. PENGERTIAN DAN JENIS-JENIS STRUKTUR DATA. From http://lutfianaridahani.blogspot.co.id/2017/02/normal-0-false-false-false-en-us-x-none.html. Februari 2017.
Andilau. 2014. Pengertian dan penjelasan Struktur Data, Stack, Queue, Sorting (Bubble Sort & Selection Sort). From http://bekokmarley.blogspot.co.id/2014/01/pengertian-dan-penjelasan-struktur-data.html. 8  Januari 2014.
Sahabat. 2009. Erika Struktur Data. From https://www.nusinau.com/erika-struktur-data. 4 Juni 2009.

Saddam, Andryan. 2016. Struktur Data Primitif Pada C++. From http://logical-mins.blogspot.co.id/2016/07/struktur-data-cpp.html. 29 Juli 2016

0 komentar:

Posting Komentar

Template by:

Free Blog Templates