Struktur data adalah cara menyimpan atau merepresentasikan data didalam komputer agar bisa dipakai 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.

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.

Larik (Bahasa Inggris: array), dalam ilmu komputer, adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan (kontigu) serta bertipe data sama pula.

Larik dapat diakses berdasarkan indeksnya. Indeks larik umumnya dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat dengan menggunakan perulangan (looping).

Sebuah array dapat dikatakan sebagai suatu himpunan terurut dengan elemen-elemen homogen. Terurut, dimaksudkan bahwa elemen pertama, elemen kedua, dst masing-masing dapat diidentifikasi. Sedangkan homogen berarti masing-masing elemen tersebut mempunyai tipe data yang sama.
Array dapat dikelompokkan atas 2 bagian, yaitu :
      1. Array satu dimensi.
      2. Array multi dimensi.
1.     ARRAY SATU DIMENSI
Bentuk array yang paling sederhana adalah array satu dimensi. Array jenis ini dapat dianggap sebagai sebuah vektor. Suatu array A berdimensi satu dengan N buah elemen, secara fisik dapat digambarkan sebagai berikut :
A(1)
A(2)
…..
A(I)
…..
A(n)
Indeks dari elemen suatu array menyatakan posisinya dalam urutan secara umum suatu array A berdimensi satu dengan elemen berjenis data T yang mempunyai indeks dari L s/d U dituliskan sbb: A(L:U) = {A(I)}
Untuk I = L, L+1, L+2, …………….., U-1, U, dimana masing-masing  A(I) berjenis data T.
L disebut sebagai batas bawah dari indeks A dan U sebagai batas atas dari A.
Jumlah elemen dalam suatu array disebut sebagai range.
Range dari array A(L:U) adalah U – L + 1.
Range dari array B(1:N) adalah N – l + 1= N.
2.    ARRAY MULTI DIMENSI
Array dua dimensi adalah salah satu contoh dari array jenis multi dimensi (dimensi banyak). Array ini elemen-elemennya merupakan array pula. Bentuk yang dianggap dapat mewakili array dua dimensi ini adalah matriks.  Suatu array B yang terdiri atas M elemen dimana masing-masing elemennya berupa array dengan N elemen, dapat digambarkan sebagai suatu tabel MxN, dengan bentuk sbb:
1
2
3
J
N
1
2
3
I
M
Array ini dituliskan :   B(1:M,1:N) = {B(I,J)},
                                                Untuk  I = 1,2,…,M
                                                            J = 1,2,…,N
Jumlah elemen (range) dari array B ini adalah M x N.
Secara umum, array 2 dimensi B dengan batas bawah indeks pertama L1, batas atas indeks pertama U1, batas bawah indeks kedua L2 batas atas indeks kedua U2, dituliskan:
            B(L1 : U1, L2 : U2) = {B(I,J)}
            Untuk L1 < I < U1 dan L2 < J < U2
Jumlah elemen baris dari array B adalah : ( U2 – L2 + 1 )
Jumlah elemen kolom dari array B adalah : ( U1 – L1 + 1)
Jumlah total elemen array B adalah : (U2 – L2 + 1 )(U1 – L1 + 1)
 CROSS SECTION
Yang dimaksud dengan Cross section dari array 2 dimensi adalah suatu himpunan yang anggotanya adalah elemen-elemen dalam satu baris saja atau satu kolom saja. Notasinya menggunakan *.
Contoh : Misal diberikan array B(1:M,1:N).
        B(4,*) = {B(4,1), B(4,2), …,B(4,N)}
                        B(*,4) = {B(1,4), B(2,4), …,B(M,4)}
 TRANSPOSE
Transpose dari suatu array dua dimensi, adalah suatu array dua dimensi pula dengan menukar posisi indeksnya. Transpose dari array berukuran M x N adalah suatu array berukuran N x M. Transpose dari suatu array dari B dinotasikan dengan BT, dan didefinisikan:     B(I,J) = BT (J,I)
Selanjutnya secara umum, suatu array A berdimensi N dapat dituliskan sbb:
                        A(L1:U1,L2:U2,…,LN:UN)
Jumlah elemen array ini adalah :                                                                                                                                                                                                N
(U1 – L1 + 1)(U2- L2+ 1)… (UN – LN + 1) (UK – LK + 1)
                                                                                                  k=1
Sebagai contoh perhatikan sebuah array berdimensi 3 yang menggambarkan (berisi) jumlah mahasiswa STMIK Asia untuk kelas reguler dan eksekutif.
Array ini dapat digambarkan sbb :
Jika array ini diberi nama Asia, maka bentuknya dapat dituliskan sbb:
            Asia(1:2,1:2, A:E) = {Asia(i,j,k)}
            dimana            I = 1,2 (1 = pria, 2 = wanita)
                                    J = 1,2 (1 = reguler, 2 = eksekutif)
                                    K = A,B,C,D,E (kelas A s/d E)
Seluruh mahasiswa reguler dapat ditunjukkan dengan Asia (*,1,*)
sedangkan seluruh mahasiswa eksekutif dapat ditunjukkan dengan Asia (*,2,*)
  DEKLARASI ARRAY DALAM BAHASA PEMROGRAMAN.
Misal diberikan array dengan nama A yang mempunyai 24 elemen dengan masing-masing elemen berjenis data integer, maka deklarasinya dalam bahasa pemrograman adalah sbb:     VAR A : ARRAY [1..24] OF INTEGER;
Dalam mendeklarasikan suatu array ada 3 hal yang harus ada pada deklarasi tersebut, yaitu:
1.      Nama array
2.      Range dari indeksnya
3.      Tipe elemen-elemen datanya
 PEMETAAN ARRAY KE STORAGE
Ada beberapa cara untuk menyatakan suatu array pada storage, tetapi konsepnya hampir sama dengan apa yang ada pada data fungsi.
 
ARRAY SATU DIMENSI
Misal diberikan array satu dimensi dengan nama A yang mempunyai indeks 1 s/d N, yaitu A(1:N). Secara fisik array A(1:N) dapat digambarkan sbb:
A(1)
A(2)
A(3)
A(I)
A(N)
Yang perlu kita ketahui disini adalah letak elemen ke I dari array A(1:N), atau letak masing-masing elemen array pada storage. Letak suatu elemen biasanya disebut sebagai starting address atau starting location atau base location. Untuk mengetahui starting address suatu elemen array, perlu diketahui lebih dulu antara lain :
  1. Starting address dari array yang bersangkutan.
  2. Ukuran masing-masing elemen array atau ruang yang digunakan masing-masing elemen array.
Misal starting address dari array A(1:N) adalah B dan masing-masing elemennya menggunakan ruang sebanyak  S bit. Maka starting address elemen ke I dari array A(1:N) adalah           : B + ( I – 1 ) * S
Hal ini disebabkan ada (I – 1) elemen array A, masing-masing dengan ukuran atau panjang S secara fisik mendahului elemen ke I pada array tersebut.
Secara umum dapat dikatakan bahwa :
      Starting address elemen ke I dari array A(L:U) adalah (B +( I – L ) * S jika starting address array A adalah B dan masing-masing elemenya menggunakan ruangan sebanyak S bit.
ARRAY MULTI DIMENSI
Prinsip yang digunakan disini tetap didasarkan pada array satu dimensi. Oleh karena itu untuk array multi dimensi, linierisasi-nya dapat dilakukan berdasarkan baris atau kolom.
Contoh : Misal diberikan array  A(1:3,1:4). Array ini secara fisik dapat digambarkan sbb :
1
2
3
4
1
2
3
Linierisasi menurut baris akan mengakibatkan bentuk diatas menjadi :
1
2
3
Jika B adalah starting address array A(1:3,1:4) dan S adalah ruang yang digunakan oleh masing-masing elemennya, maka starting address dari elemen A(I,J) adalah :  B + (I-1) * 4 * S + (J-1) * S
Hal ini karena ada ( I – 1) baris, masing-masing dengan panjang 4 * S yang mendahului baris dimana elemen A(I,J) berada dan ada (J-1) elemen masing-masing dengan panjang S yang mendahului elemen A(I,J) pada baris ke I.
Contoh  Dari array A(1:3,1:4) akan dicari starting adress elemen A(2,4).
baris
1
baris
2
baris
3
                                                                                    A(2,4)
Starting address A(2,4)           = B + (2 – 1) * 4 * S + (4 – 1) * S
                                                = B + 7 * S
Secara umum elemen A(I,J) dari array A(l:U,L:U) mempunyai starting address :
                                    B + (I-L1) * (U2-L2+1) * S + (J-L2) * S
Alternatif lain untuk linierisasi adalah dengan menggunakan cara kolom jika diberikan array A(1:3,1:4) diatas, maka bentuk linierisasinya :
Jika B adalah starting address dari array A(1:4,1:6) dan S adalah ruang digunakan untuk masing-masing elemennya, maka starting address dari A(I,J) adalah :
                                    B + (J – 1) * 4 * S + (I – 1) * S
Hal ini disebabkan ada (J – I) kolom masing-masing dengan 4 elemen yang panjangnya s yang mendahului kolom tempat elemen A(I,J) berada dan ada (I-1) elemen masing-masing dengan panjang S yang mendahului elemen A(I,J) pada kolom ke J.
Secara umum dapat dikatakan bahwa elemen A(I,J) dari array A(L1:U1,L2:U2), menurut kolom mempunyai starting address : B + (J-L2) * (U1-L1+1) * S + (I-L1) * S
Jika starting adress array tersebut adalah B dan masing-masing elemenya menggunakan ruang sebanyak S bit.
Contoh : Misal diberikan array K(1:4,1:6) dengan starting address B dan masing-masing elemenya menggunakan ruang S bit. Maka starting adress dari elemen k(2,4) adalah :
                                    = B + (4 – 1) * (4-1+1)  * S + (2 – 1) * S
                                    = B + 3 * 4* S + 1 * S
                                    = B + 13 * S

Larik dalam beberapa bahasa pemrograman

Bahasa Pascal

Larik dalam bahasa Pascal dapat didefinisikan dengan indeks awal dan indeks akhirnya.

Contoh:

program larik;
var arr: array[1..10] of integer;  //larik dengan indeks awal 1 dan indeks akhir 10
begin
  arr[1] := 5; //memasukkan nilai ke indeks 1
  writeln(arr[i]); //mencetak angka 5
end.

Bahasa C

Larik dalam bahasa C selalu dimulai dari indeks 0. Larik dapat didefinisikan secara statik atau dinamik. Jika didefinisikan statik, ukuran larik akan tetap dari awal program hingga akhir program. Jika didefinisikan dinamik, ukuran larik dapat berubah selama program berjalan karena memesan tempat pada memori heap. Proses pemesanan tempat pada memori disebut dengan alokasi. Sedangkan proses pembebasan memori yang sudah dipesan disebut dengan dealokasi.

Contoh larik statik:

#include <stdio.h>
int main(){
  int arr[10]; //indeks awal 0 dan indeks akhir 9
  arr[0] = 5;
  printf("%d\n", arr[0]);
}

Contoh larik dinamik:

#include <malloc.h>
int main(){
  int * arr;
  arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori
  arr[0] = 5;
  free(arr);                              //menghancurkan larik. Memori pada heap dibebaskan
  arr = (int *) malloc(5 * sizeof(int));  //memesan 5 tempat baru pada memori
  free(arr);                              //di akhir program jangan lupa untuk menghancurkan larik dinamik
}

Bahasa Java

Dalam bahasa Java tipe data larik direpresentasikan sebagai sebuah objek khusus. Karena itu pada bahasa Java larik yang dibuat selalu bersifat dinamik. Namun walaupun bersifat dinamik, larik pada bahasa Java tidak perlu dihancurkan karena proes penghancuran dilakukan secara otomatis melalui suatu prosedur yang disebut dengan Pengumpulan sampah (Inggris: Garbage Collecting).

Sama seperti bahasa C, indeks larik selalu dimulai dari 0.

Contoh:

public class larik {  
  public static void main(String args[]) {
    int[] arr = new arr[10];
    arr[0] = 5;
    System.out.println(arr[0]); 
  }  
}

PHP

Sama seperti di JAVA larik di PHP juga merupakan sebuah object lebih tepatnya lagi map terorder. Ada dua tipe larik di PHP, indexed array (simple array) dan associated array (key=>value array). Di PHP, element larik bisa berupa string, Bilangan, boolean, dan semua tipe data primitive lainnya, termasuk larik juga bisa menjadi element larik lainnya.

Cara medefinisikan larik:

#mendefinisikan array kosong 
$larik = array();

Contoh indexed array (simple array):

$jam = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
$hari = array('senin', 'selasa', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu');

Contoh associated array:

$bulan = array('1'=>'January', '2'=>'February', '3'=>'Maret', '4'=>'April');

$komponenKalender = array(
  'bulan'=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),
  'hari' => array('senin', 'selasa', 'selasa', 'rabu', 'kamis', 'jumat', 'sabtu')
);
 RECORD
Record adalah himpunan dari elemen-elemen yang heterogen. Heterogen adalah elemen-elemennya dapat mempunyai tipe data yang berbeda.
Beberapa hal yang perlu diketahui dalam record sbb:
1.      ELEMENTARY ITEM adalah suatu field yang tidak mempunyai subfield.
2.      GROUP ITEM adalah suatu field yang mempunyai subfield.
3.      TUPEL adalah gabungan atribut yang menjadi suatu informasi dari proses                       basis data.
Contoh RECORD :
      PEGAWAI
Job Tittle
Emp. No
Pay Rate
Name
Telp. No
Analys
00012724
1.000.000
Bob Geldof
7801725
Programmer
00023451
   800.000
Ceu Rika
7521475
( String(20) )
( String(8) )
( Real(9,2) )
( String(25) )
( String(7) )
      Record-record yang tipenya sama : FILE.
Untuk menyatakan suatu data dalam record yang mempunyai identifikasi yang khusus, maka harus punya 1 field khusus yang disebut KEY (kunci field).
 DEKLARASI RECORD DALAM BAHASA PEMROGRAMAN
            PROGRAM DALAM PASCAL
      Type
            Pegawai = Record;
                                          Job_Tittle : String[20];
                                          Emp_No  : String[8];
                                          Pay_Rate : Real;
                                          Name       : String[25];
                                          Telp_No   : String[7];
                                   End;

 

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.

 

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

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s