Pengantar Pemrograman Materi: Array Fakultas Teknik Sipil & Lingkungan
Definisi Array [1] Array adalah suatu set dari alokasi data, dengan jenis data yang sama untuk tiap alokasi tersebut. Setiap alokasi data disebut sebagai elemen dari array. Untuk mendeklarasikan sebuah array, tuliskan jenis data dalam array tersebut, nama array dan diikuti dengan subscript. Subscript disini adalah menyatakan jumlah elemen array yang dituliskan di dalam kurung siku Contohnya, int IntArray[25]; sebagai deklarasi sebuah array yang memiliki 25 alokasi data (elemen) dengan jenis data integer bernama IntArray.
Definisi Array [2] perbedaan deklarasi dengan variabel biasa int a hanya 1 nilai untuk variabel a int a[10] terdapat 10 slot nilai untuk variabel a int a[7] = {1,2,3,5,43,5,6} Arrays dapat menggunakan nama apapun (yang dapat digunakan dalam bahasa C), selama tidak memiliki nama yang sama dengan variabel tunggal lain.
Awal dan akhir array [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] Dalam bahasa C, array dimulai dari 0. Maka, bila jumlah array-nya 10, terdapat variabel a[0], a[1], ... a[9] Array tidak dapat diberikan nilainya secara sekaligus, dan array tidak dapat dioperasikan secara langsung. Contoh yg salah: a = 0; /* IF a is variable with array, then it is WRONG */ int b[10]; b = a; /* WRONG */
Array dan loop Untuk memberikan nilai atau mengoperasikan suatu array, diperlukan loop: for(int i = 0; i < 10; i = i + 1) a[i] = 0; for(i = 0; i < 10; i = i + 1) b[i] = a[i];
Array initialization [1] Meskipun tidak dimungkinkan mengoperasikan array secara langsung, namun pemberian nilai dapat dilakukan int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; Bila initializers-nya lebih sedikit dari elements array, sisanya akan dianggap bernilai 0. int a[10] = {0, 1, 2, 3, 4, 5, 6}; nilai a[7], a[8], dan a[9] dianggap 0.
Array initialization [2] Bila terdapat initializer, maka dimensi array dapat diabaikan int b[] = {10, 11, 12, 13, 14}; would declare, define, and initialize an array b of 5 elements (i.e. just as if you'd typed int b[5]). Only the dimension is omitted; the brackets [] remain to indicate that b is in fact an array. Untuk array yang berupa karakter, initializer dapat berupa string constant: char s1[7] = "Hello,"; char s2[10] = "there,"; char s3[] = "world!";
Contoh Deklarasi Array [1] #include <stdio.h> main () { int n[10]; for (int i=0; i<10; i++) n[i] = 0; printf("Elemen \t Nilai\n"); for (i=0; i<10; i++) printf("%d \t %d\n", i, n[i]); return 0; }
Contoh Deklarasi Array [2] #include <stdio.h> main () { int n[10] = {32, 27, 64, 18, 95, 14, 90}; printf("Elemen \t Nilai\n"); for (int i=0; i<10; i++) printf("%d \t %d\n", i, n[i]); return 0; }
Contoh Deklarasi Array [3] #include <stdio.h> main () { int n[] = {32, 27, 64, 18, 95}; printf("Elemen \t Nilai\n"); for (int i=0; i<10; i++) printf("%d \t %d\n", i, n[i]); return 0; }
Const Contoh: // Dimensioning arrays with const #include <stdio.h> main () { const int arraySize = 5; int n[arraySize]; printf("Elemen \t Nilai\n"); for (int i=0; i < arraySize; i++) { n[i] = 2 + 2 * i; printf("%d \t %d\n", i, n[i]); } return 0;
Enum [1] Contoh: // Dimensioning arrays with consts and enumerations #include <stdio.h> int main() { enum WeekDays {Sun,Mon,Tue,Wed,Thu,Fri,Sat,DaysInWeek}; int ArrayWeek[DaysInWeek] = {10, 20, 30, 40, 50, 60, 70}; printf("The value at Tuesday is: “) printf(“%d”,ArrayWeek[Tue]); return 0; Output: The value at Tuesday is: 30
Enum [2] Baris ke-6 menyatakan enumeration (enum) bernama WeekDays, dengan 8 elemen. Sunday = 0 dan DaysInWeek = 7. Baris ke-10 menggunakan enumerated constant Tue sebagai offset/lokasi dalam array. Karena Tue = 2 (elemen ke-3 dalam array), maka DaysInWeek[2] memberikan hasil 30.
Penjumlahan array #include <stdio.h> main () { const int arraySize = 12; int n[arraySize] = {1,3,5,7,9,4,5,6,44,6,88,45}; int total = 0; for (int i=0; i < arraySize; i++) total = total + n[i]; printf("Total nilai = %d\n", total); printf ("Rata-rata = %d\n", total/arraySize); return 0; }
Pengurutan (shorting) array [1] Metoda/algoritma yang digunakan di sini adalah metoda gelembung (bubble short) Untuk shorting dari bilangan terkecil ke bilangan terbesar sebanyak n bilangan, dengan metoda ini bilangan terbesar akan digeser ke paling kanan. Selanjutnya bilangan terbesar ke-2 digeser ke posisi n-1, dst.
Pengurutan (shorting) array [2] include <stdio.h> main () { // blok deklarasi dan penulisan urutan awal const int arraySize = 12; int dummy; int n[arraySize] = {1,96,5,7,9,4,5,6,44,6,88,45}; printf("\nUrutan data awal:\n"); for(int i=0;i<arraySize;i++) { printf("%d, ", n[i]); }
Pengurutan (shorting) array [3] // blok pergeseran bilangan terbesar for(i=0; i< arraySize-1; i++) { for(int j=0; j<arraySize-i; j++) { if(n[j]>=n[j+1]) { dummy=n[j]; n[j]=n[j+1]; n[j+1]=dummy; } else;
Pengurutan (shorting) array [4] // blok print out hasil shorting printf("\n\nUrutan data dari kecil ke besar:\n"); for(i=0;i<arraySize;i++) { printf("%d, ", n[i]); } printf("\n\nUrutan data dari besar ke kecil:\n"); for(i=arraySize-1;i>=0;i--) { printf("\n\n"); return 0;
Multidimension array Dimungkinkan untuk memiliki array dengan dimensi lebih dari satu. Setiap dimensi direpresentasikan oleh subscript. Array dua dimensi memiliki dua subscript, 3 dimensi memiliki 3 subscript, dst. Array dapat berdimensi berapapun, tapi umumnya hanya digunakan satu atau dua dimensi.
Initializing multidimension array Suatu nilai dapat diberikan (assigned) kedalam elemen array dengan urutan array yang terakhir berubah terlebih dahulu ketika array sebelumnya tetap. Maka array: int theArray[5][3] memiliki urutan 3 elemen pertama bagian dari theArray[0]; kemudian 3 elemen berikutnya adalah bagian dari theArray[1]; dst. Untuk meng-initialize array dapat dilakukan dengan: int theArray[5][3] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }; Atau untuk kejelasan dapat digunakan tambahan kurung kurawal: int theArray[5][3] = { {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}, {13,14,15} };
Array dan memori When you declare an array, you tell the compiler exactly how many objects you expect to store in it. The compiler sets aside memory for all the objects, even if you never use it. This isn't a problem with arrays for which you have a good idea of how many objects you'll need. When you have no idea of how many objects you'll need, however, you must use more advanced data structures. Seperti pointers, the heap, linked list, dll.
Contoh multidimension array [1] include <stdio.h> void main (void) { int a2[5][7]; int i, j; for(i = 0; i < 5; i = i + 1) for(j = 0; j < 7; j = j + 1) a2[i][j] = 10 * i + j; }
Contoh multidimension array [2] for(j = 0; j < 7; j = j + 1) printf("\t%d:", j); printf("\n"); for(i = 0; i < 5; i = i + 1) { printf("%d:", i); printf("\t%d", a2[i][j]); }
Contoh multidimension array [3] Output: 0: 1: 2: 3: 4: 5: 6: 0: 0 1 2 3 4 5 6 1: 10 11 12 13 14 15 16 2: 20 21 22 23 24 25 26 3: 30 31 32 33 34 35 36 4: 40 41 42 43 44 45 46