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
#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="">
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");
}
}
pmbahasan nya uda lumayan lengkap, tp agak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas
BalasHapusagak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas. tp makasii y
BalasHapusagak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas, tp makasii
BalasHapus