STRUKTUR DATA
-
Upload
ryder-ward -
Category
Documents
-
view
29 -
download
0
description
Transcript of STRUKTUR DATA
STRUKTUR DATASTRUKTUR DATA
RECORD
Denny Agustiawan,M.pd
STMIK Asia Malang – 2011
RecordRecordRECORD, adalah type data kompleks
yang menyimpan berbagai macam data yang tergabung menjadi satu kesatuan data.
Cara penyimpanan type data record pada memori adalah dengan menyimpan masing-masing fieldnya secara berurutan di dalam memori.
Jumlah memori yang diperlukan oleh type data record sebesar total memori yang dibutuhkan untuk masing-masing fieldnya.
Record (2)Record (2)Contoh: 1: var2: R: record3: Field1 : integer;4: Field2 : real; 5: Field3 : string[10];6: end;
Jumlah memori yang dibutuhkan untuk mengalokasikan variabel tersebut adalah :
2 byte (ukuran field1 = integer) + 6 byte (ukuran field2 = real) + 11 byte (ukuran field3 = string[10])
= 19 byte
ARRAY of RECORD ARRAY of RECORD Type data array of record, cara penyimpanan pada memori sama seperti penyimpanan type data array, hanya saja ukuran 1 elemen = ukuran 1 record
Contoh: 1: TYPE2: Mhs = Record3: Nama : String[20];4: Alamat : String[40];5: Umur : Byte;6: END;7: VAR8: Data: ARRAY [1..10] of Mhs;
Array of Record (2)Array of Record (2)Jika alamat awal elemen pertama array adalah
1000, di mana kah lokasi field Alamat untuk elemen Data[4]
Langkah pengerjaan:
1. menentukan ukuran 1 record2. ukuran 1 record = 21 + 41 + 1 = 63 byte3. menentukan lokasi elemen Data[4]4. lokasi Data[4] = 1000 + (4-1) * 63 = 1000 + 189
= 11895. menentukan lokasi alamat untuk elemen Data[4] 6. lokasi alamat untuk elemen Data[4] = 1189 +
21 = 1210
Contoh SoalContoh SoalTYPE tPegawai = RECORD Nama : STRING[20]; Alamat : STRING[30]; Usia : Byte; Gaji : Real;
Status : Char;END
VARA : ARRAY [10..30,13..25] of tPegawai;
Cari alamat dari ◦ A[15,15]◦ A[19,13]◦ A[20,21]
Secara RMO dan CMO dgn Alamat awal = 1000
Secara RMOSecara RMO
L = Lo + {(i-l1) * (u2 – l2 + 1) + (j – l2)} * c
A[15,15] = 1000 + {(15-10)*(25-13+1) + (15-13)} * 60= 1000 + {5*13+2}*60= 1000 + 67 * 60= 1000 + 4020 = 5020
A[19,13] = 1000 + {(19-10)*(25-13+1) + (13-13)} * 60= 1000 + (9*13) * 60= 1000 + 7020 = 8020
A[20,21] = 1000 + {(20-10)*(25-13+1) + (21-13)} * 60= 1000 + (10*13+8) *60= 1000 + 138 * 60= 1000 + 8280= 9280
Secara CMOSecara CMO
L = Lo + {(i-l1) + (j-l2) * (u1 – l1 + 1)} * c
A[15,15] = 1000 + {(15-10)+(15-13) * (30-10+1)} * 60= 1000 + {5 + 2 * 21} * 60= 1000 + (5+42) * 60 = 1000 + 2820 = 3820
A[19,13] = 1000 + {(19-10)+(13-13) * (30-10+1)} * 60
= 1000 + (9 + 0 * 21) * 60= 1000 + 9 * 60 = 1540
A[20,21] = 1000 + {(20-10)+(21-13) * (30-10+1)} * 60
= 1000 + {10 + 8 * 21} *60= 1000 + 10 + 168 *60= 1000 + 10680= 11680
Latihan SoalLatihan SoalDiberikan segmen program berikut : 1: Type2: tNRP = RECORD3: angkatan : integer;4: jurusan : byte;5: counter : integer;6: END;7: tAlamat = RECORD8: alamat : string[30];9: kota : string[20];10: END;11: tMhs = RECORD12: NRP : tNRP;13: nama : string[30]14: alamat asal : array[1..2] of tAlamat;15: END;16:17: Var i : byte;18: Mhs : array[1..1000] of tMhs;Jika alamat awal pada lokasi 1000, tentukan alamat dari data berikut :
Mhs[5] Field Kota dari alamat asal[2] Mhs[5]Field jurusan Mhs[5]