hey

Sabtu, 23 Februari 2013

Array (Larik) 2



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");
                }
}


3 komentar:

  1. pmbahasan nya uda lumayan lengkap, tp agak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas

    BalasHapus
  2. agak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas. tp makasii y

    BalasHapus
  3. agak ganggu tampilan nya,, isi nya jd kagak kliatan dgn jelas, tp makasii

    BalasHapus