Anda di halaman 1dari 6

11/11/2013

Array
• Dalam matematika dikenal variabel berindeks
x0, x1, x2, …, xn-1. Angka 0, 1, 2, …, n-1 pada
variabel x disebut sebagai indeks atau
Algoritme dan Pemrograman subscript.
• Variabel berindeks diimplementasikan dalam
Kuliah #8 program berupa array x[0], x[1], x[2], …, x[n-
Array 1], dengan n adalah ukuran array.
• Selang nilai yang valid bagi indeks suatu
variabel array berukuran n adalah 0 sampai
dengan n-1.
DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR

Array Array satu dimensi (1D)
• Definisi: kumpulan elemen bertipe data sama
yang diakses dengan nama yang sama
• Contoh:
• Deklarasi:
int a[5];
data-type array-name[size];
float x[10];
• Array dapat dibedakan menjadi: int d[3]={0};
– Array berdimensi satu (1D)  vektor di Matematika
int c[]={-45, 6, 0, 72, 1543};
– Array berdimensi dua (2D)  matriks di Matematika
– Array berdimensi banyak
• Elemen array disimpan di memori secara
berurutan

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

Alokasi memori Alokasi memori
• Array harus dideklarasikan terlebih dahulu.
data
• Indeks: 0, 1, 2, …, size-1 lain • Array dapat dideklarasikan secara global di
• Jika mengakses indeks di luar fungsi main, maupun secara lokal di
a[0]
luar selang, maka akan a[1] dalam suatu fungsi.
a[2]
diperoleh data lain. a[3]
a[4]
• Contoh: a[5]
x
int a[6];
data
int x; lain

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR

ILKOM IPB 1

// baca banyaknya data int c[] = {3. c[2]). – b[1] = 5. int main() { int i. i++) scanf("%d". // akses isi array return 0. printf("%d\n".2.2.h> 1. b[1]. 4.5. total = 0. &n). • Jika hanya sebagian yang diinisialisasi.h> #include <stdio. Program untuk menghitung rata-rata nilai int main() { dalam suatu array int a[5] = {1. 3. d[4] = {0}. 3. 5. i<SIZE. misalnya: f[10] int i. int e[5] = {1}. int a[3]. f[5]). suatu nilai dalam suatu array return 0. • Setelah diperbaiki: for (i=0. c[2] = 1. &a[i]). 7}. bernilai 0 } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Akses array di luar batas indeks Latihan #include <stdio. 3. 5.1}. e[4]. 2. 11/11/2013 Mengisi masukan ke array Keluaran? #include <stdio. // membaca masukan dan disimpan ke array for (i=0. d[4] = 0. f[]. d[3]. e[5] = 0 printf("%d\n". – Berikan dimensi. a[0]. i<n. 4. a[6] ).h> int main() { int a[100]. i++) – a[0] tidak diketahui karena tidak diinisialisasi total += a[i]. printf("%d %d %d\n". printf("%d %d %d\n". b[4] ={4. scanf("%d". } } Contoh masukan: 3 20 34 21 DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Penjelasan Menghitung jumlah isi array • Gagal kompilasi karena dimensi f tidak #include <stdio. 7}. return 0. sisanya return 0. total ).h> #define SIZE 5 dinyatakan baik secara explisit maupun implisit int main() { int a[SIZE] = {1. a[n/2]). Program untuk menentukan nilai minimum } dan maksimum dalam suatu array Apakah terjadi error pada saat di-compile atau di-run? Mengapa hal tersebut terjadi? DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR ILKOM IPB 2 .3}. Program untuk menentukan keberadaan printf("%d\n".

a[n-i-1] = temp.5)). int x[] = {5. } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR ILKOM IPB 3 .h> dinyatakan void printarray(int a[].2. sumarray(x. contoh) } • Ukuran array menjadi parameter (n pada contoh) int sumarray(int a[]. int a[n]) { void printarray(int n. fliparray(x. setelah parameter penampung dimensi (n pada return 0. int n) int sumarray(int a[].4. pemrograman lain } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Fungsi Membalik Elemen Array Keluaran? void fliparray(int a[].7.2. a[i]).-1.h> argumen dari fungsi. i++){ printarray(x. int a). fliparray(x. tidak harus muncul printf("%d". printarray(x. void printarray(int n. } printarray(x. i<n. 5).2. atau void printarray(int a[*].5). printarray(x. i++) } printf("%d ". 5). i++) sum+=a[i].-3. int a[n]). 5). 11/11/2013 Array sebagai argumen fungsi Fungsi Mencetak Elemen Array • Seperti variabel lainnya. i<n/2. int n) { int main() { int i. array juga dapat digunakan sebagai #include <stdio.-3. i<n. int n) { • Tipe void digunakan jika fungsi tidak mengembalikan int i. } int printarray(int n. temp. int a[]).9}. int n) { … int i. temp = a[i]. int n) int main() { int x[5] = {1. int x[5] = {1.5). • Jika dimensi tidak dinyatakan.9}. int a[n]. for (i=0. } return 0. } • Perhatikan bahwa parameter n harus disebut sebelum a[n] DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Pengiriman Array 1D ke Fungsi Fungsi Menjumlahkan Elemen Array • Dimensi array 1D pada function header tidak harus #include <stdio. akan mempengaruhi nilai variabel array pada fungsi int main() { pemanggilnya (call by reference) (dibahas dalam topik pointer). • Contoh deklarasi array dalam fungsi: return 0. sum = 0.3). for (i=0. suatu nilai for (i=0.4. – Serupa dengan prosedur dalam terminologi bahasa return sum. • Nilai variabel array yang didekrasikan sebagai parameter fungsi // atau: void printarray(int n. a[i] = a[n-i-1].-3}.

DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Array 2D di memori Pengiriman Array 2D ke Fungsi • Dimensi kedua untuk array 2D pada function • Elemen berurutan di data header harus dinyatakan: a[m][n]. i<n. for(i=0.i<5.h> #define M 100 #define N 100 int main() { int x[5][4]. 11/11/2013 Array dua dimensi (2D) Array 2D: Membaca matriks mxn • Dapat disepadankan dengan matriks int a[100][100]. for (j=0. i++) for (j=0. int m.j<4. // membaca elemen matriks for (i=0.i++) for (i=0. atau a[][n] • Misal: a[0][0] • Ukuran array menjadi parameter (m dan n a[0][1] int a[2][3] a[0][2] pada contoh) a[1][0] • Seperti array 1D berapa a[2][1] • Array 2D dapat dikirim ke fungsi yang elemen? a[3][2] mengharapkan array 1D x – Ingat array 2D = array yang elemennya adalah data array lain – Elemen 2D juga berurutan DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Perhatikan fungsi berikut yang Keluaran? dimaksudkan mencetak matrix #include <stdio.k=1.4. } return 0. • Contoh: // minta dimensi masukan int b[][] = {{2. j.j++) x[i][j]=k++. • Array yang terdiri atas array int i. printf((n-1)==j ? "\n" : " ").j. i<m. &m. j. a[i][j]). j++) { printf("%d ". {5. lain memori a[*][*]. &n). &a[i][j]). scanf("%d". i++) for(j=0. int n) { int i. j++) float x[3][4]. scanf("%d %d". 20).3. a[][*].7}}.i. printarray(x. i<m. j<n. void printmatrix0 (int a[M][N]. } } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR ILKOM IPB 4 .1}.

a[i][j]). i++) int x[5][4]. 5. j. keluaran printmatrix0 pada hanya printf(0==(j%n)? "\n" : " ").j<4. int a[m][n]. int main() { for (i=0.i<5. i<m. } return 0. 11/11/2013 Keluaran? Bandingkan dengan #include <stdio. int n.i. j. int m. i<m. for(j=0. j<n. – Urutan a[0][0] s/d a[0][3] sama dengan urutan b[0][0] while (x--) { s/d b[0][3]. • Hasilnya. tetapi printf("%d". j++) { for(i=0. a[i][j]). – Elemen berikutnya di a adalah a[0][4] sedangkan di b j++.i++) printf("%d". j<n. 1 2 3 } 4 5 6 • Bukan: 1 2 3 5 6 7 DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR ILKOM IPB 5 . int n.k=1. } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR atau Penjelasan #define M 100 • Fungsi printmatrix0 dan printmatrix2 #define N 100 mengharapkan parameter berupa array 100x100 (karena M dan N diganti dengan 100) void printmatrix2 (int a[M][N]. 5 6 7 8 for (i=0. int n) { • Bandingkan a[100][100] dan b[5][4]: int i=0. printf((n-1)==j ? "\n" : " "). 4). adalah b[1][0] if(j==N) (j=0. x = m*n.j++) x[i][j]=k++.j. int b[n][m]) • Misal a[2][4]: { 1 2 3 4 int i. for (j=0. i++) Mencetak dengan m = 2 dan n = 3: for (j=0. benar untuk baris pertama } • Pada printmatrix2 indeksnya disesuaikan } dengan array 100x100 DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Catatan Fungsi memutar matriks • Fungsi printmatrix1 dan printmatrix2 hanya void putar benar untuk mencetak semua elemen array 2D (int m. int a[m][n]) { int i. } printmatrix0(x. i++). j++) b[j][i]=a[i][j].h> #define M 100 void printmatrix1 #define N 100 (int m. j=0.

5. • Contoh output: 1 3 2 1 2 3 4 8 1 2 3 4 6 7 8 9 DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR Hitung elemen 1 for (i=0.1}. int n) { if (n) { printf("%d\n". 3. i++) • Buat program membaca matriks a berukuran mxn dimana elemen { matriks adalah {0. 4. a[n-1]). 5). • Contoh input (baris pertama adalah m dan n): } 4 4 } 1 3 2 1 Apa keluaran potongan program berikut: 8 4 3 2 int x[SIZE]={2. 11/11/2013 Keluaran? Cetak zigzag Perhatikan fungsi berikut: • Buat program membaca matriks a berukuran mxn dan menampilkannya secara zigzag seperti skema berikut: void misteri(int a[SIZE]. { for (j=n-1.a[i][j]). 4 4 } 1 0 1 1 else 0 0 0 0 { 0 0 0 1 for (j=0. • Contoh output: } 2 1 2 3 } DEPARTEMEN ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR INSTITUT PERTANIAN BOGOR ILKOM IPB 6 . 1 2 3 4 9 8 7 6 misteri(x. 1}. dan menampilkan banyaknya elemen 1 pada if(i%2!=0) setiap kolomnya. misteri(a. j<m. n-1).a[i][j]). j++) 1 1 1 1 printf(" %d". i<n.j≤0.j--) • Contoh input (baris pertama adalah m dan n): printf(" %d".