struktur data mantap

35
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.

Upload: achmad-yui-maki-horikita

Post on 15-Dec-2015

188 views

Category:

Documents


2 download

DESCRIPTION

Materi Struktur Data

TRANSCRIPT

Page 1: Struktur Data Mantap

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.

Page 2: Struktur Data Mantap

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).

Page 3: Struktur Data Mantap

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 :

Page 4: Struktur Data Mantap

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 OperatorJumlah karakter dalam string LENGTHGabungan 2 buah string CONCATSub bagian dari string SUBSTRMenyisipkan string ke dalam string yang lain INSERTMenghapus karakter dalam string DELETE

Page 5: Struktur Data Mantap

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 + 9 = 15

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

Page 6: Struktur Data Mantap

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"

Page 7: Struktur Data Mantap

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 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.

Page 8: Struktur Data Mantap

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

Page 9: Struktur Data Mantap

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}

Page 10: Struktur Data Mantap

{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

Page 11: Struktur Data Mantap

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 :

p = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).

PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE

Rumus : @A[i] = B + (i – 1) * L

Dimana : @A[i] : Posisi array yang dicari

B : Posisi awal index di memori computer

i : Subkrip atau index array yang di cari

L : 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 xcout<<x[i] << " " <<*px<<" "<<px<<endl;}{

N

p(Index Array)

i = 1

Page 12: Struktur Data Mantap

cout<<"1.NAMA :SUDARSONO"<<endl;cout<<"2.NIM :2010140119"<<endl;cout<<"3.SEMESTER :IIIA"<<endl;cout<<"4.TANGGAL PRAKTIKUM :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 :

 

p = 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)

 

         Secara baris per

baris (row major order /

RMO)

 

n

p(Index Array)

i = 1

 

@M[i][j] = M[0][0] + {(j – 1) * K + (i – 1)} * L 

@M[i][j] = M[0][0] + {(i – 1) * N + (j – 1)} * L 

Page 13: Struktur Data Mantap

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 = tetap/konstan

Kolom = berubah-ubah (*)

Contoh : B(*,4) = semua elemen pada kolom ke-4.

B(2,*) = 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.

Page 14: Struktur Data Mantap

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 :

Page 15: Struktur Data Mantap

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 elemen-

elemen tetangga, baik elemen pendahulu atau elemen penerus 3

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga,

Page 16: Struktur Data Mantap

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

Page 17: Struktur Data Mantap

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, {0…23}

mm : integer, {0…59}

ss : integer {0…59}

>

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, {0…23}

mm : integer, {0…59}

ss : integer {0…59}

>

Diterjemahkan menjadi :

typedef struct

Page 18: Struktur Data Mantap

{ int hh; /*0…23*/

int mm; /*0…59*/

int ss; /*0…59*/

} Jam;

Struktur data majemuk terdiri :

Linier : Stack, Queue, serta List dan Multilist

Non Linier : 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 prosedural, diterjemahkan menjadi fungsi dan

prosedur.

Page 19: Struktur Data Mantap

Primitif dikelompokkan menjadi :

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)

Page 20: Struktur Data Mantap

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)

Page 21: Struktur Data Mantap

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.

Page 22: Struktur Data Mantap

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

Page 23: Struktur Data Mantap

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.

Page 24: Struktur Data Mantap

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 : Identifier tipe data

Domain : 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

Page 25: Struktur Data Mantap

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).