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="">5>
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--){
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="">3>
for (k=0; k<2 k="" span="">2>
printf("A[%d][%d]
= ",j,k);scanf("%d", &A[j][k]);
}
}
printf("\nmengisikan
elemen matrik B:\n");
for (j=0; j<3 j="" span="">3>
for(k=0; k<2 k="" span="">2>
printf("B[%d][%d]
= ",j,k);scanf("%d", &B[j][k]);
}
}
for (j=0; j<3 j="" span="">3>
for(k=0; k<2 k="" span="">2>
C[j][k] = A[j][k]
+ B[j][k];
}
}
printf("\nhasil
penjumlahan matrik A dan B :\n");
for(j=0; j<3 j="" span="">3>
for(k=0; k<2 k="" span="">2>
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
#include
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="">2>
for(i=0;i<3 i="" span="">3>
mc[j][i]=
ma[j][i] + mb[j][i];
for(j=0;j<2 j="" span="">2>
for(i=0;i<3 i="" span="">3>
printf("%3d",
mc[j][i]);
printf("\n");
}
}





Tidak ada komentar:
Posting Komentar