LOGIKA ALGORITMA Pertemuan 9 By: Augury
Linear Array Linear Array (biasa disebut Array) adalah salah satu bentuk struktur data yang bersifat Linear (continue). Nilai data Array harus homogen (bertipe data sama). Array merupakan koleksi data dimana setiap elemen memakai nama yang sama dan bertipe sama dan setiap elemen diakses dengan membedakan index array-nya. ARRAY BERDIMENSI SATU Representasi (Pemetaan) di memori Memori komputer untuk pemetaan linear array dibentuk secara linear pula. Memori memiliki alamat (address), ibarat suatu komplek perumahan. Sebagai identifikasi, maka rumah-rumah tsb diberi nomor yang urut dalam pola yang tertentu (misalnya dari kecil ke besar). Pemetaan di memori juga berfungsi sebagai identifikasi letak data, agar kelak data tsb dapat diambil kembali, maka akan dengan tepat ditemui data tersebut.
Array Dimensi Satu Banyaknya alamat di memori tergantung dari jenis komputer yang digunakan, misalnya dari alamat 000000 hingga FFFFFF (dalam sistem bilangan Hexadesimal). Setiap alamat dapat ditempati oleh data sebesar satu byte. Ketika kita memasukkan data baru, maka komputer akan mencatat dimana data itu disimpan. Elemen data pertama yang disimpan dalam alamat memori disebut dengan Base Address (B). *** Jika kita memiliki 20 nilai data dalam variabel ber-subscript A yang masing-masing memerlukan 8 byte data dan base addressnya di 1000 berada di alamat berapakah mulainya nilai data A yang ke-18 disimpan? Berikut gambaran pemetaan data A di memori
Array Dimensi Satu Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori. 1008 1024 1040 1056 1072 1088 A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) A(9) A(10) A(11) 1000 1016 1032 1048 1064 1080 1104 1120 1136 1152 A(12) A(13) A(14) A(15) A(16) A(17) A(18) A(19) A(20) 1096 1112 1128 1144 1160
Formula Perhitungan Alokasi Memory Array Kita dapat membuat rumusannya, yaitu : AD = B + (SK-1) * LD Keterangan : AD = Posisi alamat awal dari nilai data yang akan dicari B = Base Address SK = Subscript ke berapa yang akan dicari LD = Lebarnya data yang dapat disimpan di setiap alamat memori AD = B + (SK-1) * LD AD = 1000 + (18-1) * 8 AD = 1000 + 17 * 8 AD = 1000 + 136 AD = 1136
Array dengan C++ DEKLARASI ARRAY DENGAN C++ Perlu diperhatikan bahwa C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Berikut adalah contoh variabel bernama C yang mempunyai 5 (lima) lokasi memori yang semuanya bertipe int. C[0] - 45 C[1] 6 C[2] 0 C[3] 72 C[4] 1543 Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama ( C ) dan nomor indeks yang dituliskan didalam tanda kurung siku [ ] Sebagai contoh : 72 adalah nilai dari C [3]. Nilai indeks merupakan suatu ekspresi.
Array dengan C++ DEKLARASI ARRAY DENGAN C++ Variabel array dideklarasikan dengan mencantumkan tipe dan nama variabel yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variabel array C diatas adalah : int C[5] Perlu diperhatikan bahwa C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variabel array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya : int C[5] = { - 45, 0, 6, 72, 1543 } Berarti setiap lokasi memori dari variabel array C langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Contoh: Array dimensi satu dengan C++ #include <stdio.h> int main () { int square[100]; int i; /*loop index */; int k; /*the integer */ } /*calculate the squares */ for (i=0;i<10;i++){ k=i+1; square [ i ]=k*k; printf( \n pangkat dari %d adalah %d, k, square[ i ]); } return 0;
Contoh: Array dengan C++ #include <stdio.h> #define dsize 40 #define fsize 11 main() { int indeks,jawaban; int respon[dsize]={1,2,6,4,8,5,9,7,8,10,1,6,3,8,6,10,3,8,2,7, 6,5,7,6,8,6,7,5,6,6,5, 6,7,5,6,4,8,6,8,10}; int freq[fsize]={0}; for(indeks=0;indeks<=dsize-1;indeks++) ++freq[respon[indeks]]; printf("%s%17s\n","rating","frekuensi"); } for(jawaban=1;jawaban<=fsize-1;jawaban++) printf("%6d%17d\n",jawaban,freq[jawaban]); return 0;
Latihan a) Jika kita memiliki 25 nilai data dalam variabel ber-subscript A yang masing-masing memerlukan 8 byte data dan base addressnya di 100 berada di alamat berapakah mulainya nilai data A yang ke-23 disimpan? b) Jika kita memiliki 35 nilai data dalam variabel ber-subscript B yang masing-masing memerlukan 4 byte data dan base addressnya di 1500 berada di alamat berapakah mulainya nilai data A yang ke-33 disimpan? c) Jika kita memiliki 75 nilai data dalam variabel ber-subscript C yang masing-masing memerlukan 10 byte data dan base addressnya di 900 berada di alamat berapakah mulainya nilai data A yang ke-65 disimpan? 1. Buatlah perhitungannya dengan rumus! 2. Buatlah gambarannya!
Thank s