Apakah Larik itu ?
Menurut defenisinya,
array(larik) adalah suatu variabel yang merepresentasikan daftar (list) atau
kumpulan data yang memiliki tipe data sama. Setiap data yang terdapat dalam array tersebut menempati alamat memori yang berbeda serta disebut dengan
elemen array. Selanjutnya untuk mengakses nilai dari suatu elemen array,
kita akan menggunakan indeks dari array
tersebut. Perlu sekali untuk diperhatikan bahwa dalam bahasa c, indeks array
selalu dimulai dari angka 0, bukan 1. hal ini berbeda dengan bahasa pemrograman
lainnya(misalnya bahasa pascal) dimana indeks awal array dapat ditentukan sendiri sesuai dengan keinginan
kita. Berikut ini gambar yang akan mengilustrasikan sebuah array dalam bahasa c. :
untuk mendeklarasikan suatu
array satu dimensi dalam bahasa c adalah dengan menggunakan tanda [] (bracket).
Adapun bentuk umum dari pendeklarasian tersebut adalah sebagai berikut.
tipe_data nama_array [banyak_elemen];
sebagai contoh apabila kita
ingin mendeklarasikan array dengan nama A sebanyak 100 elemen data yang bertipe
int, maka kita akan menuliskan sintaknya sebagai berikut.
int A [100];
namun,
untuk efisiensi program, proses memasukkan nilai ke dalam elemen array umumnya
dilakukan dengan menggunakan pengulangan. berikut ini contoh program yang akan
menunjukan cara memasukkan sekaligus menampilkan nilai dari suatu array
#include
#define MAX 5
int main(){
int A[MAX];
int j;
printf("memasukkan nilai
:\n");
for(j=0; j
printf("A[%d] =
",j);scanf("%d",&A[j]);
}
printf("\nmenampilkan
nilai :\n");
for(j=0; j
printf("A[%d] =
%d\n",j, A[j]);
}
return 0;
}
Mengapa harus menggunakan array ?
untuk mengetahui mengapa kita
harus menggunakan array, asumsikan bahwa kita mempunyai lima buah variabel x1,
x2,x3,x4 dan x5 yang semuanya bertipe float selanjutnya kita ingin mengetahui
nilai rata rata dari variabel tersebut. Apabila kita tidak menggunakan array
untuk kasus ini, maka kita tentu akan menuliskan program seperti dibawah ini
#include
int main(){
float x1,x2,x3,x4,x5;
float rata_rata;
printf("memasukkan
nilai:\n");
printf("nilai ke-1
=");scanf("%f",&x1);
printf("nilai ke-2
=");scanf("%f",&x2);
printf("nilai ke-3
=");scanf("%f",&x3);
printf("nilai ke-4
=");scanf("%f",&x4);
printf("nilai ke-5
=");scanf("%f",&x5);
rata_rata =
(x1+x2+x3+x4+x5)/5;
printf("\nnilai rata_rata
= %.2f",rata_rata);
return 0;
}
program di atas memang pendek
karena data yang kita miliki hanya 5 buah. Namun bagaimana apabila kita ingin
menghitung rata-rata dari 100 atau bahkan 1000 data ? kita tentu tidak akan
menggunakan cara di atas bukan ? oleh sebab itu, untuk menyederhanakan program dalam kasus
ini, seharusnya kita menggunakan array. Berikut program yang merupakan
perbaikan dari program sebelumnya
#include
#define MAX 5
int main(){
float A[MAX], jumlah=0,
rata_rata;
int j;
printf("memasukkan nilai
:\n");
for(j=0; j
printf("A[%d]
=",j);scanf("%f", &A[j]);
jumlah += A[j];
}
rata_rata = jumlah/MAX;
printf("\nnilai rata_rata
= %.2f",rata_rata);
return 0;
}
Inisialisasi array
pada saat array dideklarasikan,
apabila kita tidak melakukan inisialisasi nilai secara eksplisit terhadap
elemen-elemen didalamnya, maka kompilator
c akan secara otomatis mengeset nilai dari setiap elemen tersebut ke
nol. Berikut ini cara untuk melakukan inisialisasi nilai terhadap elemen array.
Sebagai contoh apabila kita memiliki tiga buah array dengan nama A, B, dan C
yang semuanya bertipe int dan kita akan melakukan inisialisasi terhadap
elemen-elemennya, maka kita dapat menuliskannya dengan cara sebagai berikut
int A[5] = {10, 20, 30, 40,
50};
int B[5] = {10};
int C[5] = {10, 0, 30};
pada baris pertama (array A),
kita melakukan inisialisasi terhadap kelima elemen array, yaitu dengan nilai
10,20,30,40 dan 50 sehingga array A
dapat digambarkan sebagai berikut :
sedangkan pada baris kedua
(array B), kita hanya melakukan inisialisasi terhadap elemen pertama saja
(yaitu dengan nilai 10), artinya elemen lainnya masih kosong sehingga dapat
digambarkan sebagai berikut :
baris terakhir (array C), kita
melakukan inisialisasi terhadap elemen ke-1
dan ke-3, yaitu dengan nilai 10 dan 30. Namun perlu diperhatikan di sini
bahwa kita juga harus mengisikan nilai 0 untuk elemen ke-2. Apabila kita hanya menuliskan
int C[5] = {10,20};
maka kompilator akan menganggap
kita melakukan inisialisasi terhadap elemen ke-1 dan ke-2(bukan elemen ke-3),
sehingga kita harus menuliskannya sebagai berikut
int C[5] = {10,0,30};
hal ini akan menyebabkan nilai
dari array C dapat digambarkan seperti :
untuk membuktikan hal diatas,
marilah kita implementasikan pernyataan di atas ke dalam sebuah program. Adapun
sintaknya adalah sebagai berikut
#include
int main(){
int A[5] = {10,20,30,40,50};
int B[5] = {10};
int C[5] = {10,0,30};
int j;
for (j=0; j<5
j="" span="">
printf("A[%d] = %2d,
B[%d] = %2d, C[%d] = %2d\n", j, A[j], j, B[j],j, C[j]);
}
return 0;
}
Array konstan
sama seperti pada variabel
biasa, elemen array juga dapat dibuat menjadi konstan artinya nilai tidak dapat
diubah selama program berjalan. Caranya sederhana yaitu dengan menambahkan kata
kunci const pada saat pendeklarasian array serta mengisikan
nilai-nilai yang akan didefenisikan. Berikut ini bentuk umumnya
const tipe_data nama_array[N] = {nilai1, nilai2,....., nilaiN}
sebagai contoh apabila kita
memiliki array dengan nama A dengan tipe data int, dimana nilai dari setiap
elemennya akan kita buat menjadi konstan, maka kita akan mendeklarasikannya
sebagai berikut
Const int A[3] = {10, 20, 30,
40, 50};
Pengurutan pada elemen array
salah satu faktor dari lambatnya
proses pencarian yang terdapat dalam suatu
kumpulan data adalah karena
data tersebut tidak dalam keadaan terurut. Dengan kata lain, pengurutan
sangatlah diperlukan sebelum kita melakukan pencarian data. Terdapat banyak
metode pengurutan data yang terdapat dalam teori algoritma dan pemrograman, diantaranya metode
gelembung(bubble sort), sisipan(insertion sort),
maksimum-minimum(maximum-minimum sort), quick sort dan banyak lagi yang lainnya namun dari banyak metode yang ada tersebut,
disini kita hanya akan menerangkan sekilas dari beberapa metode saja serta
mengimplementasikannya langsung ke dalam sebuah program.
Menggunakan metode gelembung (bubble sort)
menurut sumber yang ada, ide
pembentukan metode ini diinspirasi oleh adanya pengapungan gelembung sabun yang
terdapat pada permukaan air. Kita semua tahu bahwa berat jenis dari gelembung
sabun lebih kecil dari pada berat jenis air sehingga menyebabkan gelembung
sabun tersebut selalu terapung ke atas permukaan. sekarang perhatikan sebuah
batu yang tenggelam di dalam air. Fenomena tersebut menunjukkan bahwa zat yang
lebih ringan akan dilempar ke atas
(diapungkan), sedangkan benda yang lebih berat akan dilempar ke bawah (
ditenggelamkan).
Ide'pengapungan' di atas
kemudian digunakan untuk membentuk algoritma pengurutan data, yaitu dengan
melempar elemen array terkecil ke bagian ujung kiri array (dijadikan sebagai
elemen pertama). Proses tersebut tentunya dilakukan dengan melakukan pertukaran
antara elemen array
#include
#define MAX 5
void tampilkanarray(int A[],
int n){
for (int j=0; j
printf("A[%d] =
%d\n",j,A[j]);
}
}
int main(){
int A[MAX] = {40,4,30,8,7};
int j,k;
int temp;
printf("sebelum
pengurutan :\n");
tampilkanarray(A, MAX);
for(j=0; j
for(k=MAX-1; k>=(j+1);k--){
if(A[k]
temp = A[k];
A[k] = A[k-1];
A[k-1] = temp;
}
}
}
printf("\n");
printf("setelah
pengurutan :\n");
tampilkanarray(A, MAX);
return 0;
}
Pencarian elemen pada array
#include
#define MAX_ELEMEN 100
int main (){
int BIL[MAX_ELEMEN];
int n, x;
printf("masukkan
banyaknya elemen yang diinginkan :");
scanf("%d",&n);
for(int j=0; j
printf("BIL[%d] =
",j);scanf("%d", &BIL[j]);
}
printf("masukkan nilai
yang di cari :");scanf("%d", &x);
int k=0;
while((k
k++;
}
if (BIL[k] ==x){
printf("%d ditemukkan
dalam array, yaitu pada indeks ke -%d",x,k);
}else{
printf("%d tidak
ditemukan dalam array",x);
}
return 0;
}
Array multidimensi
array dua dimensi adalah array
yang memiliki dua buah subskrip, yaitu baris dan kolom. Untuk mendeklarasikan
array dua dimensi, kita akan menggunakan bentuk umum berikut
tipe_data nama_array[banyak_baris][banyak_kolom]
sebagai contoh apabila kita
akan membuat deklarasi matrik berordo 3x2, maka kita akan menuliskan sintak
untuk deklarasinya sebagai berikut
int M
[3] [2];
untuk mempermudah memahaminya,
bentuk matrik di atas dapat kita tuliskan dalam bentuk tabel berikut :
berikut ini contoh program
lengkap yang akan menunjukan penggunaan array dua dimensi.
disini kita akan melakukan
penjumlahan dua buah matrik berordo 3x2
adapun sintak proagramnya adalah
seperti di bawah ini
#include
int main(void){
typedef int matrik32 [3] [2];
matrik32 A,B,C;
int j,k;
printf("mengisikan elemen
matrik A:\n");
for (j=0;j<3 j=""
span="">
for (k=0; k<2
k="" span="">
printf("A[%d][%d] =
",j,k);scanf("%d", &A[j][k]);
}
}
printf("\nmengisikan
elemen matrik B:\n");
for (j=0; j<3
j="" span="">
for(k=0; k<2 k=""
span="">
printf("B[%d][%d] =
",j,k);scanf("%d", &B[j][k]);
}
}
for (j=0; j<3
j="" span="">
for(k=0; k<2 k=""
span="">
C[j][k] = A[j][k] + B[j][k];
}
}
printf("\nhasil penjumlahan
matrik A dan B :\n");
for(j=0; j<3 j=""
span="">
for(k=0; k<2 k=""
span="">
printf("C[%d][%d] =
%d\n",j,k, C[j][k]);
}
}
return 0;
}
apabila dituliskan dalam
bentuk matematik, maka hasil dari program di atas dapat di tuliskan sebagai
berikut
10 20 10 20 20 40
30 40 + 30 40 = 60
80
50 60 50 60 100 120
int main(void)
{
int
i,j;
int
ma[2][3]= { {1, 2, 3},
{4, 5, 6} };
int
mb[2][3]= { {6, 3, 4},
{5, 1, 2} };
int
mc[2][3]= { 0 };
for(j=0;j<2
j="" span="">
for(i=0;i<3 i=""
span="">
mc[j][i]= ma[j][i] + mb[j][i];
for(j=0;j<2
j="" span="">
for(i=0;i<3 i=""
span="">
printf("%3d",
mc[j][i]);
printf("\n");
}
}
Tidak ada komentar:
Posting Komentar