RECORD Denny Agustiawan,M.pd STRUKTUR DATA RECORD Denny Agustiawan,M.pd STMIK Asia Malang – 2011
Record RECORD, 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) Contoh: 1: var 2: R: record 3: 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 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: TYPE 2: Mhs = Record 3: Nama : String[20]; 4: Alamat : String[40]; 5: Umur : Byte; 6: END; 7: VAR 8: Data: ARRAY [1..10] of Mhs;
Array of Record (2) Jika alamat awal elemen pertama array adalah 1000, di mana kah lokasi field Alamat untuk elemen Data[4] Langkah pengerjaan: menentukan ukuran 1 record ukuran 1 record = 21 + 41 + 1 = 63 byte menentukan lokasi elemen Data[4] lokasi Data[4] = 1000 + (4-1) * 63 = 1000 + 189 = 1189 menentukan lokasi alamat untuk elemen Data[4] lokasi alamat untuk elemen Data[4] = 1189 + 21 = 1210
Contoh Soal Cari alamat dari Secara RMO dan CMO dgn Alamat awal = 1000 TYPE tPegawai = RECORD Nama : STRING[20]; Alamat : STRING[30]; Usia : Byte; Gaji : Real; Status : Char; END VAR A : 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 RMO L = Lo + {(i-l1) * (u2 – l2 + 1) + (j – l2)} * c = 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 CMO L = Lo + {(i-l1) + (j-l2) * (u1 – l1 + 1)} * c = 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 Soal Diberikan segmen program berikut : 1: Type 2: tNRP = RECORD 3: angkatan : integer; 4: jurusan : byte; 5: counter : integer; 6: END; 7: tAlamat = RECORD 8: alamat : string[30]; 9: kota : string[20]; 10: END; 11: tMhs = RECORD 12: 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]