Pages

Jumat, Maret 09, 2012

PENGERTIAN STRUKTUR DATA


Struktur data adalah cara menyimpan atau
merepresentasikan data di dalam komputer agar
bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunia
nyata.
Fakta atau keterangan tentang kenyataan yang
disimpan, direkam atau direpresentasikan dalam
bentuk tulisan, suara, gambar, sinyal atau
simbol

Secara garis besar type data dapat dikategorikan
menjadi :
1. Type data sederhana
a. Type data sederhana tunggal, misalnya
Integer, real, boolean dan karakter
b. Type data sederhana majemuk, misalnya
String
2. Struktur Data, meliputi
a. Struktur data sederhana, misalnya array dan
record
b. Struktur data majemuk, yang terdiri
dari
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 yang ″standar″ yang biasanya
digunakan dibidang informatika adalah :
􀁺 List linier (Linked List) dan variasinya
􀁺 Multilist
􀁺 Stack (Tumpukan)
􀁺 Queue (Antrian)
􀁺 Tree ( Pohon )
􀁺 Graph ( Graf )


REVIEW RECORD (REKAMAN)
Disusun oleh satu atau lebih field. Tiap field
menyimpan data dari tipe dasar tertentu atau dari
tipe bentukan lain yang sudah didefinisikan
sebelumnya. Nama rekaman ditentukan oleh
pemrogram.
Rekaman disebut juga tipe terstruktur.
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.
2. 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
{ int hh; /*0…23*/
int mm; /*0…59*/
int ss; /*0…59*/
} Jam;

REVIEW ARRAY (LARIK)
1. Pendahuluan
􀁺 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 vektor

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


ADT (Abstract Data Type)
􀁺 ADT 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.
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


ADT biasanya diimplementasi menjadi dua buah
modul, yaitu :
1. Definisi/spesifikasi type dan primitif
- Spesifikasi type sesuai dengan
bahasa yang dipakai
- Spesifikasi dari primitif sesuai dengan kaidah
dalam konteks prosedural, yaitu :
a. Fungsi : nama, domain, range, dan pre kondisi
jika ada
b. Prosedur : Keadaan Awal, Keadaan Akhir dan
proses yang dilakukan
2. Body/realisasi dari primitif, berupa kode program dalam
bahasa yang bersangkutan. Realisasi fungsi dan prosedur
harus sedapat mungkin memanfaatkan Selektor dan
Konstruktor


4. Linked List (List Linier)
4.1. Definisi
List linier adalah sekumpulan elemen
bertype sama, yang mempunyai
keterurutan tertentu, yang setiap
elemennya terdiri dari 2 bagian :
Type Elmtlist = record
< Info : InfoType,
Next : address >
Dengan Info Type adalah sebuah type
terdefenisi yang menyimpan informasi
sebuah elemen list ; Next adalah address
dari elemen berikutnya ( suksesor ).
Dengan demikian, jika didefinisikan First
adalah alamt elemen pertama list, maka
elemen berikutnya dapat diakses secara
suksesif dari elemen pertama tersebut
Jadi, sebuah list linier dikenali :
􀁺 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
terdefenisi . Dengan alamat tersebut Informasi
yang tersimpan pada elemen list dapat diakses
.
􀁺 elemen terakhirnya. Ada berbagai cara untuk
mengenali elemen akhir
Jika L adalah list , dan P adalah address :
Alamat elemen pertama list L dapat diacu
dengan notasi :
First (L)
Elemen yang diacu oleh P dapat dikonsultasi
informasinya dengan notasi :
Info(P)
Next(P)

Beberapa defenisi :
1. List L adalah List kosong , jika First (L) = Nil
2. Elemen terakhir dikenali, dengan salah satu
cara adalah karena Next(Last) =Nil


II. Skema traversal untuk list
linier
List terdiri dari sekumpulan elemen.
Seringkali diperlukan untuk memproses
setiap elemen list dengan cara yang sama.
Karena itu salah primitif operasi konsultasi
dasar pada struktur list adalah traversal,
yaitu “mengunjungi” setiap elemen list
untuk diproses.

0 komentar: