Archive

Archive for the ‘Data Structure’ Category

Aplikasi Stack pada Struktur Data untuk Mengkonversikan Notasi INFIX Menjadi POSTFIX

June 18th, 2009 Author 1 comment

Listing Program

Uses crt;

const

Noelstack = 80;

Makschar = 80;

Type

Eon = char;

stack = Record

Top : array[1...Noelstack] of Eon;

Noel : 0… Noelstack;

End;

Tipeindex = 0… makschar;

Typeeks = array[1... Noelstack] of char

Var

lagi : char;

{Bentuk-bentuk operasi stack}

Function isempty(Var s : stack):Boolean;

Begin

IsEmpty : = s. noel = 0

End;

Procedure create (var s. stack);

Begin

S. Noel : = 0;

End;

procedure buatkosong (Var s. stack);

Begin

S. Noel : = 0;

End ;

Procedure stack Error (tingkat Error: integer);

Begin

Case tingkat error of

1 : Writeln (isi stack sudah terlalu penuh);

2 : Writeln (isi stack kosong);

End

End;

Procedure push( var s : stack; tipebaru : Eon);

Begin

If s. Noel = Noel stack then

stack Error(1)

Else

Begin

s.Noel : = s. Noel+1 ;

s.Top[s.Noel] : = tipebaru

End

End;

Procedure pop(var s: stack ;

var nilaistack : Eon);

Begin

If s. Noel = 0 then

Stack error(2)

Else

Begin

Nilaistack : = s.top[s.Noel];

S.Noel : = s. Noel – 1;

End

End;

{proses konversi suatu ekspresi}

Function puncak stack(s : stack) : Eon;

Begin

Puncak stack : = s.top[s.noel]

End;

Function isidlmstack (operator: char); integer;

Begin

case operator of

‘(‘ : isidlmstack : = 0;

‘+’,'-’ : isidlmstack : = 2;

‘*’,',’/’ : isidlmstack : = 4;

End

End;

Function stackyangdibaca (operator : char): integer

Begin

Case operator of

‘)’ : stackyangdibaca : =0;

‘+’,'-’ : stackyangdibaca : = 1;

‘*’,'/’ : stackyangdibaca : = 3;

‘(‘ : stackyangdibaca : = 5;

End

End;

Procedure simpanchar(ch:char; Var ekspost : Tipeks;Var indekspost ; Tipeindex);

Begin

Indekspost : = indeks post+1;

ekspost [indekspost]: = ch;

End;

Procedure konversi infixkePostfix (eks dlm : Tipe eks;

pjg dlm : Tipe index;

var ekspost: Tipe Eks;

var panjang post : Tipe indeks);

Var

opstack : stack ;

indeksdlm, indeks post: Tipe index;

chdlm, operator, simpan : char ;

Begin

create (Opstack);

Push (Opstack, ‘(‘);

eksdlm[pjg dlm +1] := ‘)’;

Indeks post: = 0;

For indeksdlm : = 1 to pjgdlm +1 Do

Begin

chdlm: = Eks Dlm [indeks dlm];

if ch dlm in ['A'....'Z'] then

simpan char (ch Dlm, Ekspost,indekspost)

Else

Begin

While isidlmstack(puncak stack (opstack))> stack yang dibaca (ch dlm) Do

begin

pop(opstack,operator);

simpanchar(operator,ekspost,indekspost)

end;

if chdlm = ‘)’ then

pop(opstack,simpan)

else

push(opstack,simpan)

end

panjang post := indekspost

end;

panjang post := indekspost

end;

produce konversi ekspresi;

var

indeks panjangdlm, panjang post :tipe index;

eksdlm,ekspot :tipe eks

begin

lagi :=’y';

While (upcase(lagi) =’x’ do

Begin

clsscr;

panjangdlm := 0

while not eoln do

begin

panjangdlm:=panjangdlm +1;

read(eksdlm[panjangdlm])

end;

readln ;

write(‘ekspresi infix:’);

for index := 1 to panjangdlm do

write(eksdlm[index]);

writeln;

konversiinfixkePostfix(eksdlm, panjangdlm, ekspost, panjang post);

write (‘dalam bentuk Postfix’)

for indeks := 1 to panjangpost do

write (ekspost [indeks]);

writeln;

writeln;

write (‘ada data lagi.’); readln (lagi)

end;

End;

begin

konversi ekspresi;

end

Categories: Data Structure, Pascal Tags:

Program untuk Mengurutkan Data dengan Metode RADIX SORT

June 18th, 2009 Author No comments

Uses WinCrt;
Type
Pointer = ^TypeData;
TypeData = Record
Nilai : integer;
Berikutnya : Pointer;
End;
Pointer2 = Array[0..9] Of Pointer;
Var
List : Pointer;
Q : Pointer2;
{====================================================================}
{===================== MASUK DATA DARI DEPAN ========================}
{====================================================================}
Procedure Masuk_Depan(Var L : Pointer; X : Integer);
Var
Baru : Pointer;
Begin
New(Baru);
Baru^.Nilai := X;
Baru^.Berikutnya := Nil;
If L = Nil Then L := Baru
Else
Begin
Baru^.Berikutnya := L;
L :=Baru;
End;
End;
{====================================================================}
{======================= PROCEDURE INITIALIZATION ===================}
{====================================================================}
Procedure Initialization(Var Q : Pointer2);
Var
i : byte;
Begin
For i := 0 To 9 Do Q[i] := Nil;
End;
{====================================================================}
{=============== SUSUN DATA UNTUK TIAP MACAM DALAM ARRAY ============}
{====================================================================}
Procedure Susun(L : Pointer;Var Q1 : Pointer2);
Var
Bantu,Baru : Pointer;
i : Byte;
Begin
Bantu := L;
While Bantu Nil Do
Begin
New(Baru);
Baru^.Berikutnya := Nil;
Baru^.Nilai := Bantu^.Nilai;
Masuk_Depan(Q1[Baru^.Nilai],Baru^.Nilai);
Bantu := Bantu^.Berikutnya;
End;
End;
25
{====================================================================}
{=================== PROCEDURE CONCATINATION DATA ===================}
{====================================================================}
Procedure Concatination(L : Pointer2; Var Q1 : Pointer);
Var
Bantu,Baru : Pointer;
i : Byte;
Begin
For i := 0 To 9 Do
Begin
If L[i] Nil Then
Begin
Baru := L[i];
If Q1 = Nil Then Q1 := Baru
Else
Begin
Bantu := Q1;
While Bantu^.Berikutnya Nil Do
Bantu := Bantu^.Berikutnya;
Bantu^.Berikutnya := Baru
End;
End;
End;
End;
{====================================================================}
{========================= PROCEDURE CETAK DATA =====================}
{====================================================================}
Procedure Cetak(L : Pointer);
Var
Bantu : Pointer;
Begin
Bantu := L;
While Bantu Nil Do
Begin
Write(Bantu^.Nilai:3);
Bantu := Bantu^.Berikutnya;
End;
End;
{====================================================================}
{======================= PROCEDURE CETAK DATA =======================}
{====================================================================}
Procedure Cetak_Susunan(L : Pointer2);
Var
Bantu,Baru : Pointer2;
i : Byte;
Begin
For i := 0 to 9 do
Begin
Write(‘ Q[',i,'] =’);
If L[i] Nil Then
Begin
Bantu[i] := L[i];
While Bantu[i] Nil Do
Begin
Write(Bantu[i]^.Nilai:3);
Bantu[i] := Bantu[i]^.Berikutnya;
End;
26
End;
Writeln;
End;
End;
{====================================================================}
{========================== PROGRAM UTAMA ===========================}
{====================================================================}
Var
Bil,N : Byte;
Begin
New(List);
List:=Nil;
Initialization(Q);
Randomize;
Repeat
Bil:=Random(10);
Masuk_Depan(List,Bil);
N:=N+1;
Until N=20;
Writeln;
Writeln(‘ Mengurutkan Data Dengan Metode RADIX SORT’);
Writeln;
Writeln(‘ DATA SEBELUM DIURUTKAN ….’);
Cetak(List);
Writeln;
Susun(List,Q);
writeln;
Writeln(‘ HASIL PENGELOMPOKAN …’);
Cetak_Susunan(Q);
Writeln;
List:=Nil;
Concatination(Q,List);
Writeln(‘ HASIL PENGURUTAN SETELAH DIKELOMPOKKAN’);
Cetak(List);
writeln;
End.

Categories: Data Structure, Pascal Tags:

Pandapotan Struktur Data

June 14th, 2009 Author No comments

Struktur data adalah merepresentasikan data pada memory secara logika dan meng-karakterisasikan setiap variabel dalam program secara eksplisit ataupun implisit, Untuk operasi yang dibolehkan/berlaku pada object data tersebut.
Struktur data diperlukan dalam perencanaan Algoritma dan penyusunan program sebagai dasar teknik dari Database

Data dan Algoritma
• Tipe data adalah macam/isi data pada suatu variable dlm bhs pemograman, dpt berupa integer,real,karakter,boolean dan pointer atau disebut juga tipe data tunggal, sedangkan tipe data majemuk adalah string.
• Array dan record termasuk strutur data sederhana.
• Struktur data majemuk terdiri dari struktur data linier dan non linier

Struktur Data linier :
a). Array : matrik dimensi satu dan dua bersifat statis.
b). Stack (tumpukan) , termasuk array dimensi satu.
Merupakan Suatu susunan koleksi data dimana data dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengan top of stack
Dan bersifat LIFO (Last In First Out)

“Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack

Operasi pada 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

Stack with Array of Struct
• Definisikan Stack dengan menggunakan suatu struct
• Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
• Elemen struct Stack adalah array data dan top untuk menadakan posisi data teratas
• Buatlah variabel tumpuk sebagai implementasi dari struct Stack
• Deklarasikan operasi-operasi/function di atas dan buat implemetasinya

Program Stack
• Contoh deklarasi MAX_STACK
#define MAX_STACK 10
• Contoh deklarasi STACK dengan struct dan array data
typedef struct STACK{
int top;
int data[10];
};
• Deklarasi/buat variabel dari struct
STACK tumpuk;

Inisialisasi Stack
• Pada mulanya isi top dengan -1, karena array dalam bahasa C dimulai dari 0, yang berarti bahwa data stack adalah KOSONG!
• Top adalah suatu variabel penanda dalam Stack yang menunjukkan elemen teratas data Stack sekarang. Top Of Stack akan selalu bergerak hingga mencapai MAX of STACK yang menyebabkan stack PENUH!

Gambar : Ilustrasi Stack pada saat inisialisasi

Fungsi IsFull
• Untuk memeriksa apakah stack sudah penuh?
• Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full

Ilustrasi Stack pada kondisi Full

Fungsi IsEmpty
• Untuk memeriksa apakah data Stack masih kosong?
• Dengan cara memeriksa top of stack, jika masih -1 maka berarti data Stack masih kosong!

Fungsi Push
• Untuk memasukkan elemen ke data Stack. Data yang diinputkan selalu menjadi elemen teratas Stack (yang ditunjuk oleh ToS)
• Jika data belum penuh,
• Tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan ke dalam array data Stack.
• Isikan data baru ke stack berdasarkan indeks top of stack yang telah di-increment sebelumnya.
• Jika tidak, outputkan “Penuh”

Fungsi Pop
• Untuk mengambil data Stack yang terletak paling atas (data yang ditunjuk oleh TOS).
• Tampilkan terlebih dahulu nilai elemen teratas stack dengan mengakses indeksnya sesuai dengan top of stacknya, baru dilakukan di-decrement nilai top of stacknya sehingga jumlah elemen stack berkurang

Fungsi Print
• Untuk menampilkan semua elemen-elemen data Stack
• Dengan cara me-loop semua nilai array secara terbalik, karena kita harus mengakses dari indeks array tertinggi terlebih dahulu baru ke indeks yang lebih kecil!

Fungsi Peek
digunakan untuk melihat top of stack

c). Queue Dengan Array
• Bersifat FIFO (First In First Out)
• Elemen yang pertama masuk ke antrian akan keluar pertama kalinya
• DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian
• Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular Array
Queue Linier Array
• Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya
• Sehingga membutuhkan 2 variabel: Head dan Tail

Operasi-operasi yang akan dilakukan :
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 kebelakang, yaitu menggunakan nilai Tail

Fungis 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

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

e). Dequeue
• Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
• Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 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 pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca

Tampil()
• Untuk menampilkan nilai-nilai elemen Antrian
• Menggunakan looping dari head s/d tail

Categories: Data Structure, Pascal Tags:

Pengertian Struktur Data

June 11th, 2009 Author No comments

STRUKTUR DATA

Dalam istilah ilmu komputer, sebuah Struktur 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.

Categories: Data Structure Tags:

Robby Struktur Data

June 11th, 2009 Author No comments

Dalam istilah ilmu komputer, sebuah Struktur 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.

Categories: Data Structure Tags:

Dasar-dasar Mempelajari Struktur Data

June 8th, 2009 Author 2 comments

ABSTRAK

Berbicara tentang struktur data, maka kita tidak bias terlepas dari yang namanya bahasa pemrograman. Bahasa pemrograman yang banyak dipelajari untuk pemrograman dasar adalah bahasa Pascal. Dalam tulisan saya ini saya akan membahas tentang konstanta, variable, dan tipe data yang biasa digunakan pada bahasa Pascal.

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

Dalam mempelajari struktur data hal-hal awal yang perlu kita ketahui adalah tentang konstanta, variable, dan tipe data. Nah dalam bahasan ini saya akan membahas tentang ketiga hal di atas.

Konstanta
Dalam membuat suatu program, kita perlu menggunakan konstanta agar program kita bisa lebih mudah diperbaiki jika ada suatu kesalahan yang kita buat. Dengan menggunakan konstanta kita bisa memberikan nama yang mudah dimengerti dan dipahami untuk bilangan numerik yang sangat kompleks. Konstanta dideklarasikan pada awal program dan dideklarasikan dengan kata baku const. Pada pemrograman dengan Pascal dideklarasikan sebelum blok begin-end program utama. Bentuk umum dari konstanta adalah:

Cnst
namakonstanta1 = nilaikonstanta1;
namakonstanta1 = nilaikonstanta1;
namakonstantaN = nilaikonstantaN;

contoh konstantanya adalah:
const
maximum =100;
luas lingkarn = pi*radius;
pi = 3,14;

sesuai dengan namanya “konstanta”, maka nilai dalam konstanta selalu konstan atau tetap dan kita tidak dapat merubah nilai dari konstanta pada saat program sedang dijalankan.

Variabel
Variabel adalah lokasi di memori yang kita siapkan dan kita beri nama khas untuk menampung suatu nilai dan atau mengambil nilai kembali tersebut. Bentuk umum dari variable adalah:

Var
NamaVariabel1,
NamaVariabel2,
……………….
NamaVariabel1N : TipeData1;
NamaVariabel1,
NamaVariabel2,
NamaVariabelNN : TipeDataN;

Contoh dari variable adalah:

Var
Nilai1,
Nilai2,
Nilai3 : byte;
Nama : string(20);
Totaldata : integer;

Tipe Data
Dalam tulisan ini yang akan dibahas adalah tipe data sederhana.

Tipe Data Sederhana
Pascal sudah memiliki dan memnyediakan beberapa tipe data sederhana yang sudah siap kita pakai. Tipe-tipe data yang sudah disediakan Pascal adalah:
* Integer
* Boolean
* Real
* Karakter
* String

Baiklah mari kita bahas satu per satu tipe data ini.

Integer
Integer adalah tipe data nilainya merupakan bilangan bulat dan teerbagi atas beberapa macam. Berikut ini adalaha tabelnya:

Type Range Ukuran Format
ShortIn

Integer

LongInt

Byte

Word

-128…127

-32768..32767

-2147483648..2147483647

0..255

0..65535

1

2

4

1

2

Signed 8-bit

Signed 16-bit

Signed 32-bit

Unsigned 8-bit

Unsigned 16-bit

Boolean

Boolean digunakan untuk merepresentasikan logika. Bolean hanya dapat bernilai True(1) dan False(0). Di bawah ini adalah beberapa tipe data Boolean:

Type Range Ukuran
Boolean

ByteBool

WordBool

LongBool

Byte-sized

Byte-sized

Word-sized

Long-sized

1 (8bit)

1 (8bit)

2 (16bit)

4 (32bit)

Real

Real biasanya digunakan untuk merepresentasikan nilai pecahan. Jenis-jenis tipe data real seperti pada tabel berikut ini:

Type Range Ukuran Digit
Real

Single

Double

Extended

Comp

±2.9×10-39..1.7×1038

±1.5×10-45..3.4×1038

±5×10-324..1.7×10308

±3.4×10-4932..1.1×104932

±9.2×1018..9.2×1018

6

4

8

10

8

11-12

7-8

15-16

19-20

19-20

Karakter
Tipe data karakter hanya dapat menampung satu karakter saja dan mengalokasikan satu byte memori. Bentuk umum dari tipe data karakter adalah:

Var
: char;

Berikut ini contoh dari penggunaan tipe data karakter:

Var
Kalimat : string;
Nama : string(20);
String : string(30);

String
String adalah tipe data gabungan(array) dari karakter sebanyal 256 karakter. Bentuk umum dari string adalah:

Var: string;

Berikut ini adalah contohnya:

Var
Nama : string(20);
Alamat : string(30);

Itulah beberapa tipe data sederhana yang sudah disediakan oleh Pascal dalam bahasa pemrograman Pascal. Namun ada juga tipe data lain yang elemennya kita sebutkan satu persatu. Tipe data ini adalah tipe data Enumerasi. Bentuk umum dari tipe data enumerasi adalah:

type : (elemen1, elemen2, elemen3….elemenN);

contohnya:

type
binatang = (anjing, kucing, ayam, babai);

Demikian sedikit penjelasan saya tentang dasar-dasar struktur data dengan menggunakan Pascal. Semoga bermanfaat untuk memandu anda dalam mempelajari struktur data dan pemrograman.

Referensi:
Sanjaya, Dwi: Bertulang Dengan Struktur Data di Planet Pascal: 2005: Graha Ilmu.
Kumalasari, Erni: Modul Struktur Data

Categories: Data Structure, Pascal Tags:

Pengertian Struktur Data

June 8th, 2009 Author 6 comments

Struktur data adalah cara menyimpan atau merepresentasikan data didalam 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:
Type data sederhana.

  • Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter.
  • Type data sederhana majemuk, misalnyaString

Struktur Data, meliputi:

  • Struktur data sederhana, misalnya array dan record.
  • Struktur data majemuk, yang terdiri dari:

Linier : Stack, Queue, sertaList dan Multilist
Non Linier : Pohon Biner dan Graph

Pemakaian struktur data yang tepat didalam 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.

Categories: Data Structure Tags:

Natha Struktur Data

June 4th, 2009 Author No comments

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.

Kegunaan

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.

Jenis

  1. Struktur Data Sederhana
    1. Array(Larik)
      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
    2. Record(Catatan)
      ADT adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa pemrograman yang bersangkutan.
  2. Struktur Data Majemuk
    1. Linier
      1. Stack(Tumpukan)
        Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan “di atas” (top), penghapusan selalu dilakukan pada top). Karena aturan penyisipan dan penghapusan semacam itu, top adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen stack akan tersusun secara LIFO (Last In First Out).

      1. Queue(Antrian)
        Queue (antrian) adalah list linier yang dikenali elemen pertama (head) dan elemen terakhirnya (tail); Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama; Satu elemen dengan elemen lain dapat diakses melalui informasi next.
      2. List dan Multi-List (Daftar)
        List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian. sebuah list linier dikenali dengan (1) elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first); (2) Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next; (3) 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; (4) Elemen terakhirnya.
    1. Non-Linier
      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 (Graf)
        Graph merupakan struktur data yang paling umum. Jika struktur linier 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 linier 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.
Categories: Data Structure Tags:

Erika Struktur Data

June 4th, 2009 Author 1 comment

Penjelesan Semua Hal Yang Berhubungan Dengan 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 di sebut 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.

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)

- Struktur Data Dinamis (Jumlah komponennya dapat berubah)

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.

Struktur Data, meliputi:

Ø Struktur data sederhana, misalnya array dan record.

v Array adalah koleksi data yang tipenya sama, tersusun dalam bantuk barisan linier berurutan (sequence) dan jumlah elemen atau datanya tidak berubah (statis) sesuai deklarasi awal. Semua elemen array diidentifikasikan dengan sebuah nama (nama array) dan untuk setiap elemennya diidentifikasikan dengan sebuah index.

v Record adalah Struktur data yang tersusun atas elemen-elemen yang jumlahnya tertentu dan tipe data elemennya dapat berbeda-beda. Elemen sebuah record disebut field. Record dan array merupakan struktur data yang panjangnya tertentu (statis).

Ø Struktur data majemuk , yang terdiri dari:

Struktur data linier : Stack, Queue, serta List dan Multilist

v Stack (Tumpukan)

Stack adalah struktur data linear dimana penambahan atau pengurangan komponen dilakukan di satu ujung saja. Stack merupakan suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yang disebut sebagai “TOP”. Stack juga merupakan struktur data yang seolah olah data ditempatkan di atas data yang lain. Diibaratkan seperti menumpuk piring, maka data yang baru datang akan ditempatkan di atas data yang sebelumnya.

Ada 2 operasi dasar yang didefinisikan pada stack, yaitu :

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

2). 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 : POP(CREATE(S)) = error condition.

v Queue (Antrian)

Queue (Antrian) adalah struktur data linear dimana penambahan komponen dilakukan di satu ujung, sementara pengurangan dilakukan di ujung lain (yang satu lagi). Queue merupakan struktur data yang seolah olah penempatan datanya seperti orang mengantri di loket. Data yang baru akan datang ditempatkan yang paling akhir.

v List

List adalah kumpulan objek data yang tipe datanya sama, tersusun dalam bentuk barisan linier berurutan dan elemen-elemennya dapat di hapus atau di tambahkan secara dinamis.

Non linier : Pohon Biner dan Graph.

v Tree ( Pohon)

Tree merupakan struktur data yang menempatkan data seperti pohon biner , yaitu pohon yang hanya memiliki 2 cabang. Implementasinya menggunakan pointer dua link field.

OPERASI-OPERASI PADA STRUKTUR DATA YAKNI :

a. Operasi seleksi komponen

Proses pada struktur data seringkali merupakan proses pada masing-masing komponen untuk kemudian diproses dengan operasi primitive atau prosedur dan fungsi yang didefinisikan oleh programmer. Operasi seleksi komponen adalah operasi untuk mengakses komponen dan membuatnya tersedia untuk pemrosesan dengan operasi yang lain. Operasi ini dapat dibedakan menjadi operasi akses secara random dimana komponen struktur data yang diakses dapat berganti-ganti, dan operasi akses secara berurutan, dimana komponen-komponen diakses satu demi satu dalam urutan/rangkaian pemrosesan.

b. Operasi struktur data secara keseluruhan

Operasi ini memungkinkan mengambil struktur data secara keseluruhan sebagai argumennya dan menghasilkan struktur data yang baru.

c. Penyisipan dan Penghapusan komponen

Operasi ini akan mengubah jumlah komponen dan berpengaruh pada representasi dan pengelolaan penyimpanan.

d. Pembuatan dan penghapusan struktur data.

Categories: Data Structure Tags:

Dani Struktur Data

June 3rd, 2009 Author No comments

Sesuai dengan intruksi yang diinformasikan oleh mas agus, mahasiswa bimbingannya dihimbau untuk menerangkan struktur data sesuai apa yang telah di pahami. Berhubungan dengan hal tersebut saya selaku mahasiswa bimbingannya mulai belajar lagi dan baca baca buku atau bahan mata kuliah universitas lain yang sudah didownload, dan berusaha untuk memahaminya.

Apa yang sebenarnya dimaksud dengan struktur data???

Kumpulan objek data yang saling berkaitan dan memiliki aturan yang kemudian digolongkan berdasar operasi untuk memanipulasinya.

Contoh data yang terstruktur adalah ; ARRAY, RECORD, LIST, STACK, QUEUE.

  1. ARRAY

Sepenggal penjelasan tentang ARRAY.

  • Elemen-elemen array haruslah bertipe data sama (tidak harus berupa integer) dan bisa berisi nilai yang sama atau berbeda-beda.

  • Elemen-elemen array tersusun secara berderet dan dapat diakses secara random di dalam memori.

  • Array memiliki alamat yang besebelahan/berdampingan tergantung lebar tipe datanya.

  • Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.

Deklarasi array

Var var_array : array (range_index) of tipe_data ;

  • Var nilai : array (1..20) of integer;

char jenny [20];
dapat menampung karakter sampai 20 karakter

Array yang sudah dipesan, misalnya 20 tempat tidak harus diisi semuanya, bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori tetap sebanyak 20 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan dibiarkan kosong.

INISIALISASI ARRAY

Untuk menginisialisasi array, elemen-elemen array diletakkan diantara tanda kurung.

Contoh :

  • Int arr [ 5 ] = { 1, 3, -3, 5, 2 } ;

2.RECORD

Sebuah record rekaman disusun olehbeberapa field. Tiap field berisi data daritipe dasar / bentukan tertentu. Recordmempunyai kelebihan untuk menyimpansuatu sekumpulan elemen data yang berbeda-beda tipenya (di banding array).

Contoh , sebuah record dengan empat buah field

Field1

Field2

Field4

Field4

Sintax

type

nama_record = record

identifier_1 : tipe_data_1;

:

:

identifier_n : tipe_data_n;

end;

var variabel : nama_record;

Array dari Record

type tanggal = record

bulan, hari, tahun : integer;

end;

var birthdays : array[1..10] of tanggal;

3. POINTER

Pointer : variabel yang berisi alamat memori

Bentuk Umum : Type *variable name;

  • Type adalah tipe dasar pointer

  • Variable name adalah nama variabel pointer

  • * adalah operator memori untuk mengembalikan nilai variabel pada alamatnya yang ditentukan oleh operand.

DEKLARASI POINTER

Type pengenal = ^simpul;

Simpul = tipe;

4. LIST

  • List : umpulan objek data yang bertipe sama

  • Elemen-elemennya dapat dihapus atau ditambahkan secara dinamis

Data1

List dgn pointer

Data2

data pointer

5. STACK

Pengertian Stack

- Stack atau tumpukan

- Bersifat LIFO (Last In First Out)

- Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama

yang dikeluarkan dari stack

- Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo

akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita

menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi

elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari

tumpukan, maka secara otomatis akan terambil elemen teratas, yaituCompo juga.

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

Deklarasi STACK dengan struct dan array data

typedef struct STACK{

int top;

char data[10][10]; //misalkan : data adalah array of string

//berjumlah 10 data, masing-masing string

//menampung maksimal 10 karakter

};

Deklarasi/buat variabel dari struct

STACK tumpuk;

Inisialisasi Stack

- Pada mulanya isi top dengan -1, karena array dalam C dimulai dari 0,

yang berarti stack adalah KOSONG!

- Top adalah suatu variabel penanda dalam STACK yang menunjukkan

elemen teratas Stack sekarang. Top Of Stack akan selalu bergerak

hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH!

- Ilustrasi stack pada saat inisialisasi:

Fungsi IsFull

- Untuk memeriksa apakah stack sudah penuh?

- Dengan cara memeriksa top of stack, jika sudah sama dengan

MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1)

maka belum full

- Ilustrasi:

Fungsi Push

- Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack

- Tambah satu (increment) nilai top of stack terlebih dahulu setiap kali ada

penambahan elemen stack, asalkan stack masih belum penuh, kemudianisikan nilai baru ke stack berdasarkan indeks top of stack setelah

ditambah satu (diincrement)

- Ilustrasinya:

6. QUEUE

Queue = Antrian

Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya FIFO (first in first out)

DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian

deklarasi

#define MAX 8

typedef struct{

int data[MAX];

int head;

int tail;

} Queue;

Queue antrian;

OPERASI-OPERASI PADA QUEUE

- Create()

o Untuk menciptakan dan menginisialisasi Queue

o Dengan cara membuat Head dan Tail = -1

IsEmpty()

o Untuk memeriksa apakah Antrian sudah penuh atau belum

o Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty

o Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala

antrian (elemen pertama dalam antrian) yang tidak akan berubahubah

o Pergerakan pada Antrian terjadi dengan penambahan elemen

Antrian kebelakang, yaitu menggunakan nilai Tail

IsFull()

o Untuk mengecek apakah Antrian sudah penuh atau belum

o Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1

adalah batas elemen array pada C) berarti sudah penuh

Dequeue()

o Digunakan untuk menghapus elemen terdepan/pertama dari Antrian

o Dengan cara mengurangi counter Tail dan menggeser semua

elemen antrian kedepan.

o Penggeseran dilakukan dengan menggunakan looping

Demikian hasil pemaparan saya tentang struktur data dari array sampai Queue, saya harap apa yang telah saya simpulkan dapat dipahami oleh temen2 yang membacanya.

Namun saya rasa masih ada banyak kekurangan, karena disini kita sama sama belajar dan saling melengkapi.

Categories: Data Structure Tags: