Sekolah Tinggi Manajemen Informatika dan Komputer PERTEMUAN KE-4 STRUKTUR DATA ARRAY Sekolah Tinggi Manajemen Informatika dan Komputer (STMIK) Palangka Raya
Pemetaan Array ke Memori Kasus: Array Dimensi 1 Array A(1:5) Array A (dimensi 1) dipetakan ke memori mulai alamat 32004 (Base address). Kebutuhan memori tiap elemen (S) = 1 byte. 1 2 3 4 5 A F S E L Memori A F S E L … 32002 32003 32004 32005 32006 32007 32008 32009 32010 32011 32012 32013 32014 Alamat awal elemen A[i] di memori dihitung sbb : B + (i – L) * S Contoh: Elemen A[4] alamat awalnya di memori adalah: 32004 + (4 – 1) * 1 = 32004 + 3 * 1 = 32007
Pemetaan Array ke Memori Kasus: Array Dimensi 1 Array X(-2:2) Array X (dimensi 1) dipetakan ke memori mulai alamat 32004 (Base address). Kebutuhan memori tiap elemen (S) = 2 byte. -2 -1 1 2 10000 22000 9000 65000 12000 Memori 10000 22000 9000 65000 12000 … 32002 32003 32004 32005 32006 32007 32008 32009 32010 32011 32012 32013 32014 Alamat awal elemen X[i] di memori dihitung sbb : B + (i – L) * S Contoh: Elemen X[1] alamat awalnya di memori adalah: 32004 + (1 – (-2)) * 2 = 32004 + 3 * 2 = 32010
Pemetaan Array ke Memori Kasus: Array Dimensi 2 Ada 2 metode pemetaan array dimensi 2 ke memori: Row major order, yaitu memetakan elemen-elemen array ke memori secara baris demi baris. Column major order, yaitu memetakan elemen-elemen array ke memori secara kolom demi kolom. Memori Memori
Pemetaan Array ke Memori Kasus: Array Dimensi 2 Array A(1:3,1:4) Array A (dimensi 2) dipetakan ke memori mulai alamat 500000(Base address) dgn metode row major order. Kebutuhan memori tiap elemen (S) = 1 byte. 1 2 3 4 1 2 3 A B C D E F G H I J K L Memori A B C D E F G H I J K L … 500000 500001 500002 500003 500004 500005 500006 500007 500008 500009 500010 500011 500012 Alamat awal elemen A[i,j] di memori dihitung sbb : B + (i-L1) * (U2-L2+1) * S + (j-L2) * S Contoh: Elemen A[2,3] alamat awalnya di memori adalah: 500000 + (2-1)*(4-1+1)*1 + (3-1)*1 = 500000 + 4 + 2 = 500006
Pemetaan Array ke Memori Kasus: Array Dimensi 2 Array X(0:2,-1:2) Array X (dimensi 2) dipetakan ke memori mulai alamat 500000(Base address) dgn metode column major order. Kebutuhan memori tiap elemen (S) = 1 byte. -1 1 2 1 2 A B C D E F G H I J K L Memori A E I B F J C G K D H L … 500000 500001 500002 500003 500004 500005 500006 500007 500008 500009 500010 500011 500012 Alamat awal elemen A[i,j] di memori dihitung sbb : B + (j-L2) * (U1-L1+1) * S + (i-L1) * S Contoh: Elemen A[1,1] alamat awalnya di memori adalah: 500000 + (1-(-1))*(2-0+1)*1 + (1-0)*1 = 500000 + 2*3 + 1 = 500007
Pemetaan Array ke Memori Kasus: Array Dimensi n Bagaimana menghitung alamat awal elemen A[i1,i2,i3,…,in] jika array dimensi n dipetakan ke memori ?
Pemetaan Array ke Memori Kasus: Array Segitiga Atas B C D E F G H I J K L M N O … A B C D E F G H I J K L M N O 40000 40001 40002 40003 40004 40005 40006 40007 40008 40009 40010 40011 40012 40013 40014 40015 … Array segitiga atas A dipetakan ke memori dengan base address = 40000. Kebutuhan memori tiap elemen (S) = 1 byte. Alamat awal elemen A[i,j] di memori dihitung sbb : B + ((i-1)*N+j - i*(i-1)/2 - 1) * S Contoh: Elemen A[3,4] alamat awalnya di memori adalah: = 40000 + ((3-1)*5+4 - 3*(3-1)/2 - 1) * 1 = 40000 + (2*5 + 4 – 3 * 2/2 - 1) * 1 = 40000 + (10+4-3*1 - 1)*1 = 40000 + 14 – 3 – 1 = 40010
Pemetaan Array ke Memori Kasus: Array Segitiga Bawah … A B C D E F G H I J K L M N O 40000 40001 40002 40003 40004 40005 40006 40007 40008 40009 40010 40011 40012 40013 40014 40015 … A B C D E F G H I J K L M N O Array segitiga bawah A dipetakan ke memori dengan base address = 40000. Kebutuhan memori tiap elemen (S) = 1 byte. Alamat awal elemen A[i,j] di memori dihitung sbb : B + (i*(i-1)/2 + j - 1) * S Contoh: Elemen A[4,3] alamat awalnya di memori adalah: = 40000 + (4*(4-1)/2 + 3 - 1) * 1 = 40000 + (4*3/2+3-1) = 40000 + 9 – 1 = 40008
RECORD
JENIS-JENIS DATA Tipe Data Sederhana - Data Sederhana Tunggal : integer, real, boolean, karakter - Data Sederhana Majemuk : string Tipe Data Berstruktur - Struktur sederhana : array, record - Struktur majemuk - Linier : stack (tumpukan), queue (antrian), linear linked list - Non Linier : tree (pohon), graph
Tipe RECORD Record adalah koleksi satuan data yang heterogen. Satuan data sering disebut field. Field diacu dengan menggunakan nama field-nya. Contoh: Data seorang mahasiswa terdiri atas: MHS: Nama : string NIM : string Usia : byte Menikah : boolean Tinggi_cm : word
Tipe RECORD Identifikasi suatu record dilakukan dengan menentukan suatu field yang nilainya unik, artinya tidak boleh ada yang nilainya sama. Field seperti ini disebut key field. Misalnya, untuk record mahasiswa, biasanya dipakai NIM sebagai key field. Koleksi record yang sama struktur fieldnya disebut file atau berkas.
Tipe RECORD Suatu field dapat bertipe data record juga. Contoh : MHS: Nama : t_NAMA NIM : string t_NAMA : NamaDepan : string NamaBelakang : string
Tipe RECORD Contoh cara mengacu field suatu record. MHS : Nama : t_NAMA NIM : string Variabel Mhs_STMIK bertipe MHS. Mhs_STMIK.NIM Mhs_STMIK.Nama.NamaDepan Mhs_STMIK.Nama.NamaBelakang
Tipe RECORD Pemetaan Tipe Record ke Memori MHS: Nama : string NIM : string Usia : byte Menikah : boolean Tinggi_cm : integer . Nama NIM Usia Menikah Tinggi_cm
Gabungan Struktur Record dan Array Contoh kasus Data mahasiswa terdiri atas berbagai tipe. Nama : STRING NIM : STRING TTL : STRING Alamat : STRING IPK : REAL Tinggi badan _cm: INTEGER Berat badan_kg : REAL Jumlah saudara : INTEGER Untuk mencatat data 500 orang mahasiswa maka digunakan tipe Array(1:500) dengan tipe RECORD.
Gabungan Struktur Record dan Array Pada kasus di atas, pendeklarasian struktur datanya sebagai berikut: Tipe MHS: Nama : STRING NIM : STRING TTL : STRING Alamat : STRING IPK : REAL Tinggi badan : REAL Berat badan : REAL Jumlah saudara : INTEGER Tipe DATA (1:500) = (DATA(i)), i=1,2,…,500; DATA(i) bertipe MHS
Gabungan Struktur Record dan Array Dapatkah terjadi sebaliknya, struktur record mengandung tipe array pada field-nya?