Matakuliah Tahun Versi : T0616 / Algoritma dan Pemrograman : 2007 : 1/0 Pertemuan 17-18 Array 1 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Menerapkan konsep tipe data array untuk data majemuk homogen (C3) 2 Outline Materi Array • Definisi dan karakteristik array • Array dimensi satu • Inisialisasi array • Array sebagai parameter • Array berdimensi dua dan tiga 3 Array • Array • Data disimpan dalam suatu struktur, sedemikian rupa sehingga elemen-elemen di dalam struktur tadi dapat diolah secara kelompok ataupun secara individu. • Sifat - sifat Array – Homogen Seluruh elemen di dalam struktur array harus mempunyai tipe data yang sama. – Random Access Setiap elemen di dalam struktur array dapat dicapai secara individual, langsung ke lokasi elemen yang diinginkan, tidak harus melalui elemen pertama. 4 Array Dimensi Satu • Sintaks deklarasi array dimensi satu type nama_arrray[Nilai_dim]; Contoh : int A[10]; • Definisi dari sebuah array terdiri dari 4 komponen yaitu : – – – – Type specifier Identifier (nama array) Operator index ([ ]) Nilai dimensi dalam operator [ ] 5 Visualisasi Array • Dengan menggunakan contoh deklarasi sebelumnya dapat digambarkan alokasi untuk variabel A • Elemen-elemen suatu Array diindeks (subscript) mulai dari 0. A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] 6 Cara Akses Array • Dua cara yang ekuivalen untuk mengakses unsur ke-i dari suatu array. Misal untuk i=2; *(A+2) atau A[2] • A ekuivalen dengan &A[0] atau pointer constant ke elemen-pertama dari array tersebut. • Bila elemen A[2] hendak ditampilkan di layar monitor, gunakan statemen sbb: printf(“%d”,A[2]) atau printf(“%d\n”,*(A+2)); 7 Mengisi Data Array • 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] • 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] 8 Inisialisasi Array • 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]; B[5]={0,0,0,0,0}; Error 9 Inisialisasi Array • Contoh : #include <stdio.h> void main() { int i; int list_int[10]; for (i=0; i<10; i++){ list_int[i] = i + 1; printf( "list_int[%d] diinisialisasi dengan %d.\n", i, list_int[i]); } } 10 Array Dimensi Satu • Contoh : #include<stdio.h> int SIZE = 5; void main() { int n[SIZE] = {15, 9, 1, 7, 5}; for( int i=0 ; i<= SIZE ; i++) { printf("%5d ", n[i]); for ( int j=1; j<=n[i] ; j++) printf("%c","*"); printf("\n"); } } 11 Array Sebagai Parameter • Jika array digunakan sebagai parameter dalam suatu fungsi, maka passing parameter harus by location. • 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); } 12 Array Dimensi Dua • x[row][column]: array dua dimensi dengan row dan column • Contoh int a[3][4] Column 0 Column 1 Column 2 Column 3 Row 0 Row 1 Row 2 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ] a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ] Column subscript Array name Row subscript 13 Array Dimensi Dua • Inisialisasi: menggunakan aturan rmo (row major order). • Contoh: • int b[2][2] = { { 1, 2 }, { 3, 4 } }; 1 2 3 4 • int b[2][2] = { { 1 }, { 3, 4 } }; 1 0 3 4 • int x[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; • int x[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}}; 14 Array Dimensi Dua • Program : /* Mencetak array 2-D */ #include <stdio.h> void main() { int two_dim[3][5] = {1, 2, 3, 4, 5, 10, 20, 30, 40, 50, 100, 200, 300, 400, 500}; int i, j; } for (i=0; i<3; i++){ printf("\n"); for (j=0; j<5; j++) printf("%6d", two_dim[i][j]); } 12345 10 20 30 40 50 100 200 300 400 500 15 Array Dimensi Tiga • X[Row][Column][Depth] : Array tiga dimensi dengan row, column dan depth. int x[3][2][4] = {{{1,2,3,4}, {5,6,7,8}}, {{11,12,13,14}, {15,16,17,18}}, {{21,22,23,24}, {25,26,27,28}}}; void main() { x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}}, {{9, 7, 5}, {5, 7, 2}, {9}}, {{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}}, {{0}, {1}, {0, 1, 9}}}; printf(“%5d”, x[2][1][3]); } 16 Latihan • 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 17 Latihan • Buat program untuk membalik urutan array dimensi satu. int x[ ] = {19, 3, 15, 7, 11}; Dan kemudian cek hasilnya dengan data berikut : int x[ ] = {19, 3, 15, 7}; int x[ ] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 18 Latihan • Buat program untuk mengurutkan array dimensi satu yang berisi 3 data. int n[ ] = {2,1,3}; Dan kemudian cek hasilnya dengan data berikut ini : int n[ ] = {3,2,1}; int n[ ] = {2,1,3}; 19 Latihan • Buatlah sebuah program untuk menginput Saldo untuk 5 Account berikut ke dalam sebuah array dimensi satu: Account 1 2 3 4 5 Saldo 24.98 345.67 0.00 -42.16 224.62 • Nomor Account ditentukan sesuai no index array + 1 • Tipe data yang digunakan adalah double (bisa menampung pecahan dan angka minus) 20 Latihan • Berdasarkan soal sebelumnya : • Jika Saldo yang diinput >0 dianggap Saldo Deposit, jika Saldo = 0 maka Saldo Zero, selain itu dianggap Saldo Withdraw. • Dari data yang diinput tampilkan : – Daftar Account dengan Saldo Zero – Daftar Account dengan Saldo Debit – Daftar Account dengan Saldo Credit – Tentukan rata-rata Saldo keseluruhan 21 Latihan • Buat program untuk menginput array berikut : int grademhs[ mhs ][ mtk ] = { { 77, 68, 86, 73 }, { 96, 87, 89, 78 }, { 70, 90, 86, 81 } }; • Dan tampilkan output sebagai berikut : grademhs grademhs grademhs [0] [0] 77 [1] 96 [2] 70 [1] 68 87 90 [2] 86 89 86 [3] 73 78 81 22