Variabel Larik atau lebih dikenal dengan ARRAY adalah Tipe terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai tipe sama. Suatu Array mempunyai jumlah komponen yang banyaknya tetap. Banyaknya komponen dalam suatu larik ditunjukan oleh suatu indek untukmembedakan variabel yang satu dengan variabel yang lainnya.
Variabel array dalam Borland C++, dapat digolongkanmenjadi dua buah dimensi:
• Array Berdimensi Satu.
• Array Berdimensi Dua
A. Array Berdimensi Satu
Sebelum digunakan, variabel array perlu dideklarasikan terlebih dahulu. Cara mendeklarasikan variabel array sama seperti deklarasi variabel yang lainnya, hanya saja diikuti oleh suatu indek yang menunjukan jumlah maksimum data yang disediakan.
Bentuk Umum pendeklarasian array:
Tipe_Data Nama_Variabel[Ukuran]
Keterangan :
• Type Data : Untuk menyatakan type data yang digunakan.
• Ukuran : Untuk menyatakan jumlah maksimum elemen array.
Contoh Pendeklarasian Array
Suatu array dapat digambarkan sebagai kotak panjang yang berisi kotak-kotak kecil didalam kotak panjang tersebut.
Subscript atau Index array pada C++, selalu dimulaidari Nol ( 0 )
1.) Inisialisasi Array Berdimensi Satu
Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk pendefinisian suatu array dapat dilihat dari contohberikut :
Tipe_data nama_array[jml_elemen] = { nilai array };
Contoh :
/* ---------------------------------- */
/* Inisialisasi Array Dimensi 1 */
/* ---------------------------------- */
#include <conio.h>
#include <iostream.h>
main( )
{
char hari[7][10] =
{"Minggu","Senin","Selasa","Rabu","Kamis","jum'at","Sabtu"};
clrscr( );
cout<<"Nama-nama hari:"<<endl;
cout<<hari[0]<<endl<<hari[1]<<endl<<hari[2]<<endl<<hari[3]
<<endl<<hari[4]<<endl;
getch();
}
.2. Mengakses Array Berdimensi Satu
Suatu array, dapat diakses dengan menggunakan subscript atau indexnya.
Bentuk umum pengaksesan dengan bentuk :
Contoh
Nil_Akhir[3];
Nil_Akhir[1];
Nil_Akhir[0];
Contoh :
/* ---------------------------- */
/* Program Array Satu Dimensi */
/* ---------------------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<iomanip.h>
main( )
{
int i;
char nama[5][20];
float nilai1[5];
float nilai2[5];
float hasil[5];
clrscr( );
for(i=1;i<=2;i++)
{
cout<<"Data Ke - "<<i<<endl;
cout<<"Nama Siswa : "; gets(nama[i]);
cout<<"Nilai MidTest : "; cin>>nilai1[i];
cout<<"Nilai Final : "; cin>>nilai2[i];
hasil[i] = (nilai1[i] * 0.40)+ (nilai2[i] * 0.60);
cout<<endl;
}
cout<<"------------------------------------------"<<endl;
cout<<"No. Nama Siswa Nilai Nilai ";
cout<<"Hasil"<<endl;
cout<<" MidTest Final ";
cout<<"Ujian"<<endl;
cout<<"------------------------------------------"<<endl;
for(i=1;i<=2;i++)
{
cout<<setiosflags(ios::left)<<setw(4)<<i;
cout<<setiosflags(ios::left)<<setw(10)<<nama[i];
cout<<setprecision(2)<<" "<<nilai1[i];
Nama_Array[Subscript/Index]
cout<<setprecision(2)<<" "<<nilai2[i];
cout<<setprecision(2)<<" "<<hasil[i]<<endl;
}
cout<<"------------------------------------------"<<endl;
getch();
}
B. Array Berdimensi Dua
Array dimensi dua tersusun dalam bentuk baris dan kolom, dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dimensi dua dapat digunakan seperti pendatan penjualan, pendataan nilai dan lain sebagainya.
Bentuk Umum pendeklarasian array :
Tipe_Data Nama_Variabel[index-1][index-2]
Keterangan:
• Type Data : Untuk menyatakan type data yang digunakan.
• Index-1 : Untuk menyatakan jumlah baris
• Index-2 : Untuk menyatakan jumlah kolom
Contoh Pendeklarasian Array
Sebagai contoh pendeklarasian yang akan kita gunakan adalah pengolahan data penjualan, berikut dapat anda lihat pada tabel berikut :
Jika anda lihat dari tabel 7.1 diatas maka dapat dituliskan kedalam array dimensi dua berikut:
1.) Inisialisasi Array Berdimensi Dua
Inisialisasi adalah memberikan nilai awal terhadap suatu variabel. Bentuk pendefinisian suatu array dapat dilihat dari contohberikut:
Contoh :
#include <conio.h>
#include <iostream.h>
main()
{
char nama[2][3][10]={{"Pak","BU","Mas"},
{"Andi","Budi","Carli"}};
clrscr();
cout<<nama[0][0]<<ends<<nama[1][0]<<endl;
cout<<nama[0][1]<<ends<<nama[1][2]<<endl;
cout<<nama[0][2]<<ends<<nama[1][1]<<endl;
getch();
}
2.) Mengakses Array Berdimensi Dua
Suatu array, dapat diakses dengan menggunakan subscript atau indexnya. Contoh pengaksesan dengan bentuk sebagai berikut:
Contoh :
/* -------------------- */
/* Array Dimensi 2 */
/* -------------------- */
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<iomanip.h>
main()
{
int i, j;
int data_jual[4][4];
clrscr();
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
cout<<"Data Ke - "<<i<<" "<<j<<endl;
cout<<"Jumlah Penjulan : ";
cin>>data_jual[i][j];
}
}
cout<<"Data Penjualan Pertahun"<<endl;
cout<<"-----------------------"<<endl;
cout<<"NO 2007 2008 2093"<<endl;
cout<<"-----------------------"<<endl;
for(i=1;i<=3;i++) {
cout<<setiosflags(ios::left)<<setw(5)<<i;
for(j=1;j<=3;j++)
{
cout<<setiosflags(ios::right)<<setw(4);
cout<<data_jual[i][j];
cout<<" ";
}
cout<<endl;
}
cout<<"-----------------------"<<endl;
getch( );
}
3.) Sorting dalam C++
a. Selection Sort
Tehnik pengurutan dengan cara pemilihan elemen atauproses kerja dengan memilih elemen data terkecil untuk kemudian dibandingkan & ditukarkan dengan elemen pada data awal, dst sampai seluruh elemen shg akan menghasilkan pola data yg telah disort.
Prinsip kerja dari teknik ini adalah sbb :
1. Pengecekan dimulai data ke-1 sampai dengan data ke-n
2. Tentukan bilangan dengan Index terkecil dari data bilangan tersebut
3. Tukar bilangan dengan Index terkecil tersebut dengan bilangan pertama ( I = 1 ) dari data bilangan tersebut
4. Lakukan langkah 2 dan 3 untuk bilangan berikutnya (I= I+1 ) sampai didapatkan urutan yg optimal.
Contoh :
/* -------------------------------- */
/* Selection sort dengan C++ */
/* -------------------------------- */
#include<conio.h>
#include<stdio.h>
int main() {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
Urut = 1;
for(i = 0; i < n; i++) {
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 0; i < n - 1; i++) {
iMin = i;
for(j = Urut; j < n; j++) {
if(Arr[j] < Arr[iMin]) {
iMin = j;
if(Arr[i] != Arr[iMin]) {
Tmp = Arr[i];
if(Arr[i] > Arr[iMin]) {
Arr[i] = Arr[iMin];
Arr[iMin] = Tmp;
}
}
}
}
Urut = Urut + 1;
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}for(i = 0; i < n - 1; i++) {
iMin = i;
for(j = Urut; j < n; j++) {
if(Arr[j] < Arr[iMin]) {
iMin = j;
if(Arr[i] != Arr[iMin]) {
Tmp = Arr[i];
if(Arr[i] > Arr[iMin]) {
Arr[i] = Arr[iMin];
Arr[iMin] = Tmp;
}
}
}
Urut = Urut + 1;
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}
b. Buble Sort
Prinsip Kerja dari Bubble Sortadalah :
1. Pengecekan mulai dari data ke-1 sampai data ke-n
2. Bandingkan data ke-n dengan data sebelumnya (n-1)
3. Jika lebih kecil maka pindahkan bilangan tersebut dengan bilangan yg ada didepannya (sebelumnya ) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.
Contoh :
#include<conio.h>
#include<stdio.h>
int main() {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
for(i = 0; i < n; i++) {
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 1; i < n; i++) {
for(j = 0; j < n - 1; j++) {
if(Arr[j] > Arr[j + 1]) {
Tmp = Arr[j];
Arr[j] = Arr[j + 1];
Arr[j + 1] = Tmp;
}
}
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch();
}
c. Insertion Short
Prinsip dasar Insertion adalah secara berulang-ulang menyisipkan / memasukan setiap elemen. ke dlm posisinya / tempatnya yg benar.
1. Prinsip Kerja Insertion Sortadalah
2. Pengecekan mulai dari data ke-1 sampai data ke-n
3. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
4. Bandingkan data ke-I tersebut dengan data sebelumnya (I-1), Jika lebih kecil maka data tersebut dapat disisipkan ke data awal sesuai dgn posisisi yg seharusnya
5. Lakukan langkah 2 dan 3 untuk bilangan berikutnya (I= I+1 ) sampai didapatkan urutan yg optimal.
Contoh :
#include "conio.h"
#include "stdio.h"
int main( ) {
int i, j, iMin;
int n, Urut;
int Tmp, code;
int Arr[100];
printf("\nInputkan banyak data yang akan diurutkan : ");
scanf("%i", &n);
for(i = 0; i < n; i++)
{
printf("Masukan data ke %i : ", i + 1);
scanf("%i", &Arr[i]);
}
for(i = 1; i < n; i++)
{
Tmp = Arr[i];
j = i - 1;
while(Arr[j] >= Tmp && j > 0) {
Arr[j + 1] = Arr[j];
j = j - 1;
}
if(Tmp >= Arr[j]) {
Arr[j + 1] = Tmp;
} else {
Arr[j + 1] = Arr[j];
Arr[j] = Tmp;
}
}
printf("\nSetelah Pengurutan\n");
for(i = 0; i < n; i++) {
printf("Elemen ke %i : %i\n", i + 1, Arr[i]);
}
getch( );
}