ARRAY Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Karakteristik Hubungan antar elemen adalah LINEAR Umumnya letak elemen Array di memory secara physical & logical adalah sama Terdiri dari INDEX dan KOMPONEN, hubungan INDEX dan KOMPONEN adalah one-to-one Semua komponen mempunyai tipe sama (HOMOGENOUS) Cara access: RANDOM Kuliah Minggu ke 12 1
Operasi pada Array Dua operasi dasar terhadap Array adalah: retrieve dan update Retrieve(S,k,i); Mengambil nilai yang ke-i dari Array S dan diassign ke variable k Dalam bahasa C: k = S[i]; Update(S,k,i); Mengubah nilai yang ke-i dari Array S dengan nilai dari variable k Dalam bahasa C: S[i] = k; Array Dimensi Satu pada Bahasa C Definisi dari sebuah array terdiri dari 4 komponen yaitu : 1.Type specifier 2.Identifier (nama array) 3.Operator index ([ ]) 4.Nilai dimensi dalam operator [ ] Sintaks deklarasi array dimensi satu : type nama_array[ukuranarray]; Contoh : int A[10]; Dengan menggunakan contoh deklarasi sebelumnya dapat digambarkan alokasi untuk variabel A Kuliah Minggu ke 12 2
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Elemen-elemen suatu Array diindeks (subscript) mulai dari 0. Dua cara yang ekivalen untuk mengakses unsur ke-i dari suatu array. Misal untuk i=2; A[2] atau *(A+2) A ekivalen dengan &A[0] atau pointer constant ke elemenpertama dari array tersebut. Mengisi data ke elemen array dilakukan dengan menggunakan assignment operator. Contoh : A[6]= 15; A[3]= 27; 27 15 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Bila elemen A[4] hendak ditampilkan di layar monitor, gunakan statemen sbb: printf( %d,a[4]) atau printf( %d\n,*(a+4)); Statement A[2] = A[3] - A[6], menghasilkan : 12 27 15 A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] Kuliah Minggu ke 12 3
Array dapat diinisialisasi secara eksplisit pada saat didefinisikan dan tidak perlu diberikan nilai dimensinya. Contoh: int B[ ] = 1, 2, -4, 8; Contoh inisialisasi array setelah didefinisikan : int A[5]; for (i=0; i<5; i++) A[i]=0; int B[5]; Error B[5]=0,0,0,0,0; Jika array digunakan sebagai parameter dalam suatu fungsi, maka passing parameter harus by location (pointer). Contoh: #include <stdio.h> void cetak_array(int index, int *Array) printf( Array[%d]=%d\n, index, Array[index]); void main() int Array[] = 1, 6, 2, 8, 12; cetak_array (2, Array); Kuliah Minggu ke 12 4
Perhitungan Memori Disimpan sebagai urutan elemen dalam memori Nama array = address elemen pertama array type A[UkuranArray]; jika sizeof(type) = M Array A menempati jumlah memori: M*UkuranArray bytes Compiler menyediakan table disebut dope vector, yang memberi informasi: Address awal A Jumlah elemen array UkuranArray Ukuran tipe M = sizeof(type) Tabel digunakan compiler untuk implementasi fungsi akses untuk identifikasi address dari elemen di memori: Address A[i] = ArrayAccess(A,i,M) = A + i*m String dan Array Dalam bahasa C String adalah Array of character, yang diakhiri dengan null character (null character nilai asciinya=0 atau \0 ). String constant diapit oleh tanda petik dua, sedangkan character constant diapit oleh tanda petik satu. Contoh : a ; /* string */ a ; /* character */ Kuliah Minggu ke 12 5
Inisialisasi array of character: char A[ ]=, R, R, A, Y ; /* 5 elemen */ char B[ ]= ARRAY ; /* 6 elemen */ char C[8]= ARRAY ; /* 8 elemen */ Y Y \0 A[0] A[1] A[2] A[3] A[4] B[0] B[1] B[2] B[3] B[4] B[5] Y \0 C[0] C[1] C[2] C[3] C[4] C[5] C[6] C[7] Pointer dan Array Tipe dari Array adalah pointer constant ke elemen pertama dari Array tersebut. Jadi pointer bisa di-assign untuk menunjuk sebuah Array. Contoh : int Arr[10]; int *ptrarr; ptrarr = Arr; Untuk mengakses elemen ke-i dapat dilakukan dengan cara sbb: ptrarr[i]; Arr[i]; *(ptrarr + i); *(Arr + i); ptrarr = ptrarr +i; *ptrarr; Kuliah Minggu ke 12 6
Pointer dan Array Deklarasi: Type array[ukuranarray]; Type* pptr = array + i; Type *qptr = array + j; Nama array ekuivalen dengan &array[0] pptr++ menambah (satu) pptr untuk menunjuk ke elemen berikutnya dari array. pptr += n menambah (n) pptr untuk menunjuk n elemen berikutnya dimana saat ini ditunjuk. pptr-qptr sama dengan i-j. Pointer dan Array (cont) Sebuah array dimensi satu: Type array[ukuranarray]; array[0] ekivalen dengan *array array[n] ekivalen dengan *(array + n) Kuliah Minggu ke 12 7
Aritmetika Pointer (dlm( Array) array: 0x200C 0x2010 0x2014 0x2018 0 1 2 3 4 pptr: 0x2004 qptr: 0x2000 NULL float array[5]; float* pptr = array; float* qptr = NULL; array: 0x200C 0x2010 0x2014 0x2018 0 1 2 3 4 pptr: 0x2004 0x200C qptr: 0x2000 NULL float array[5]; float* pptr = array; float* qptr = NULL; pptr++; /* pptr sekarang alamat: &array[1] */ Kuliah Minggu ke 12 8
array: 0x200C 0x2010 0x2014 0x2018 0 1 2 3 4 pptr: 0x2018 0x2004 qptr: 0x2000 NULL float array[5]; float* pptr = array; float* qptr = NULL; pptr++; /* pptr = &array[1] */ pptr += 3; /* pptr sekarang alamat: &array[4] */ array: 0x200C 0x2010 0x2014 0x2018 0 1 2 3 4 pptr: 0x2018 0x2004 qptr: 0x2000 0x2010 float array[5]; float* pptr = array; float* qptr = NULL; pptr++; /* pptr = &array[1] */ pptr += 3; /* pptr = &array[4] */ qptr = array + 2; /*qptr sekarang = alamat &array[2]*/ Kuliah Minggu ke 12 9
array: 0x200C 0x2010 0x2014 0x2018 0 1 2 3 4 pptr: 0x2018 0x2004 qptr: 0x2000 0x2010 float array[5]; float* pptr = array; float* qptr = NULL; pptr++; /* pptr = &array[1] */ pptr += 3; /* pptr = &array[4] */ qptr = array + 2; /* qptr = &array[2] */ printf( %d\n, pptr-qptr); Pointer dan String Dalam bahasa C String adalah Array of character, yang diakhiri dengan null character, dan Array punya tipe sbg pointer constant ke elemen pertama, berarti pointer juga bisa di-assign ke string. Contoh: char str[10] = Hello ; char *ptrstr; ptrstr = str; Untuk mengakses character e bisa digunakan cara sbb: str[1]; ptrstr[1]; *(ptrstr+1); *(str+1); ptrstr= ptrstr+1; *ptrstr; Kuliah Minggu ke 12 10
char* strcpy(char* s, char* t) int i = 0; while (t[i]!= 0) s[i] = t[i]; i++; s[i] = '\0'; return s; String, Fungsi & Pointer Char *strcpy(char* s, char* t) char* p = s; while (*p!= 0) *p = *t; p++; t++; return s; Tugas / Latihan : 1. Buatlah program dengan fungsi sbb: fungsi untuk meng-input 10 bilangan ke dalam array fungsi untuk mencari bilangan terbesar dalam array tersebut fungsi untuk mencari bilangan terkecil dalam array tersebut fungsi untuk menampilkan : - 10 bilangan tersebut - Bilangan terbesar dan terkecil 2. Buat program untuk: mengambil string dari keyboard membalik susunan karakter dalam string tsb menampilkan string yg sudah dibalik ke layar monitor Contoh: string yg di-input : KASUR Ditampilkan : RUSAK Kuliah Minggu ke 12 11