Array
Suatu array adalah suatu identifier yang mewakili sekelompok data yang mempunyai nama sama. Setiap data harus mempunyai tipe data yang sama (misalkan semua integer atau semua float). Setiap elemen array dibedakan dari yang lain dengan menggunakan nama array yang diikuti dengan subscript. Subscript array dalam C/C++ selalu dimulai dari nol, bukan satu.
Setiap subscript diletakan diantara tanda kurung siku ([]). Subscript sering disebut juga index. Harga dari setiap subscript dapat berupa suatu konstanta integer, variabel integer atau suatu expression. Banyaknya subscript menentukan dimensi dari array contoh array a[15] adalah array satu dimensi, b[3][5] adalah array dua dimensi dan c[4][2][5] adalah array tiga dimensi.
Bentuk umum dari array :
data_type nama_array [expression-1]... ... [expression-n];
untuk array kita hanya boleh menggunakan storage class automatic, external dan static sedangkan storage class register tidak bisa digunakan untuk array, karena array memerlukan jumlah memori yang besar sementara jumlah register pada CPU terbatas. Bila storage class tidak dituliskan, maka array dianggap mempunyai storage class automatic untuk array yang diletakan di dalam fungsi dan mempunyai storage class external untuk array yang diletakan di luar fungsi.
Berikut ini diberikan contoh mendefinisikan sebuah array charakter :
char nama[5];
Kita juga dapat menginisialisasi sebuah array langsung pada saat kita mendefinisikannya :
char nama[5] = “Budi”;
Sintaks C++ untuk menginisialisasi string pada array karakter pada definisi char nama[5] tak dapat diterapkan pada array numeris. Sedangkan pada akhir karakter akan terdapat null untuk mengakhiri string tersebut hanyalah berlaku pada data berjenis string. Berikut ini adalah cara menginisialisasi nama[5] satu persatu tiap elemen :
char nama[5] = { ‘B’,‘u’,’d’,’i’,’\0’ };
Pendefinisian ini identik dengan yang sebelumnya. C++ secara otomatis akan menambahkan nol untuk pengakhir dibelakang sebuah string pada saat kita memasukan sebuah nilai awal string. Bila kita mendefinisikan dan menginisialisasi sebuah array pada saat bersamaan, kita tak perlu menyertakan subscript awalnya. Definisi ini identik dengan sebelumnya :
char nama[] = { ‘B’, ‘u’, ‘d’, ‘i’, ‘\0’ };
C++ akan menghitung jumlah elemennya untuk kita. Bila kita memesan array lima elemen di C++, maka jangan kita memasukan enam atau lebih dari 5 pada array. Bila hal ini kita lakukan maka akan menimpa memori yang mungkin berisi variabel lain. Berikut ini contoh definisi array numerik :
int nilai[5] = { 15, 25, 35, 45, 55 };
Statemen ini memberi harga :
nilai[0]=15, nilai[1]=25, nilai[2]=35, nilai[3]=45, nilai[4]=55
Berikut ini akan diberikan contoh pemberian harga awal untuk array dengan dimensi lebih dari satu :
int matrik[2][3] = { 1, 7, 5, -2, 3, -4 };
Array matrik[2][3] adalah array dua dimensi. Hasil dari pemberian harga awal ini adalah:
matrik[0][0]=1
matrik[0][1]=7
matrik[0][2]=5
matrik[1][0]=-2
matrik[1][1]=3
matrik[1][2]=-4
Bila digunakan tanda kurung kurawal ({ }) tambahan untuk mengelompokan elemen-elemen dari harga awal dari array, maka pemberian harga awal array matrik[2][3] diatas dapat dituliskan sebagai berikut :
int matrik[2][3] = {{1, 7, 5}, {-2, 3, -4}};
hasil dari pemberian harga awal array matrik[2][3] ini sama seperti contoh sebelumnya.
Contoh 7.1 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel bukan array :
#include
#include
void main()
{
int n;
float data;
clrscr();
cout << "Banyaknya data : ";
cin >> n;
cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i
{
cout << "Data ke-" << i << " : ";
cin >> data;
}
cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
bukan array" << endl;
for ( i=0; i
{
cout << "Nilai ke-" << i << " : " << data << endl;
}
getch();
}
Keluaran programnya :
Banyaknya data : 3
Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000
Berikut ini adalah data yang tersimpan di variabel bukan array
Nilai ke-0 : 3000
Nilai ke-1 : 3000
Nilai ke-2 : 3000
Bandingkan program Contoh 7.1 dengan Contoh 7.2 berikut ini :
Contoh 7.2 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel array :
#include
#include
void main()
{
int n;
float data[100];
clrscr();
cout << "Banyaknya data : ";
cin >> n;
cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i
{
cout << "Data ke-" << i << " : ";
cin >> data[i];
}
cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
array" << endl;
for ( i=0; i
{
cout << "Nilai ke-" << i << " : " << data[i] << endl;
}
getch();
}
Keluaran programnya :
Banyaknya data : 3
Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000
Berikut ini adalah data yang tersimpan di variabel array
Nilai ke-0 : 1000
Nilai ke-1 : 2000
Nilai ke-2 : 3000
Dari program Contoh 7.1 dan Contoh 7.2 terlihat bahwa data yang tersimpan di variabel bukan array ketika diisikan dengan nilai maka nilai yang tersimpan adalah nilai yang terakhir. Sedangkan variabel berjenis array, datanya tersimpan dalam setiap elemen sehingga ketika diisikan dengan nilai maka nilai tersebut tersimpan sesuai dengan nilai yang diisikannya.
Array dan Fungsi
Suatu array dapat digunakan sebagai argumen terhadap suatu fungsi. Hal ini memungkinkan seluruh array dikirim ke fungsi. Untuk mengirim suatu array ke suatu fungsi, nama (parameter aktual) dari array tersebut harus dituliskan tanpa tanda kurung siku ( [] ) atau subscript sebagai argumen untuk memanggil fungsi itu.
Parameter formal yang berbentuk array di dalam definisi fungsi cukup dituliskan nama array diikuti tanda kurung siku kosong ( [] ). Berikut ini merupakan contoh fungsi yang menggunakan nama array.
Contoh 7.3 :
#include
#include
const int maks = 5;
int maksimum (int x[], int y);
void main()
{
int n, data[maks], hasil;
clrscr();
cout << "Banyaknya data yang kita inginkan : ";
cin >> n;
for (int i=0; i
{
cout << "Masukan bilangan bulat ke[" << i+1 << "] : ";
cin >> data[i];
}
hasil = maksimum (data, n);
cout << endl << "Nilai terbesarnya adalah : " << hasil << endl;
getch();
}
int maksimum (int x[], int y)
{
int besar=-32000;
for (int j=0; j
{
if ( x[j] > besar )
{ besar = x[j]; }
}
return besar;
}
Keluaran programnya :
Banyaknya data yang kita inginkan : 5
Masukan bilangan bulat ke[1] : 6
Masukan bilangan bulat ke[2] : -10
Masukan bilangan bulat ke[3] : 2
Masukan bilangan bulat ke[4] : -1
Masukan bilangan bulat ke[5] : 4
Nilai terbesarnya adalah : 6
Perhatikan cara penulisan argumen yang berbentuk array untuk memanggil fungsi maksimum() di dalam main() :
hasil = maksimum (data, n);
dan penulisan definisi fungsi yang menggunakan argumen berbentuk array :
int maksimum (int x[], int y)
data adalah array data [maks] yang merupakan parameter aktual untuk memanggil fungsi maksimum(). Meskipun berbentuk array, data[maks] hanya dituliskan nama saja tanpa subscript atau tanda kurung siku ( [] ). Sedangkan x[] adalah array yang digunakan sebagai parameter formal dari definisi fungsi maksimum(). Meskipun berbentuk array, x[] hanya dituliskan namanya saja diikuti tanda kurung siku kosong ([]), bila digunakan sebagai argumen untuk mendefinisikan fungsi.
Contoh 7.4 :
#include
#include
void input_data ( int &n, float &total, float data[]);
void hitung_data (int n, float total, float &rerata);
void tampilkan (int n, float data[], float rerata);
void main()
{
int banyak;
float suhu[100], jumlah, rata_rata;
clrscr();
input_data (banyak, jumlah, suhu);
hitung_data (banyak, jumlah, rata_rata);
tampilkan (banyak, suhu, rata_rata);
getch();
}
void input_data ( int &n, float &total, float data[])
{
int i=0;
cout << "Berapa data yang kita inginkan : ";
cin >> n;
while ( i
{
cout << "Data ke[" << i+1 << "] : ";
cin >> data[i];
total += data[i];
i++;
}
}
void hitung_data (int n, float total, float &rerata)
{
rerata=total/n;
}
void tampilkan (int n, float data[], float rerata)
{
clrscr();
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
for (int i=0; i
{
cout << "Data temperatur hari ke[" << i+1 << "] : "
<< data[i] << endl;
}
cout << "Rata-rata temperatur selama " << n
<< " hari adalah : " << rerata << endl << endl;
}
Keluaran programnya :
Berapa data yang kita inginkan : 3
Data ke[1] : 26
Data ke[2] : 28
Data ke[3] : 31
Tekan tombol enter setelah memasukan data yang terakhir sehingga muncul :
Data temperatur hari ke[1] : 26.00
Data temperatur hari ke[2] : 28.00
Data temperatur hari ke[3] : 31.00
Rata-rata temperatur selama 3 hari adalah : 28.33
Contoh program diatas adalah menggunakan array yang dilewatkan ke fungsi. Supaya memudahkan perpindahan data antar fungsi maka digunakan pemanggilan fungsi dengan referensi, hal ini dimaksudkan agar data yang mengalami perubahan di sebuah fungsi berdampak pada fungsi yang lainnya.
Kita tak akan bisa memprogram seperti ini tanpa menggunakan array. Array memberi kita kemungkinan untuk mengambil semua data kita dengan menggunakan sebuah pengulangan yang bisa kita lihat pada fungsi diatas yaitu fungsi tampilkan() yang memuat sebuah pernyataan pengulangan (loop) for dan memproses semua data tadi sekaligus.
Fungsi main() adalah sebagai pengendali, yaitu memanggil fungsi input_data(), hitung_data() dan tampilkan().
Suatu array adalah suatu identifier yang mewakili sekelompok data yang mempunyai nama sama. Setiap data harus mempunyai tipe data yang sama (misalkan semua integer atau semua float). Setiap elemen array dibedakan dari yang lain dengan menggunakan nama array yang diikuti dengan subscript. Subscript array dalam C/C++ selalu dimulai dari nol, bukan satu.
Setiap subscript diletakan diantara tanda kurung siku ([]). Subscript sering disebut juga index. Harga dari setiap subscript dapat berupa suatu konstanta integer, variabel integer atau suatu expression. Banyaknya subscript menentukan dimensi dari array contoh array a[15] adalah array satu dimensi, b[3][5] adalah array dua dimensi dan c[4][2][5] adalah array tiga dimensi.
Bentuk umum dari array :
data_type nama_array [expression-1]... ... [expression-n];
untuk array kita hanya boleh menggunakan storage class automatic, external dan static sedangkan storage class register tidak bisa digunakan untuk array, karena array memerlukan jumlah memori yang besar sementara jumlah register pada CPU terbatas. Bila storage class tidak dituliskan, maka array dianggap mempunyai storage class automatic untuk array yang diletakan di dalam fungsi dan mempunyai storage class external untuk array yang diletakan di luar fungsi.
Berikut ini diberikan contoh mendefinisikan sebuah array charakter :
char nama[5];
Kita juga dapat menginisialisasi sebuah array langsung pada saat kita mendefinisikannya :
char nama[5] = “Budi”;
Sintaks C++ untuk menginisialisasi string pada array karakter pada definisi char nama[5] tak dapat diterapkan pada array numeris. Sedangkan pada akhir karakter akan terdapat null untuk mengakhiri string tersebut hanyalah berlaku pada data berjenis string. Berikut ini adalah cara menginisialisasi nama[5] satu persatu tiap elemen :
char nama[5] = { ‘B’,‘u’,’d’,’i’,’\0’ };
Pendefinisian ini identik dengan yang sebelumnya. C++ secara otomatis akan menambahkan nol untuk pengakhir dibelakang sebuah string pada saat kita memasukan sebuah nilai awal string. Bila kita mendefinisikan dan menginisialisasi sebuah array pada saat bersamaan, kita tak perlu menyertakan subscript awalnya. Definisi ini identik dengan sebelumnya :
char nama[] = { ‘B’, ‘u’, ‘d’, ‘i’, ‘\0’ };
C++ akan menghitung jumlah elemennya untuk kita. Bila kita memesan array lima elemen di C++, maka jangan kita memasukan enam atau lebih dari 5 pada array. Bila hal ini kita lakukan maka akan menimpa memori yang mungkin berisi variabel lain. Berikut ini contoh definisi array numerik :
int nilai[5] = { 15, 25, 35, 45, 55 };
Statemen ini memberi harga :
nilai[0]=15, nilai[1]=25, nilai[2]=35, nilai[3]=45, nilai[4]=55
Berikut ini akan diberikan contoh pemberian harga awal untuk array dengan dimensi lebih dari satu :
int matrik[2][3] = { 1, 7, 5, -2, 3, -4 };
Array matrik[2][3] adalah array dua dimensi. Hasil dari pemberian harga awal ini adalah:
matrik[0][0]=1
matrik[0][1]=7
matrik[0][2]=5
matrik[1][0]=-2
matrik[1][1]=3
matrik[1][2]=-4
Bila digunakan tanda kurung kurawal ({ }) tambahan untuk mengelompokan elemen-elemen dari harga awal dari array, maka pemberian harga awal array matrik[2][3] diatas dapat dituliskan sebagai berikut :
int matrik[2][3] = {{1, 7, 5}, {-2, 3, -4}};
hasil dari pemberian harga awal array matrik[2][3] ini sama seperti contoh sebelumnya.
Contoh 7.1 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel bukan array :
#include
#include
void main()
{
int n;
float data;
clrscr();
cout << "Banyaknya data : ";
cin >> n;
cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i
{
cout << "Data ke-" << i << " : ";
cin >> data;
}
cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
bukan array" << endl;
for ( i=0; i
{
cout << "Nilai ke-" << i << " : " << data << endl;
}
getch();
}
Keluaran programnya :
Banyaknya data : 3
Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000
Berikut ini adalah data yang tersimpan di variabel bukan array
Nilai ke-0 : 3000
Nilai ke-1 : 3000
Nilai ke-2 : 3000
Bandingkan program Contoh 7.1 dengan Contoh 7.2 berikut ini :
Contoh 7.2 :
Program berikut ini akan menampilkan data yang tersimpan pada sebuah variabel array :
#include
#include
void main()
{
int n;
float data[100];
clrscr();
cout << "Banyaknya data : ";
cin >> n;
cout << endl << "Pada bagian ini adalah data yang kita ketikan"
<< endl;
for ( int i=0; i
{
cout << "Data ke-" << i << " : ";
cin >> data[i];
}
cout << endl;
cout << "Berikut ini adalah data yang tersimpan di variabel
array" << endl;
for ( i=0; i
{
cout << "Nilai ke-" << i << " : " << data[i] << endl;
}
getch();
}
Keluaran programnya :
Banyaknya data : 3
Pada bagian ini adalah data yang kita ketikan
Data ke-0 : 1000
Data ke-1 : 2000
Data ke-2 : 3000
Berikut ini adalah data yang tersimpan di variabel array
Nilai ke-0 : 1000
Nilai ke-1 : 2000
Nilai ke-2 : 3000
Dari program Contoh 7.1 dan Contoh 7.2 terlihat bahwa data yang tersimpan di variabel bukan array ketika diisikan dengan nilai maka nilai yang tersimpan adalah nilai yang terakhir. Sedangkan variabel berjenis array, datanya tersimpan dalam setiap elemen sehingga ketika diisikan dengan nilai maka nilai tersebut tersimpan sesuai dengan nilai yang diisikannya.
Array dan Fungsi
Suatu array dapat digunakan sebagai argumen terhadap suatu fungsi. Hal ini memungkinkan seluruh array dikirim ke fungsi. Untuk mengirim suatu array ke suatu fungsi, nama (parameter aktual) dari array tersebut harus dituliskan tanpa tanda kurung siku ( [] ) atau subscript sebagai argumen untuk memanggil fungsi itu.
Parameter formal yang berbentuk array di dalam definisi fungsi cukup dituliskan nama array diikuti tanda kurung siku kosong ( [] ). Berikut ini merupakan contoh fungsi yang menggunakan nama array.
Contoh 7.3 :
#include
#include
const int maks = 5;
int maksimum (int x[], int y);
void main()
{
int n, data[maks], hasil;
clrscr();
cout << "Banyaknya data yang kita inginkan : ";
cin >> n;
for (int i=0; i
{
cout << "Masukan bilangan bulat ke[" << i+1 << "] : ";
cin >> data[i];
}
hasil = maksimum (data, n);
cout << endl << "Nilai terbesarnya adalah : " << hasil << endl;
getch();
}
int maksimum (int x[], int y)
{
int besar=-32000;
for (int j=0; j
{
if ( x[j] > besar )
{ besar = x[j]; }
}
return besar;
}
Keluaran programnya :
Banyaknya data yang kita inginkan : 5
Masukan bilangan bulat ke[1] : 6
Masukan bilangan bulat ke[2] : -10
Masukan bilangan bulat ke[3] : 2
Masukan bilangan bulat ke[4] : -1
Masukan bilangan bulat ke[5] : 4
Nilai terbesarnya adalah : 6
Perhatikan cara penulisan argumen yang berbentuk array untuk memanggil fungsi maksimum() di dalam main() :
hasil = maksimum (data, n);
dan penulisan definisi fungsi yang menggunakan argumen berbentuk array :
int maksimum (int x[], int y)
data adalah array data [maks] yang merupakan parameter aktual untuk memanggil fungsi maksimum(). Meskipun berbentuk array, data[maks] hanya dituliskan nama saja tanpa subscript atau tanda kurung siku ( [] ). Sedangkan x[] adalah array yang digunakan sebagai parameter formal dari definisi fungsi maksimum(). Meskipun berbentuk array, x[] hanya dituliskan namanya saja diikuti tanda kurung siku kosong ([]), bila digunakan sebagai argumen untuk mendefinisikan fungsi.
Contoh 7.4 :
#include
#include
void input_data ( int &n, float &total, float data[]);
void hitung_data (int n, float total, float &rerata);
void tampilkan (int n, float data[], float rerata);
void main()
{
int banyak;
float suhu[100], jumlah, rata_rata;
clrscr();
input_data (banyak, jumlah, suhu);
hitung_data (banyak, jumlah, rata_rata);
tampilkan (banyak, suhu, rata_rata);
getch();
}
void input_data ( int &n, float &total, float data[])
{
int i=0;
cout << "Berapa data yang kita inginkan : ";
cin >> n;
while ( i
{
cout << "Data ke[" << i+1 << "] : ";
cin >> data[i];
total += data[i];
i++;
}
}
void hitung_data (int n, float total, float &rerata)
{
rerata=total/n;
}
void tampilkan (int n, float data[], float rerata)
{
clrscr();
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
for (int i=0; i
{
cout << "Data temperatur hari ke[" << i+1 << "] : "
<< data[i] << endl;
}
cout << "Rata-rata temperatur selama " << n
<< " hari adalah : " << rerata << endl << endl;
}
Keluaran programnya :
Berapa data yang kita inginkan : 3
Data ke[1] : 26
Data ke[2] : 28
Data ke[3] : 31
Tekan tombol enter setelah memasukan data yang terakhir sehingga muncul :
Data temperatur hari ke[1] : 26.00
Data temperatur hari ke[2] : 28.00
Data temperatur hari ke[3] : 31.00
Rata-rata temperatur selama 3 hari adalah : 28.33
Contoh program diatas adalah menggunakan array yang dilewatkan ke fungsi. Supaya memudahkan perpindahan data antar fungsi maka digunakan pemanggilan fungsi dengan referensi, hal ini dimaksudkan agar data yang mengalami perubahan di sebuah fungsi berdampak pada fungsi yang lainnya.
Kita tak akan bisa memprogram seperti ini tanpa menggunakan array. Array memberi kita kemungkinan untuk mengambil semua data kita dengan menggunakan sebuah pengulangan yang bisa kita lihat pada fungsi diatas yaitu fungsi tampilkan() yang memuat sebuah pernyataan pengulangan (loop) for dan memproses semua data tadi sekaligus.
Fungsi main() adalah sebagai pengendali, yaitu memanggil fungsi input_data(), hitung_data() dan tampilkan().
Sumber : Internet