Struktur Dan Type Data
Struktur Data
Struktur Data yaitu:
- Kelompok item data yang
terorganisasi yang dianggap sebagai suatu unit
- Disebut juga sebagai jenis data
kompleks (complex data type) atau data aggregates
* Array (larik)
* String
* Record
* List (daftar)
* Tree
Suatu struktur data adalah suatu koleksi atau kelompok data yang dapat
dikarakterisasikan oleh organisasi serta operasi yang didefinisikan
terhadapnya.
Pengertiannya : struktur data
adalah kumpulan elemen data (mulai dari byte) yang ditentukan tipe datanya,
diorganisasi (dibentuk, disusun, atau dikelompokkan) dan akan diproses sesuai
dengan tipe datanya. Struktur data sangat penting dalam sistem komputer.
Terhadap setiap variabel di dalam program, secara eksplisit ataupun implisit,
didefinisikan struktur data yang akan menentukan operasi yang berlaku terhadap
variabel tersebut. Struktur data yang dibicarakan ini merupakan struktur data
logika. Bukan penyajian secara fisik pada storage (memori komputer).
Struktur data, meliputi:
1. Struktur data sederhana, misalnya array dan record
2. Struktur data majemuk, terdiri atas:
misalnya stack, queue, serta linear
linked list.
misalnya pohon binar (binary tree),
pohon cari binar (binary search tree), pohon cari m-way (m-way search tree),
general tree, serta graph.
Type Data
- Tipe data Integer / Ordinal
Tipe data ini adalah tipe data yang
berupa bilangan bulat yang akan digunakan untuk operasi matematika. Ada
beberapa tipe data yang termasuk integer, yaitu antara lain:
- ShortInt : memiliki nilai range -128 sampai 127 (signed
8-bit)
- SmallInt : memiliki nilai range antara – 32768 sampai
dengan 32767 (signed 16-bit)
- LongInt : memiliki nilai range -2147483648 sampai
2147483647 (signed 32-bit )
- Int64 : memiliki range -263+1 sampai 263-1 (signed
64-bit)
- Byte : memiliki nilai range 0 sampai 255 (unsigned
8-bit)
- Word : memiliki nilai range 0 sampai 65535 (unsigned
16-bit)
- LongWord : memiliki nilain range 0 sampai
4294967295(unsigned 32-bit )
Pada pemakaian integer type di
implemetasi 16 bit maka:
- Integer : memiliki range antara – 32768 sampai dengan
32767 (signed 16-bit)
- Cardinal : memiliki range 0 sampai 65535 (unsigned
16-bit)
Pada pemakaian integer type di
implemetasi 32 bit maka:
- Integer : memiliki range antara -2147483648 sampai
2147483647 (signed 32-bit)
- Cardinal : memiliki range 0 sampai 4294967295 (unsigned
32-bit)
Penulisan pada deklarasi variable:
[variable] : [type data integer];
Tipe data ini hanya terdiri dari
nilai logika True dan False. Ada beberapa jenis dari tipe Boolean ini,
yaitu:
- Boolean : berukuran 1 byte (false 0, true 1)
- ByteBool : berukuran Byte (false 0, true 255 – 8 bit)
- Bool : berukuran Double (false 0, true -1)
- WordBool : berukuran Word (false 0, true 65535 – 16
bit)
- LongBool : berukuran Double (false 0, true -1)
Penulisan pada deklarasi variable:
[variable] : [type data
boolean];
- Tipe data Floating Point /Real
Tibe data ini meliputi bentuk
bilangan desimal. Beberapa bentuk dari tipe data ini adalah:
- Real : memiliki range 2.9 x 10-39 sampai 1.7 x 1038
- Single : memiliki range 1.5 x 10-45 sampai 3.4 x 1038
- Double : memiliki range 5.0 x 10-324 sampai 1.7 x
104392
- Extended : memiliki range 3.6 x 10-4951 sampai 1.1 x
104392
- Currency : memiliki range -922337203685477.5808 sampai
922337203685477.5808
- Comp : memiliki range -263+1 sampai 263-1
Untuk currency, tipe data ini
memiliki kepresisian tinggi yaitu 4 angka dibelakang koma (pembulatan bilangan
real menjadi bilangan desimal dengan 4 angka dibelakang koma). Biasanya
digunakan untuk satuan uang. Dan untuk comp, tipe data ini akan menyimpan nilai
integer (bulat) dari nilai decimal yang masuk (melakukan pembulatan).
Penulisan pada deklarasi variable:
[variable] : [type data floating
point];
Tipe data ini adalah berupa nilai
urutan dari data yang telah dibuat.
Penulisan pada deklarasi variable:
[variable] : (
[data0],[data1],[data2] );
Masing-masing data akan diberikan
nilai integer secara urut. Urutan dimulai dengan nilai urut 0.
Jika ingin melihat nilai integer
dari setiap data maka dengan perintah:
ord( [data1] )
Tipe data ini memungkinkan kita
membuat range sendiri. Dengan perintah:
[variable] : [constant start]..[constant
end];
contoh:
a : 5..10;
Jika kita mendeklarasikan 5 adalah a
maka proses compile akan terus berjalan jika kita mendeklarasikan 15 adalah a
maka proses compile tidak akan berjalan atau berhenti, sehingga terdapat error
pada proses compile sehingga tidak dapat di run.
- Tipe data String dan Character
Tipe data String adalah tipe data
yang merupakan rangkaian dari huruf, angka atau symbol yang tidak mengandung
harga (nilai).
Beberapa tipe data string adalah
sebagai berikut:
- ShortString : Dapat menampung 255 karakter
(ANSIChar)
- AnsiString : Dapat menampung ~231 karakter (ANSIChar)
- WideString : Dapat menampung ~230 karakter
(WideChar)
- String : Dapat menampung 255 karakter (ANSIChar)
Tipe data Character adalah tipe data
yang berkaitan dengan karakter ( huruf, angka, symbol).
Ada beberapa tipe data dari
Character yaitu:
- ANSIChar : Satu karakter ANSI
- WideChar : Satu karakter Unicode
- Char : Sama dengan ANSIChar
Versi 2
Tipe
Data dan Struktur data
Struktur & Organisasi data
Struktur data adalah suatu koleksi atau kelompok data
yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan
terhadapnya. Pengertian struktur data adalah elemen data (mulai dari byte) yang
ditentukan tipe datanya, diorganisasi (dibentuk, disusun, atau dikelompokkan)
dan akan diproses sesuai dengan tipe datanya. Pada definisinya, data dapat
dikategorikan menjadi :
* Tipe data sederhana
atau data sederhana, yang terdiri dari :
-
Data sederhana tunggal, misalnya integer, real, Boolean, serta character.
-
Data sederhana majemuk, misalnya string.
Tipe data ini dapat
diorganisasikan menjadi berbagai struktur data dengan berbagai cara tertentu.
Struktur data, meliputi :
- Struktur
data sederhana, misalnya array dan record.
- Struktur
data majemuk, terdiri atas :
- Linear,
misalnya stack, queue, dan linear linked list.
- Nonlinear,
misalnya pohon binary (binary tree), pohon cari biner (binary search tree),
pohon cari m-way (m-way search tree), general tree, serta graph.
Kedua kategori diatas terutama
diperuntukkan untuk data pada storage utama. Data yang diperuntukan untuk
storage tambahan, memiliki struktur data yang dikenal dengan organisasi
file. Tipe organisasi file diantaranya adalah sebagai berikut :
Sequential
- Record
disimpan dalam file secara beruntun berdasarkan waktu tiba dari pekerjaan yang
diwakilinya, sehingga membentuk first-in-first-out (FIFO), struktur data
seperti ini disebut antrean atau queue.
- Record
yang masuk pertama akan memiliki indeks atau alamat yang lebih kecil daripada
record yang masuk kemudian.
*Indexed Sequential
- Record
disimpan secara berurutan.
- Record
yang masuk terlebih dahulu disimpan pada tempat yang lebih kecil.
- Untuk
melakukan pencarian pada organisasi ini perlu menggunakan pencarian terlebih
dahulu.
- Dengan
organisasi file ini lebih fleksibel karena ukuran file disesuaikan dengan
banyaknya data yang ada pada setiap file.
* Relative
* Multikey
Dua buah struktur data sederhana
adalah array atau larik dan record. Array
merupakan struktur data yang terurut dan homogen, terdiri dari data item yang
membentuk satu kesatuan yang tipe datanya sama. Sedangkan record merupakan
struktur data yang terdiri atas serangkaian data item dengan tipe data yang
berbeda.
Pemakaian struktur data yang tepat
di dalam proses pemrograman, akan mengasilkan algoritma yang lebih jelas dan
tepat, sehingga menjadikan program secara keseluruhan lebih sederhana.
* Suatu struktur data dicirikan
dengan :
1.
Jenis atau satuan data pembentuknya
2.
Hubungan antara satuan tersebut.
Strukutur data terdiri dari satuan
data sederhana yang cocok untuk program yang dipakainya. Hubungan antara satuan
data tersebut membentuk salah satu cirri dari struktur yang bersangkutan. Jika
sebuah struktur data sudah tersedia maka struktur data itu langsung dapat
digunakan. Jika satuan data sederhana dapat membentuk sebuah struktur yang
lebih efisien dalam penggunaan memori, maka struktur data tersebut dapat
disatukan. Struktur tersebut tidak dapat langsung ditujukan kepada sebuah
address, maka dari itu harus melalui proses pemrograman. Jika menggunakan
penyajian secara sequential, maka komponen struktur data ditempatkan ke dalam
relokasi memori secara berurutan
Versi 3
Tipe
Data dan Struktur data
Struktur & Organisasi data
Struktur data adalah suatu koleksi atau kelompok data
yang dapat dikarakterisasikan oleh organisasi serta operasi yang didefinisikan
terhadapnya. Pengertian struktur data adalah elemen data (mulai dari byte) yang
ditentukan tipe datanya, diorganisasi (dibentuk, disusun, atau dikelompokkan)
dan akan diproses sesuai dengan tipe datanya. Pada definisinya, data dapat
dikategorikan menjadi :
* Tipe data sederhana
atau data sederhana, yang terdiri dari :
-
Data sederhana tunggal, misalnya integer, real, Boolean, serta character.
-
Data sederhana majemuk, misalnya string.
Tipe data ini dapat
diorganisasikan menjadi berbagai struktur data dengan berbagai cara tertentu.
Struktur data, meliputi :
- Struktur
data sederhana, misalnya array dan record.
- Struktur
data majemuk, terdiri atas :
- Linear,
misalnya stack, queue, dan linear linked list.
- Nonlinear,
misalnya pohon binary (binary tree), pohon cari biner (binary search tree),
pohon cari m-way (m-way search tree), general tree, serta graph.
Kedua kategori diatas terutama
diperuntukkan untuk data pada storage utama. Data yang diperuntukan untuk
storage tambahan, memiliki struktur data yang dikenal dengan organisasi
file. Tipe organisasi file diantaranya adalah sebagai berikut :
Sequential
- Record
disimpan dalam file secara beruntun berdasarkan waktu tiba dari pekerjaan yang
diwakilinya, sehingga membentuk first-in-first-out (FIFO), struktur data
seperti ini disebut antrean atau queue.
- Record
yang masuk pertama akan memiliki indeks atau alamat yang lebih kecil daripada
record yang masuk kemudian.
*Indexed Sequential
- Record
disimpan secara berurutan.
- Record
yang masuk terlebih dahulu disimpan pada tempat yang lebih kecil.
- Untuk
melakukan pencarian pada organisasi ini perlu menggunakan pencarian terlebih
dahulu.
- Dengan
organisasi file ini lebih fleksibel karena ukuran file disesuaikan dengan
banyaknya data yang ada pada setiap file.
* Relative
* Multikey
Dua buah struktur data sederhana adalah array atau
larik dan record. Array merupakan struktur data yang terurut dan
homogen, terdiri dari data item yang membentuk satu kesatuan yang tipe datanya
sama. Sedangkan record merupakan struktur data yang terdiri atas serangkaian
data item dengan tipe data yang berbeda.
Pemakaian struktur data yang tepat
di dalam proses pemrograman, akan mengasilkan algoritma yang lebih jelas dan
tepat, sehingga menjadikan program secara keseluruhan lebih sederhana.
* Suatu struktur data dicirikan
dengan :
1.
Jenis atau satuan data pembentuknya
2.
Hubungan antara satuan tersebut.
Strukutur data terdiri dari satuan
data sederhana yang cocok untuk program yang dipakainya. Hubungan antara satuan
data tersebut membentuk salah satu cirri dari struktur yang bersangkutan. Jika
sebuah struktur data sudah tersedia maka struktur data itu langsung dapat
digunakan. Jika satuan data sederhana dapat membentuk sebuah struktur yang
lebih efisien dalam penggunaan memori, maka struktur data tersebut dapat
disatukan. Struktur tersebut tidak dapat langsung ditujukan kepada sebuah
address, maka dari itu harus melalui proses pemrograman. Jika menggunakan
penyajian secara sequential, maka komponen struktur data ditempatkan ke dalam
relokasi memori secara berurutan
Tipe data array
Array pada Struktur Data
Selasa, 2011-07-12, 20:33:08
Oleh : Frieyadie
Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan
sebagai pemesanan alokasi memory sementara pada komputer. Array dapat
didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.
- Terurut : Dapat diartikan bahwa elemen tersebut dapat
diidentifikasi sebagai elemen pertama, elemen kedua dan seterusnya sampai
elemen ke-n.
- Homogen : Adalah bahwa setiap elemen dari sebuah Array
tertentu haruslah mempunyai type data yang sama.
Sebuah Array dapat mempunyai elemen
yang seluruhnya berupa integer atau character atau String bahkan dapat pula
terjadi suatu Array mempunyai elemen berupa Array. Karakteristik Array :
- Mempunyai batasan dari pemesanan alokasi memory. (Bersifat
Statis).
- Mempunyai Type Data Sama (Bersifat Homogen)
- Dapat Diakses Secara Acak.
Terdapat 3 hal yang harus diketahui
dalam mendeklarasikan array:
- Type data array
- Nama variabel array
- Subskrip / index array
Jenis Array yang akan dipelajari adalah
:
- Array Dimensi Satu (One Dimensional Array)
- Array Dimensi Dua (Two Dimensional Array)
- Array Dimensi Tiga (Thee Dimensional Array)
Array Dimensi Satu
Array dimensi sastu dapat disebut juga dengan istilah vektor yang menggambarkan
data dalam suatu urutan. Array berdimensi satu berisi kumpulan dari nilai-nilai
data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama.
Nilai-nilai data pada suatu array disebut dengan elemen array. Letak urutan
dari suatu array ditunjukkan oleh suatu index (subscript).
Struktur data record
Sebuah record rekaman disusun oleh
beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu.
Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang
berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat
buah field.
Field 1 Field 2 Field 3 Field 4
Cara pendeklarasian dari record adalah sbb:
• Mendefinisikan tipe dari record (jumlah field,
jenis tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.
SYNTAX
type
nama_record = record
identifier_1 : tipe_data_1;
:
:
identifier_n : tipe_data_n;
end;
var variabel : nama_record;
Contoh.
type
Data_mahasiswa = record
Nama : string;
Usia : integer;
Kota : String;
Kodepos : integer;
end;
Var
x: Data_mahasiswa;
1. Pengaksesan Elemen Record
Nama variable disertai nama field.
x.Nama
x.Usia
x.Kota
x.Kodepos
Contoh.
program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin
waktu.hari :=25;
waktu.bulan:=09;
waktu.tahun:= 1983;
writeln('hari ini adalah
',waktu.hari,':',waktu.bulan,':', waktu.tahun)
end.
2. Pengunaan With … do
Pernyataan with untuk lebih menyederhanakan
pengaksesan field-field pada record. Pemrograman dapat mengakses field cukup
dengan menyebutkan nama field-nya saja. Misalkan pernyataan :
x.Nama
x.Usia
x.Kota
x.Kodepos
menjadi
with x do
Begin
Nama
Usia
Kota
Kodepos
end
Contoh.
program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
end {akhir with}
end.
3. Array dari Record
Suatu array dapat juga berisi record contoh suatu
deklarasi record tanggal.
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
kemudian kita membentuk suatu array dari record ini,
namakan birthdays.
var birthdays : array[1..10] of tanggal;
pernyataan ini akan membentuk suatu array dengan 10
elemen. Dimana tiap elemen adalah sebuah record tanggal, yaitu, terdiri atas
bulan, hari, tahun dengan tipe data Integer.
Digambarkan seperti berikut:
Contoh Pemberian nilai awal dari masing-masing elemen
birthdays:
Birthdays[1].hari :=25;
Birthdays[1].bulan:=09;
Birthdays[1].tahun:=1983;
4. Record di dalam Record
Record bisa berisi record lain sebagai field. Seperti
contoh record tanggal dan jam dikombinasikan menjadi sebuah record saat ini,
type tanggal = record
bulan, hari, tahun : integer;
end;
type waktu =record
jam, menit, detik : integer;
end;
type waktu_ini =record
tanggal_ini : tanggal;
waktu_ini : waktu
end;
Kemudian kita perlu membuat variabel kerja
var saat_ini : waktu_ini;
pemberian nilai akan terjadi seperti di bawah ini:
saat_ini.tanggal.bulan:= 11;
saat_ini.tanggal.hari:= 2;
saat_ini.tanggal.tahun:= 1985;
saat_ini.waktu.jam:= 3;
saat_ini.waktu.menit:= 3;
saat_ini.waktu.detik:= 33;
Struktur data stack
Pengertian Stack pada Struktur Data adalah sebagai tumpukan dari benda, sekumpulan data yang
seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu urutan elemen yang elemennya dapat diambil dan
ditambah hanya pada posisi akhir (top) saja. Stack pada Struktur Data dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak
yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak
tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan
diperoleh sebuah stack kotak yang terdiri dari N kotak.
Stack bersifat LIFO
(Last In First Out) artinya Benda yang terakhir masuk ke dalam stack akan
menjadi yang pertama keluar dari stack
Operasi-operasi
yang biasanya tredapat pada Stack yaitu:
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
Cara
mendefenisikan Stack dengan Array of
Struct yaitu:
1. Definisikan
Stack dengan menggunakan struct
2. Definisikan
konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Buatlah
variabel array data sebagai implementasi stack
4. Deklarasikan
operasi-operasi/function di atas dan buat implemetasinya.
contoh :
//Deklarasi
MAX_STACK
#define MAX_STACK 10
//Deklarasi
STACK dengan struct dan array data
typedef struct STACK{
int top;
char data[10][10];
};
//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
IsFull berfungsi
untuk memeriksa apakah stack sudah penuh atau tidak. 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
IsEmpty berfungsi
untuk memeriksa apakah stack masih kosong atau tidak. Dengan cara memeriksa top
of stack, jika masih -1 maka berarti stack masih kosong.
Push berfungsi
untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack (yang
ditunjuk oleh TOS).
Tambah satu
(increment) nilai top of stack lebih dahulu setiap kali ada penambahan
elemen stack.
Asalkan stack
masih belum penuh, isikan data baru ke stack berdasarkan indeks top of stack
setelah diincrement sebelumnya.
Pop berfungsi
untuk mengambil elemen teratas (data yang ditunjuk oleh TOS) dari stack.
Ambil dahulu
nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang
akan dipop, baru dilakukan decrement nilai top of stack sehingga jumlah elemen
stack berkurang.
Printberfungsi untuk
menampilkan semua elemen-elemen stack dengan cara looping semua nilai array
secara terbalik, karena kita harus mengakses dari indeks array tertinggi
terlebih dahulu baru ke indeks yang kecil.
Operasi Push
void Push (NOD **T,
char item)
{
NOD *n;
n=NodBaru (item);
n->next=*T;
*T=n;
}
Operasi Pop
char Pop (NOD
**T)
{
NOD *n; char item;
if (!StackKosong(*T)) {
P=*T;
*T=(*T)->next;
item=P->data;
free(P);
}
return item;
}
create berfungsi untuk membuat sebuah stack baru yang masih
kosong.
spesifikasi:
tujuan :
mendefinisikan stack yang kosong
input : stack
syarat awal :
tidak ada
output stack :
- (kosong)
syarat akhir :
stack dalam keadaan kosong