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
A(1)
1024
A(2)
1000
A(3)
1040
A(4)
A(5)
A(6)
1032
1016
1104
1056
A(7)
1112
A(9)
1128
1088
A(10)
1064
1136
A(12) A(13) A(14) A(15) A(16) A(17) 1096
A(8)
1048
1120
1072
1080
1152
A(18)
A(19) A(20)
1144
A(11)
1160
Formula Perhitungan Alokasi Memory Array Kita Kita dapat dapat membuat membuat rumusannya, rumusannya, yaitu 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
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama (‘C’) dan nomor indeks yang dituliskan didalam tanda kurung siku ‘[ ]’
C[2]
0
Sebagai contoh : 72 adalah nilai dari C [3].
C[3]
72
C[4]
1543
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