SL-1201 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 variabel array 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/C++), selama tidak memiliki nama yang sama dengan variabel tunggal lain. Isi array Dalam bahasa C/C++, array dimulai dari 0. Jika A merupakan array dengan jumlah elemen 10, maka variabel yang adalah A[0], A[1], ..., A[9] A 5 9 15 8 -7 21 1 -3 11 -1 [0][1][2][3][4][5][6][7][8][9] A[0] bernilai 5 A[4] bernilai -7 Berapa nilai A[6] ? Berapa nilai A[9] ? isi array indeks array Mengisi Nilai Elemen Array Nilai setiap elemen array dapat diisikan langsung A[0] = 100; /*Nilai elemen A[0] adalah 100*/ B[5] = 35; /*Nilai elemen B[5] adalah A[0] = B[5];/*Nilai elemen A[0] adalah C = -99; /*C adalah variabel biasa, array. C bernilai -99 */ B[5] = C; /*Nilai elemen B[5] adalah A[0] tetap bernilai 35 */ 35 */ 35 */ bukan -99. Menampilkan Nilai Array #include <iostream.h> Hasil Tampilan: int main(){ int A[3]; int B = 35; A[0] = 70; A[1] = B; cout<<“Isi nilai A[0] adalah”<<A[0]<<“\n”; cout<<“Isi nilai A[1] adalah”<<A[1]<<“\n”; cout<<“Silakan user mengisi nilai A[2]:”; cin>>A[2]; cout<<“Isi nilai A[2] adalah”<<A[2]<<“\n”; } 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}; b merupakan array yang memiliki 5 elemen karena diinisialisasi dengan 5 angka. Perhatikan bahwa variable b dinyatakan sebagai b[] untuk menjelaskan bahwa b adalah sebuah array Jika elemen array adalah karakter, maka initializer dapat berupa string constant: char s1[7] = "Hello,"; char s2[10] = "there,"; char s3[] = "world!"; Array dan loop Untuk memberikan nilai atau mengoperasikan suatu array, dapat digunakan sebuah loop: for(int i = 0; i < 10; i = i + 1) { a[i] = 0; } /* a[0] hingga a[9] bernilai 0 */ for(i = 0; i < 10; i++) /* i++ adalah sama dengan i=i+1 */ { b[i] = a[i]+1; } /* b[0] hingga b[9] bernilai 1 */ for(i = 0; i < 10; i++) { c[i] = b[i]+i; } /* untuk i=0 c[0]=1+0=1, untuk i=1 c[1]=1+1=2, untuk i=2 c[2]=1+2=3, berapa nilai c[9]? */ Contoh Deklarasi Array [1] Hasil Tampilan #include <iostream.h> int main () { int n[10]; for (int i=0; i<10; i++) { n[i] = 0; } cout<<”Indeks Elemen Nilai\n”; for (i=0; i<10; i++) { cout<<i<<” ”<<n[i]<<”\n”; } return 0; } Contoh Deklarasi Array [2] #include <iostream.h> /* Jumlah array ditentukan dalam deklarasi dengan jumlah data yang lebih sedikit */ int main () { int n[10] = {32, 27, 64, 18, 95}; cout<<”Elemen ke Nilai\n”; for (i=0; i<10; i++) { cout<<i<<” ”<<n[i]<<”\n”; } return 0; } Contoh Deklarasi Array [3] #include <iostream.h> // Jumlah array tidak ditentukan main () { int n[] = {32, 27, 64, 18, 95}; cout<<”Elemen ke Nilai\n”; for (i=0; i<10; i++) { cout<<i<<” return 0; } ”<<n[i]<<”\n”; } Const Contoh: // Menyatakan ukuran array dengan const #include <iostream.h> main () { const int arraySize = 5; int n[arraySize]; cout<<"Elemen Nilai\n"; for (int i=0; i < arraySize; i++) { n[i] = 2 + 2 * i; cout<<i<<” ”<<n[i]<<”\n”; } return 0; } Enum [1] Contoh: /* Menyatakan ukuran array dengan const dan menggunakan enumerasi */ #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}; cout<<"The value at Tuesday is: “; cout<<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. enum WeekDays {Sun,Mon,Tue,Wed,Thu,Fri,Sat,DaysInWeek}; 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. cout<<ArrayWeek[Tue]; Array dengan elemen terstruktur int main() { typedef struct SISWA{ long NIM; char Nama[25]; char Kota[30]; }; SISWA A[2]; // deklarasi array A berisi 2 SISWA //menerima masukan user for (int i=0;i<2;i++){ cout<<"NIM: ";cin>>A[i].NIM; cout<<"Nama: ";cin>>A[i].Nama; cout<<"Kota: ";cin>>A[i].Kota; } //menampilkan isi for (int i=0;i<2;i++){ cout<<"Siswa ke-i\n"; cout<<A[i].Nama<<"("<<A[i].NIM<<")"; cout<<" dari "<<A[i].Kota<<"\n"; } return 0; } Contoh-contoh Pengoperasian Array Menghitung Nilai Rata-rata Nilai rata-rata = Total Penjumlahan seluruh elemen banyaknya elemen arraySize1 = #include <iostream.h> n[i] i 0 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]; } cout<<"Total nilai = "<<total<<"\n"; cout<< "Rata-rata = "<< total/arraySize<<"\n"; return 0; } Mencari Nilai Array #include <iostream.h> main () { const int arraySize = 12; int n[arraySize] = {1,3,5,7,9,4,5,6,44,6,88,45}; int Bil; cout<<“Masukkan nilai yang ingin dicari = “; cin>>Bil; for (int i=0; i < arraySize; i++) { if (n[i] == Bil) { cout<<Bil<<“is Found!!\n“; break; } } 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 (ascending) 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 <iostream.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}; cout<<"Urutan data awal:\n"; for(int i=0;i<arraySize;i++) { cout<<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 cout<<“\n\nUrutan data dari kecil ke besar:\n"; for(i=0;i<arraySize;i++) { cout<<n[i]<<" "; } cout<<"\n\nUrutan data dari besar ke kecil:\n"; for(i=arraySize-1;i>=0;i--) { cout<<n[i]<<" "; } cout<<"\n\n"; return 0; } Multidimension Array 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 digunakan satu atau dua dimensi. Array 1 dimensi [0] [1] [2] [3] [4] Array 2 dimensi [0,0] [0,1] [0,2] [0,3] [0,4] [1,0] [1,1] [1,2] [1,3] [1,4] Array 3 dimensi [2,0,0] [1,0,0] [2,0,4] [1,0,4] [0,0,0] [0,0,1] [0,0,2] [0,0,3] [0,0,4] [0,0,4] [2,1,4] [1,1,4] [0,1,0] [0,1,1] [0,1,2] [0,1,3] [0,1,4] [0,1,4] [2,2,4] [1,2,4] [0,2,4] [0,2,0] [0,2,1] [0,2,2] [0,2,3] [0,2,4] 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} }; Contoh multidimension array [1] #include <iostream.h> void main (void) { int a2[2][4]; // memberi nilai 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; cout<<"Nilai a2["<<i<<","<<j<<"]="<<a2[i][j]<<"\n"; } } } Contoh multidimension array [2] // print out for(j = 0; j < 3; j = j + 1) { cout<<"\t"<<j<<":"; } cout<<"\n"; for(i = 0; i < 5; i = i + 1) { cout<<i<<":"; for(j = 0; j < 7; j = j + 1) { cout<<"\t"<<a2[i][j]; } cout<<"\n"; } Output: 0: 1: 2: 3: 4: 0: 0 10 20 30 40 1: 1 11 21 31 41 2: 2 12 22 32 42