170 likes | 484 Views
Pertemuan 1 Data komposit Array. Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mahasiswa dapat menghasilkan program modular yang menggunakan data komposit array dua dimensi. Outline Materi.
E N D
Pertemuan 1Data komposit Array Matakuliah : T0026/Struktur Data Tahun : 2005 Versi : 1/1
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mahasiswa dapat menghasilkan program modular yang menggunakan data komposit array dua dimensi
Outline Materi • Definisi Array • Array 1 dimensi • Array 2 dimensi • Operasi array • Akses elemen array • Pointer array • Array sebagai parameter fungsi
Definisi Array • Elemen array : homogen • Tiap elemen : pasangan indeks dan nilai • Hubungan antar elemen : linear • Akses elemen array : random melalui indeks elemen • Penempatan elemen dalam memory : berurutan, secara logikal dan fisikal • Jumlah indeks menentukan dimensi array Suhu [ i ] → 1 dimensi Suhu [ i ] [ j ] → 2 dimensi
Contoh Array 1 Dimensi int suhu [4]; Jika a base address, maka Address suhu [i] = a + i * sizeof (int)
Array 1 dimensi • Deklarasi : elemen_type a[u0]; • Jumlah elemen u0, Indeks : 0, 1, …u0-1 Address a [i]: a [i] = a + i * sizeof (elemen_type)
Array 2 dimensi Representasi array multidimensi : • RMO : Row Major Order • CMO : Column Major Order Selanjutnya akan dibahas RMO Array 2-d (seperti tabel, terdiri dari baris dan kolom) dianggap sebagai array 1-d, dimana satu elemen array 1-d terdiri dari sejumlah nilai (kolom)
Contoh array 2-dimensi Jika i, j, a adalah indeks row, column, dan base address, maka Address a[ i ][0] = a + i * { 30 sizeof (int) } Address a[ i ][ j ] = address a[ i ][0] + j * sizeof (int) = a + { i * 30 + j } * sizeof (int)
Array 2 Dimensi • Deklarasi : elemen_type a[u0] [u1]; • Jumlah elemen u0 *u1,, • Indeks : [0][0], [0][1], … [0][u1-1], [1][0], [1][1], … [1][u1-1], … , [u0-1][0], [u0-1][1], … [u0-1][u1-1] Address a[ i ][ j ] = a + { i * u1 + j } * sizeof (elemen_type)
Jumlah Elemen Array Array n-dimensi a [u0] [u1] ... [un-1] suhu [10] → u0 =10 → Jumlah elemen = 10 suhu [30][10] → u0 =30 u1 =10 → Jumlah elemen = 300 suhu [365][30][10] → u0 =365 u1 =30 u2 =10 → Jumlah elemen = 109500
Operasi Array • Create int a[10] • Retrieve x = a [i] • Store a[i] = y
Contoh operasi Retrieve dan Update pada Array 2 Array A Array B 2 1 1 0 5 0 5 3 4 3 4 C[ i ] = A[ i ] + B[ n-i+1 ] Array C 2 1 0 5 3 4 Operasi Retrieve ? Operasi Update ? Programming ?
Akses Elemen Array (1) void isi_array (int b[], int n) { int i; for (i=0; i<n; i++) b [i] = i*10; } void main( ) { int bil [7], i; isi_array (bil, 7 ); ubah_array (bil, 7); }
Akses Elemen Array (2) void ubah_array (int *b, int n) { int i; for (i=0; i<n; i++) *(b+i) *= 2; }
Array dan Pointer int bil[7], *b, i, x; b = bil; for (i=0; i<7; i++) printf ("indeks = %d address = %x bil = %d\n", i, b+i, *(b+i)); atau printf ("indeks = %d address = %x bil = %d\n", i, &bil [i], bil [i]);
Akses Array 2-D void cetak_array (int b[ ][N]) void display (int **data) { … data[i][j]… } void main() { int **data; data = new int *[m]; // SET UP THE ROWS for (j = 0; j < m; j++) data[j] = new int [n]; // SET UP THE COLUMN …data[i][j] …
Array sebagai parameter fungsi • Contoh potongan program array: • … • char LeftMost(char S[]) • { return(S[0]); }; • char RightMost(char S[]) • { return(S[Len(S)-1]); }; • void main() • { char MyString[MaxLen); • … • printf(“Leftmost elemen :%c”,LeftMost(MyString)); • printf(“Rightmost elemen :%c”,RightMost(MyString)); • … • };