Anda di halaman 1dari 25

DATA DAN STRUKTUR DATA

1.PENGERTIAN DATA 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. Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan dalam bentuk konstanta / variable.

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: Tipe data adalah jenis atau macam data di dalam suatu variable dalam bahasa pemrograman. Objek data mengacu kumpulan elemen, D (domain). 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.

Struktur data biasa dipakai untuk mengelompokan beberapa informasi yang terkait menjadi sebuah kesatuan.

Tipe data sederhana terbagi menjadi dua, yaitu: Data sederhana tunggal. Misalnya : Integer, real / float, Boolean dan character.

Data sederhana majemuk. Misalnya : String.

1.TIPE DATA SEDERHANA TUNGGAL

INTEGER

Tipe Integer merupakan subset dari bilangan bulat yang ukurannya dapat bervariasi pada komputer-komputer yang berbeda-beda. Semua Operasi pada data bertipe integer pasti berkaitan dengan hukum dasar operasi aritmatika, dan hasil komputasinya akan diinterupsi jika berada di luar jangkauan nilai yang ditentukan. Operator standar pada data bertipe integer adalah : - Penjumlahan (diberi notasi +) - Pengurangan (diberi notasi -) - Perkalian (diberi notasi *) - Pembagian (div). Operasi pembagian (div) menghasilkan bilangan bulat, dengan mengabaikan sisa pembagian. Sedangkan untuk mendapatkan sisa hasil baginya, gunakan modulus (mod). Anggota dari himpunan bilangan : {..., -(n+1), -n, ..., -2, -1, 0, 1, 2, ..., n, n+1, ...} Operasi dasar yaitu : penjumlahan, pengurangan, perkalian, pembagian dan perpangkatan

REAL

Tipe Real merupakan subset bilangan real (bukan bilangan bulat) Proses aritmatika pada bilangan real diperbolehkan untuk memberikan hasil yang tidak teliti sampai batas pembulatan kesalahan pada jumlah digit tertentu (jumlah digit di belakang koma). Inilah perbedaan mendasar dari tipe data Integer dengan Real dalam hampir semua bahasa pemrograman. Operator standar pada data bertipe Real adalah : - Penjumlahan (diberi notasi +) - Pengurangan (diberi notasi -) - Perkalian (diberi notasi *) - Pembagian (diberi notasi slash (/)) untuk membedakannya dengan pembagian bulat (div).

Data numerik yang bukan termasuk integer, digolongkan dalam jenis data real. Ditulis menggunakan titik desimal (atau koma desimal). Dimasukkan ke dalam memori komputer memakai sistem floating point, disebut Scientific Notation. Penyajiannya terdiri dari : mantissa (pecahan) dan eksponen.

Contoh : Di dalam sistem desimal, 123000 = 0.123 * 106 Di sini 0.123 adalah mantissa atau pecahan, sedangkan 6 adalah eksponennya. Secara umum suatu bilangan real X dituliskan M * RE Di sini : M dijadikan pecahan, R adalah radixnya dan E merupakan eksponennya.

BOOLEAN Disebut juga jenis data logical. Anggota { true atau false}.

Operator Logika, yaitu : AND, OR, NOT Operator AND akan menghasilkan nilai true, jika kedua operand bernilai true. Operator OR akan menghasilkan nilai true, jika salah satu operand bernilai true Operator NOT merupakan precedence dari operator AND dan OR.

Dalam suatu ekspresi yang tidak menggunakan tanda kurung, operator NOT harus dievaluasi sebelum operator AND dan OR. Operator Relasional, yaitu : >, <, >=, <=, <> dan = Contoh : 6 < 8 = True 9 < 8 = False

KARAKTER Elemen dari suatu himpunan yang terdiri atas bilangan, abjad dan simbol khusus.

(0,1,...,8,9, A, B, ..., Y,Z, +, -,*,, ...} Ada banyak skema yang digunakan untuk merepresentasikan karakter dalam storage. Pada umumnya skema yang paling banyak digunakan adalah :

1. Extended Binary Coded Decimal Interchange (EBCDIC) Digunakan kode 8 bit untuk menyatakan sebuah karakter. Jika dihitung, kemungkinan kombinasi seluruhnya : 28 = 256.

2. American Standard Code for Information Interchange (ASCII) Digunakan kode 7 bit untuk menyatakan sebuah karakter. Jika dihitung, kemungkinan kombinasi seluruhnya : 27 = 128.

2.TIPE DATA MAJEMUK STRING Barisan hingga karakter yang dibentuk oleh suatu kumpulan dari karakter. Karakter yang digunakan untuk membentuk suatu string disebut alfabet. Dalam penulisannya, suatu string berada dalam tanda aphosthrope.

Contoh : Misal diberikan himpunan alfabet A = {C,D,1}.

String

yang

dapat

dibentuk

dari

alfabet

di

atas

di

antaranya

CD1,CDD,DDC,CDC1,... dan sebagainya, termasuk null string atau empty string Himpunan tak hingga dari string yang dibentuk oleh alfabet A disebut VOCABULARY, Notasi : VA atau A* Jika suatu string dibentuk dari alfabet {0,1}, maka string yang terbentuk disebut dengan Bit String. OPERASI Jumlah karakter dalam string Gabungan 2 buah string Sub bagian dari string Menyisipkan string ke dalam string yang lain Menghapus karakter dalam string Operator LENGTH CONCAT SUBSTR INSERT DELETE

LENGTH Nilai dari operasi ini adalah suatu integer yang menunjukkan panjang dari suatu string

. Notasi : LENGTH(S) = N (integer) di sini S = String, N = integer

CONCAT Operasi ini bekerja terhadap dua string dan hasilnya merupakan resultan dari kedua

string tersebut. Jika S1 dan S2 masing-masing adalah suatu string, maka bentuk operasi CONCATENATION dinotasikan dengan : CONCAT(S1, S2). Contoh : Misal S1 = a1a2 ... aN dan S2 =b1b2 ... bM Maka CONCAT(S1,S2) = a1a2 ... aNb1b2 ... bM String S1 = "Sistem" String S2 = "Informasi" CONCAT(S1, S2)= "SistemInformasi" LENGTH(CONCAT(S1, S2)) = 15 LENGTH(S1) + LENGTH(S2) = LENGTH(CONCAT(S1, S2)) 6 + 15 9 = = 15 15

SUBSTR Operasi ini adalah operasi membentuk string baru, yang merupakan bagian dari string

yang diketahui. Notasi : SUBSTR(S, i, j)

di sini : S = string yang diketahui i dan j = integer

i = posisi awal substring 1 i LENGTH(S) j = banyak karakter yang diambil 0 j LENGTH(S) dan 0 i+j-1 LENGTH(S)

INSERT Operasi ini adalah untuk menyisipkan suatu string ke dalam string lain.

Bentuk umumnya adalah : INSERT(S1,S2,i). S1 dan S2 masing-masing adalah suatu string dan i adalah posisi awal S2 pada S1.

Contoh : Misalkan : S1 = a1a2 ... aN S2 = b1b2 ... bM INSERT(S1, S2,3) = a1a2b1b2 ... bMa3a4... aN String S1 = "Sistem" String S2 = "Informasi" INSERT(S1,S2,4) = SisInformasitem INSERT(S2,S1,4) = InfSistemormasi

DELETE Operasi ini digunakan untuk menghapus sebagian karakter dalam suatu string.

Bentuk umumnya adalah : DELETE(S,i,j) menghapuskan sebagian karakter dalam string S, mulai dari posisi i dengan panjang j.

Contoh : Diberikan string S = a1a2 ... aN DELETE(S,3,4) = a1 a2 a7a8 ... aN String S = "Sistem Informasi"

i = 4, j = 9 DELETE(S,i,j) = Sismasi DELETE(S,j,i) = Sistem Imasi String S = SistemInformasi DELETE(S, 4, 5) = Sisformasi DELETE(S, 5, 4) = Sistformasi

PENGERTIAN STRUKTUR DATA Struktur data adalah suatu koleksi / kelompok data yang dapat di karakteristikan oleh organisasi serta operasi yang di definisikan terhadapnya. Dalam teknik pemrograman,struktur data berarti tata letak yang berisi kolom-kolom data,baik itu kolom yang tampak oleh pengguna (user) ataupun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Sedangkan 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. Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolomkolom 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 data meliputi : Struktur data sederhana, misalnya Array dan Record. Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain array adalah Larik, tabel atau vector

Array

atau

Larik

di

definisikan

sebagai

pemesanan

alokasi

memory

berurutan.definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian. Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.

Cara Pendefinisian Array 1.Sebagai Peubah Contoh : L : array[1..50] of integer NamaMhs : array[a..j] of string 2.Sebagai tipe baru Contoh : type LarikInt : array[1..100] of integer P : LarikInt 3. Mendefinisikan ukuran maksimum elemen larik sebagai konstanta Contoh : Const Nmaks = 100 type Larikint : array[1..Nmaks] of integer

P : LarikInt Cara menterjemahkan ke bahasa C : #define Nmaks 100

typedef int Larikint[Nmaks+1]; Larikint P;

Cara Mengacu Elemen Larik Elemen larik diacu melalui indeksnya. Nilai indek harus terdefinisi. Contoh cara mengacu elemen larik adalah : L[4] {mengacu elemen keempat dari larik L } NamaMhs[b] {mengacu elemen kedua dari larik NamaMhs} P[k] {mengacu elemen ke-k dari larik P, asalkan nilai k sudah terdefinisi }

Menginisialisasi Larik menginisialisasi elemen larik adalah memberikan harga awal untuk seluruh elemen larik, misalnya menginisialisasi dengan nilai 0 seperti di bawah ini : Procedure InisDgn0(output A:larik, input N:integer) {menginisialisasi setiap elemen larik A[1..N] dengan nol} {K. Awal : N adalah banyak elemen efektif larik, nilainya terdefinisi} {K. Akhir : seluruh elemen larik A bernilai nol} Deklarasi : K : integer Deskripsi : for k 1 to N do A[k] 0 endfor

Mengisi elemen larik dari piranti masukan Elemen larik dapat diisi dengan nilai yang dibaca dari piranti masukan seperti contoh di bawah ini : Procedure BacaLarik(output A:larik, input N:integer) {mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan}

{K. Awal :

N adalah jumlah elemen efektif larik, nilainya terdefinisi}

{K. Akhir : seluruh elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan}

Deklarasi : K : integer Deskripsi : for k 1 to N do read (A[k]) endfor

Larik Bertype Terstruktur Larik tidak hanya dapat berisi data bertype tunggal, tapi dapat juga berisi data yang bertipe terstruktur Contoh : const Nmaks = 100 type Mahasiswa : record <nim : integer, nama_mhs : string, KodeMK : string, Nilai : char > TabMhs : array[1..Nmaks] of Mahasiswa

Contoh Cara mengacu elemen TabMhs : 1.TabMhs[2].Nim mengacu field Nim dari elemen kedua larik 2.Write(TabMhs[k].KodeMK) menuliskan field KodeMK dari elemen ke k dari larik.

Karakteristik Array Mepunyai batasan dari pemesanan alokasi memori (bersifat statis) Mempunyai tipe data sama (bersifat homogen) Dapat diakses secara acak.

Deklarasi Array Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu : Type data array Nama variable array Subkrip / index array. Contoh deklarasi dari array adalah sebagai berikut : int A[5] ; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer. Jenis-jenis Array: ARRAY DIMENSI SATU Deklarasi : Type_Data Nama_Variabel [index]

Rumus untuk menentukan jumlah elemen dalam array adalah :


N

(Index Array) i=1 = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga). PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE Rumus Dimana : @A[i] = B + (i 1) * L : @A[i] B i L : Posisi array yang dicari : Posisi awal index di memori computer : Subkrip atau index array yang di cari : Ukuran atau besar memori suatu tipe data

Contoh bentuk Array menggunakan c++


include<iostream> using namespace std; void main(void) { int x[10]={0,1,2,3,4,5,6,7,8,9}; int *px; int i; for(i=0;i<10;i++) { px=&x[i]; // membaca alamat dari x cout<<x[i] << " " <<*px<<" "<<px<<endl;

} { cout<<"1.NAMA cout<<"2.NIM cout<<"3.SEMESTER cout<<"4.TANGGAL PRAKTIKUM :SUDARSONO"<<endl; :2010140119"<<endl; :IIIA"<<endl; :23-03-2011"<<endl;

} #include<iostream> #include<conio.h> using namespace std; void main(void) { int billy [5] = {16,2,77,40,12017}; int n, result=0; for( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout<<"Outputnya:"<<endl; cout<<result<<endl<<endl; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:"<<endl; cout<<"Nama : SUDARSONO SIHOTANG:"<<endl; cout<<"SEMESTER : IIIA:"<<endl; cout<<"Tanggal praktikum : kamis-1/04/2011:"<<endl; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:"<<endl; getch(); }

ARRAY DIMENSI DUA Deklarasi : Type_Data Nama_Variabel [index1] [index2]

Menentukan jumlah elemen dalam array dimensi dua :


n

(Index Array) i=1

= Perkalian dari statemen sebelumnya PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE Terbagi dua cara pandang (representasi) yang berbeda : Secara kolom per kolom (coloumn major order / CMO) @M[i][j] = M[0][0] + {(j 1) * K + (i 1)} * L Secara baris per baris (row major order / RMO) @M[i][j] = M[0][0] + {(i 1) * N + (j 1)} * L

Keterangan

@M[i][j] = Posisi array yang di cari, M[0][0 = Posisi alamat awal index array, i = Baris, j = Kolom, L = Ukuran memory type data, K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris.

ARRAY DIMENSI TIGA Adalah suatu array yang setiap elemennya merupakan tipe data array juga yang merupakan array dimensi dua. Contoh : Penyajian data mengenai banyaknya mahasiswa dari 20 perguruan tinggi di Jakarta, berdasarkan tingkat (1 sampai 5), dan jenis kelamin (pria atau wanita). Misalkan array tersebut dinamakan MHS. Ambil subskrip pertama, tingkat = 1, 2, ..., 5; subskrip kedua, jenis kelamin (pria = 1, wanita = 2), dan subskrip ketiga, perguruan tinggi adalah K = 1, 2, ..., 20. Jadi MHS(4,2,17) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi 17.

CROSS SECTION (Penampang Array Berdimensi-2) Adalah pengambilan salah satu subskrip. Misal : Baris Kolom = = tetap/konstan berubah-ubah (*)

Contoh :

B(*,4) = B(2,*) =

semua elemen pada kolom ke-4. semua elemen pada baris ke-2.

Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array dimensi dua.

Misal : MHS(4,*,17) = jumlah mahasiswa tingkat 4 dari perguruan tinggi 17 (masing-masing

untuk pria dan wanita). MHS(*,*, 3) = jumlah mahasiswa untuk masing-masing tingkat, pria dan

wanita, dari perguruan tinggi 3.

Operasi Dasar Pada Array Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.

Terdapat dua tipe operasi, yaitu : Operasi terhadap satu elemen / posisi dari array Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen / posisi adalah Penyimpanan nilai elemen ke posisi tertentu di array Pengambilan nilai elemen dari posisi tertentu di array

Operasi-operasi dasar terhadap array secara keseluruhan adalah : 1. Operasi penciptaan 2. Operasi penghancuran 3. Operasi pemrosesan traversal 4. Operasi pencarian (table look-up) 5. Operasi sorting

1. PENCIPTAAN DAN PENGHANCURAN Operasi penciptaan biasa disebut inisialisasi. Operasi ini untuk mempersiapkan struktur data untuk operasi-operasi berikutnya. Operasi penghancuran menyatakan ketidak berlakuan struktur data atau membebaskan memory, menyerahkan memory ke manajemen memory agar dapat di pergunakan keperluan lain. Operasi penghancuran penting terutama bila struktur data di implementasikan secara dinamis menggunakan pointer

2. PENYIMPANAN DAN PENGAMBILAN NILAI Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array. Contoh :

A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

3. PEMROSESAN TRANSVERSAL Operasi pemrosesan transversal adalah pemrosesan mengolah seluruh elemen secara sistematik.

4. PENCARIAN DI ARRAY (table look-up) Pencarian di array (table look-up) adalah proses pencarian suatu nilai di array. Klasifikasi pencarian di array adalah : 1) Pencarian sekuen (sequential searching),yaitu: i. Tanpa Boolean, terbagi: Tanpa sentinen Dengan sentinen ii. Menggunakan boolean

2) Pencarian secara biner / dikotom (binary = dichotomy searching).

5. PENGURUTAN ARRAY Pengurutan atau sorting adalah proses yang paling sering di lakukan dalam pengolahan data.pengurutan di bedakan menjadi dua, yaitu : a. Pengurutan internal Pengurutan dilakukan terhadap sekumpulan data di media memory internal komputer dimana data dapat di akses elemennya secara langsung. b. Pengurutan eksternal Pengurutan data di memory sekunder. Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memori utama.

KEUNGGULAN DAN KELEMAHAN ARRAY Keunggulan array adalah sebagai berikut : 1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain. 2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemenelemen tetangga, baik elemen pendahulu atau elemen penerus 3

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien.

Kelemahan array adalah sebagai berikut : Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut : 1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain 2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis Tidak efisien dalam penggunaan memori Menyiakan banyak waktu komputasi Pada suatu aplikasi, representasi statis tidak dimungkinkan

Bila penambahan dan pengurangan terjadi terus menerus, maka representasi statis (array): 1. Tidak efisien dalam penggunaan memory 2. Menyiakan banyak waktu komputasi 3. Pada suatu aplikasi, representasi statis tidak di mungkinkan.

Pengaksesan Elemen Array Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu secara random ataupun berurutan. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Dalam C, tidak terdapat error handling terhadap batasan nilai indeks, apakah indeks tersebut berada di dalam indeks array yang sudah didefinisikan atau belum. Hal ini merupakan tanggung jawab programmer. Sehingga jika programmer mengakses indeks yang salah, maka nilai yang dihasilkan akan berbeda atau rusak karena mengakses alamat memori yang tidak sesuai.

Record (basis data) merupakan kumpulan dari elemen-elemen data yang terkait dalam sebuah basis data. Secara ringkas, database dapat dikatakan sebagai sebuah tabe yang memiliki baris alias record dan kolom atau field. Setiap baris menyatakan elemen-elemen data yang saling berkaitan. Sebagai contoh dalam suatu tabel memiliki kolom nama, alamat, tanggal lahir, pekerjaan. Maka satu record adalah data sau orang yang terdiri atas nama, alamat, tanggal lahir dan pekerjaan.

Contoh : 1. type Titik : record <x : real, y : real> jika P dideklarasikan sebagai Titik maka mengacu field pada P adalah P.x dan P.y. Didefinisikan tipe terstruktur yang mewakili Jam yang dinyatakan sebagai jam (hh), menit (mm) dan detik (ss), maka cara menulis type Jam adalah : type JAM : record <hh : integer, {023} : integer {059} mm : integer, {059} ss > Jika J adalah peubah (variabel) bertipe Jam maka cara mengacu tiap field adalah J.hh, J.mm dan J.ss

Terjemahan dalam bahasa C : 1. type Titik : record <x : real, y : real> diterjemahkan menjadi : typedef struct { float x; float y; } Titik;

2. type JAM : record <hh : integer, {023} : integer {059} mm : integer, {059} ss >

Diterjemahkan menjadi : typedef struct { int hh; /*023*/ /*059*/ int mm; /*059*/ int ss;

} Jam;

Struktur data majemuk terdiri :


Linier Non Linier : Stack, Queue, serta List dan Multilist : Pohon Biner dan Graph

Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.

Struktur data standar yang biasanya digunakan dibidang informatika adalah :


ADT , Array , Struk ADT (Abstract Data Type) atau Tipe Data Bentukan Bahasa C memiliki tipe data numerik dan karakter (seperti integer, float, char dan lainlain). Bagaimana jika kita ingin membuat tipe data baru? ADT adalah tipe data yang dibuat oleh programmer sendiri yang memiliki suatu nama tertentu. ADT dapat berupa tipe data dasar namun diberi nama baru atau berupa kumpulan tipe data berbeda yang diberi nama baru. Untuk pembuatan ADT digunakan keyword typedef ADT (Abstract Data Type) adalah definisi type dan sekumpulan primitif (operasi dasar) terhadap type tersebut. Type diterjemahkan menjadi type terdefinisi dalam bahasa pemrograman yang bersangkutan, misalnya menjadi record dalam Pascal/Ada dan Struct dalam bahasa C

Primitif dalam konteks pemrograman prosedur. Primitif dikelompokkan menjadi :

prosedural, diterjemahkan menjadi

fungsi dan

1. Konstruktor/Kreator, pembentuk nilai type. Biasanya namanya diawali dengan Make. 2. Selektor, untuk mengakses komponen type. Biasanya namanya diawali dengan Get. 3. Prosedur Pengubah nilai komponen 4. Validator komponen type, yang dipakai untuk mengetes apakah dapat membentuk type sesuai batasan. 5. Destruktor/Dealokator, yaitu untuk menghancurkan nilai objek, sekaligus memori penyimpannya 6. Baca/tulis, untuk interface dengan input/output device 7. Operator Relasional terhadap type tersebut untuk mendefinisikan lebih besar, lebih kecil, sama dengan dan sebagainya. 8. Aritmatika terhadap type tersebut, dalam pemrograman biasanya hanya terdefinisi untuk bilangan numerik. 9. Konversi dari type tersebut ke type dasar dan sebaliknya List linier (Linked List) dan variasinya Linked list (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer. Multilist

Stack (Tumpukan) Dalam ilmu komputer, Stack atau Tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix). Ciri Stack :

Elemen TOP (puncak) diketahui penisipan dan penghapusan elemen selalu dilakukan di TOP LIFO

Stack Overflow & Stack Underflow Stack Overflow Menambahkan data pada sebuah stack yang telah penuh Stack Underflow Menghapus data dari sebuah stack yang sudah kosong Pemanfaatan Stack :

Perhitungan ekspresi aritmatika (posfix) algoritma backtraking (runut balik) algoritma rekursif

Operasi Stack yang biasanya : 1. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas. 2. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas 3. Clear : digunakan untuk mengosongkan stack 4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong 5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh

Queue (Antrian) Definisi Queue Queue ( Antrian ) merupakan kumpulan daya yang seolah olah terihat seperti ada data yang diletakkan disebelah data yang lainnya . Queue memiliki sifat FIFO.

Queue dengan Linear Array Linear Array adalah suatu array yan dibuat seakan akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu keluar .

Queue dengan Circular Array Circular Array merupakan suatu array yang dibuat seakan akan merupakan sebuah lingkaran dengan titik awal an titik akhir saling bersebelahan jika array dalam keadaan kosong .

Queue dengan Double Lingked List Merupakan Queue yang menggunakan Double Lingked List yang dapat menghemat memori dalam pengerjaan nya seperti pengertian Double Lingked List sebelumnya. Tree ( Pohon ) Biner Binary Tree Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child. Jenis-jenis Binary Tree :

a) Full Binary Tree Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.

b) Complete Binary Tree Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang

berbeda. Node kecuali leaf memiliki 0 atau 2 child.

c) Skewed Binary Tree Yakni Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child. Graph ( Graf ) Graph merupakan struktur data yang paling umum. Jika struktur linear memungkinkan pendefinisian keterhubungan sikuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.

Konsep Dasar Graph. Proses pembentukan dan pengaksesan struktur data dapat dipikirkan sebagai komputasi yang secara efektif terfokus. Struktur linier seperti tumpukan, larik, merekam sejarah pengaksesan terhadap diri mereka, struktur-struktur terurut melaksanakan pengurutan berkelanjutan, dan pohon-pohon biner melakukan pengkodean keputusan-keputusan tentang pemartisian koleksi-koleksi data. Adapun mekanisme yang paling umum untuk mengkodekan hubungan-hubungan antar data dalam graf. Struktur-struktur sederhana seperti larik menyediakan koneksi-koneksi implisit, seperti hubungan yang terjadi diantara nilai-nilai yang tersimpan didalamnya. Graf relatif sukar dikembangkan, tetapi sebagai hasilnya , graf dapat digunakan untuk menyimpan informasi yang lebih rinci. Kecanggihan sturktur graf memungkinkan para ilmuan komputer dapat merefresentasikan berbagai persoalan sulit dalam ilmu komputer. Dalam terminlogi graf dikenal berbagai istilah umum, selain simpul dan lintasan, yaitu: a. Keberdampingan (adjacency) Dinamakan berdampingan jika mereka terhubung melalui satu lintasan (edge). b. Lintasan (path) adalah urutan dari lintasan.

c. Terhubung (connected) Suatu graf dikatakan terhubung jika ada setidaknya atau lintasan antara satu simpul ke simpul-simpul lainnya.

d. Berarah (directed graph) dan berbobot (weighted graph) Suatu graf dikatakan tidak berarah jika kita dapat melintas dengan cara yang sama mudahnya dari suatu simpul ke simpul lainnya dan ini biasanya ditunjukan dengan lintasan tanpa panah yang menunjukan arah antar simpul.

PEMBUATAN STRUKTUR DATA Untuk membuat menjadi struktur data, kita harus melakukan dulu aktivitas terhadap objek data, yaitu : Mendeskkripsikan kumpulan operasi sah yang diterapkan ke elemen-elemen objek data. 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. Pendeskripsian ini melibatkan level logic sehingga dapat digunakan konvensi matematika untuk menyatakan sifat-sifat struktur data yang dikehendaki. 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 : Nama Domain : Identifier tipe data : Domain / himpunan semesta nilai di tipe data

Konstanta (penyebutan anggota-anggotanya) : Cara penyebutan anggota-anggota tipe data Operasi-operasi terhadap tipe data itu (operator) : Daftar operasi terhadap anggota tipe

data sehingga kelakuan objek data sesuai spesifikasi.

KESIMPULAN
Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara keseluruhan lebih sederhana. Array merupakan bagian dari struktur data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan alokasi memory sementara pada komputer. Apabila kita membuat program dengan data yang sudah kita ketahui batasnyamaka kita menggunakan Array (type data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer (type data dinamis).

Anda mungkin juga menyukai