DASAR TEORI :
Dalam function dengan array adalah penggunaan variabel array pada saat pendeklarasian fungsi, hal ini dinilai lebih efisien dalam menyelesaikan kasus-kasus matriks yang berukuran cukup besa, dengan menggunakan suatu fungsi maka suatu proses pengulangan sintaks tidak perlu dilakukan cukup hanya menjalankan fungsi yang bervariabel array contoh:
Void isi_larik (int a[10][10])
Pendeklarasian sebuah array dalam sebuah sub program atau fungsi
Fungsi Nama Fungsi (Parameter Tipe Data Array)
Keunggulan Array :
- Array sangat cocok pengaksesan acak, sembarang elemen pada array dapat diakses secaraa langsung tanpa melalui elemen-elemen lain.
- Jika berada dilokasi suatu elemen, maka sangat mudah untuk menelusuri ke elemen sekitarnya baik baik elemen sebelumnya maupun setelahnya.
- Jika elemen-elemen array adalah nilai independen dan seluruhnya harus terjaga, dengan penyimpanan dengan array akan sangat efisien.
Kelemahan Array:
- Array harus bertipe homogen, kita tidak dapat memiliki elemen array yang berlainan.
- Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya diwaktu eksekusi. Bila penambahan dan pengurangan terjadi terus menerus, maka representasi statis menjadi tidak mungkin hal ini berakibat pada
Ø Penggunaan memory menjadi tidak efisien
Ø Membuang banyak waktu dalam komputasi
Ø Pada suatu aplikasi, representasi statis tidak mungkin.
PRAKTIKUM 4.1
STUDI KASUS 4.1 :
Dalam sebuah deret bilangan yang dikumpulkan dalam variabel array yang terdiri dari 10 elemen, dari setiap bilangan tersebut memiliki alamat indeksnya, dengan memasukkan sebuah bilangan yang terdapat di variabel array kita dapat mengetahui alamat indeks dari bilangan tersebut pada nomor indeks berapa bilangan indeks itu tersimpan.
SYNTAX :
#include<iostream.h>
#include<stdio.h>
#include<conio.h>
int main()
{
int A[10] = {12,24,13,25,10,11,21,20,15,18};
int bil,c;
for(int i = 0; i < 10; i++)
{
cout<<"Indeks- ["<<i<<"]"<<" "<<A[i]<<endl;
}
cout<<endl;
cout<<"Masukan Bilangan Yang Akan Dicari :";
cin>>bil;
for(int c = 0; c < 10; c++)
{
if(A[c] == bil)
{
cout<<"Bilangan Yang Dicari Berada Di Indeks Ke-"<<c;
break;
}
}
if(bil!=A[c])
cout<<"\nBilangan Yang Anda Cari Tidak Terdaftar";
getch();
return 0;
}
HASIL RUNNING :
PEMBAHASAN:
Dalam program tersebut digunakan untuk mencari nilai pada indeks, kita masukan nilai yang akan dicari indeksnya sesuai pada pilihan tersebut. Program ini menggunakan variabel array yang berguna untuk menampung nilai dalam 1 variabel, dalam variabel array sudah terdapat nilainya yaitu {12,24,13,25,10,11,21,20,15,18}. Untuk mencari indeks atau urutan nilai dalam array tersebut harus menggunakan intruksi for dimana kegunaannya yaitu untuk mengulang apakah nilai tersebut terdapat di dalam variabel array tersebut, dan dalam intruksi for juga terdapat if yang gunanya untuk mengidentifikasi apakan jika dalam for nilai yg di masukan benar adanya maka if ini akan di jalankan dan menampilkan indeknya, untuk if nya mempunyai kondisi yaitu bil == A[c]. Jadi bil ini nilai yang di input dan untuk A[c] itu adalah variable array dimana c nya adalah variable dari pengulangan.
PRAKTIKUM 4.2
STUDI KASUS 4.2 :
Mobil 13 adalah perusahaan yang menjual mobil bekas, berdagang mobil bekas selama bertahun-tahun ternyata hanya ada tida merek mobil yang selalu dicari oleh konsumen yaitu Toyota, Honda dan Suzuki. Mobil 13 saat ini sudah memiliki cabang di 3 kota besar yaitu Jakarta, Surabaya dan Medan dengan semakin banyaknya konsumen yang percaya dengan kualitas mobil bekas yang dijual oleh mobil 13 perusahaan membutuhkan program yang dapat mencatat semua penjualan mobil bekas perbulan disetiap cabangnya, selama ini masih diperhitungan yang masih bersifat manual dalam bentuk bagan diatas kertas.
SYNTAX :
#include<stdio.h>
#include<conio.h>
void judul(char kota[11])
{
char merek[3][7] ={"Toyota","Honda","Suzuki"};
char bulan [13][4]={"Jan","Feb","Mar","Apr","Mei","Jun","jul","Ags","Sep","Okt",
"Nop","Des","JML"};
int i;
clrscr();
printf("PENJUALAN MOBIL BEKAS\n\n");
printf("Kota :%s\n\n\t",kota);
for(i=0; i<13; i++)
printf("%s ",bulan[i]);
for(i =0; i<3; i++)
printf("\n %s",merek[i]);
}
void isi_data(long jual[4][13][4])
{
char kota [4][11] = {"Jakarta","Surabaya", "Medan", "Semua Kota"};
int i_k, i_m, i_b;
//indeks kota,merek,bulan//
for(i_k =0; i_k<3;i_k++)//kota
{
judul(kota[i_k]);
for(i_m=0; i_m<3; i_m++)//merek
{
for(i_b =0; i_b<12; i_b++)//bulan
{
gotoxy(10 + i_b *4, i_m +6);
scanf("%d",&jual[i_m][i_b] [i_k]);
jual[i_m][12][i_k] += jual[i_m] [i_b] [i_k];
//isi ke samping
jual[3][i_b][i_k] += jual [i_m] [i_b] [i_k];
//isi kebawah
jual[3][12][i_k] += jual[i_m][i_b][i_k];
//isi ke total
jual[i_m][i_b][3] +=jual[i_m][i_b][i_k];
//isi ke lapis ke-4
}
gotoxy(59,i_m+6);
printf("%d",jual[i_m][12][i_k]);
}
gotoxy(11,10);
for(i_b =0; i_b<13;i_b++)
printf("%d-4d",jual[3][i_b][i_k]);
fflush(stdin);
getch();
}
}
void total_jual(long jual[4][13][4])
{
int i_m, i_b;
for(i_m =0; i_m<3; i_m++)
for(i_b =0; i_b<12; i_b++)
{
jual[i_m][12][3] += jual[i_m][i_b][3];
//tambah ke samping
jual[3][i_b][3] +=jual[i_m][i_b][3];
//tambah ke bawah
jual[3][12][3] +=jual[i_m][i_b][3];
//tambah ke grand total
}
judul("semua");
for(i_m =0; i_m<4; i_m++)
{
i_m == 3; gotoxy (11,i_m +7);gotoxy(11,i_m +6);
for(i_b=0; i_b<13; i_b++)
printf("%l",jual[i_m][i_b][3]);
}
}
int main()
{
long jual[4][13][4];
//merek,bulan,kota
isi_data(jual);
total_jual(jual);
return 0;
}
HASIL RUNNING :
PEMBAHASAN:
Dalam program tersebut merupakan sebuah program input data penjualan mobil bekas dimasing - masing cabang atau kota dalam 12 bulan, pertama - tama masukan penjualan barang pada merek mobil perbulan, setelah itu hitung jumlah keseluruhan dengan syntax
jual[i_m][12][3] += jual[i_m][i_b][3];
//tambah ke samping
jual[3][i_b][3] +=jual[i_m][i_b][3];
//tambah ke bawah
jual[3][12][3] +=jual[i_m][i_b][3];
//tambah ke grand total
Syntax diatas adalah sebuah variable array yang di inputkan, jadi variabel pertama kan menjumlahkan dari bulan 1 ke 12, variable ke 2 menjumlah per bulan , variable 3 menjumlah keseluruhan.
PRAKTIKUM 4.3
STUDI KASUS 4.3 :
Dalam suatu kumpulan angka yang tidak beraturan kita diminta untuk mengurutkan dari mulai angka yang terkecil hingga yang terbesar, tipe data yang dapat menangani kasus ini yang effisien adalah tipe data array.
SYNTAX :
#include<stdio.h>
#include<conio.h>
void bubblesort (int data[],int n)
{
int i, j=0, temp, flag=1;
while(flag)
{
flag =0;
for(i=0; i<n; i++)
{
if(data[i]>data[i+1])
{
temp = data[i];
data[i] = data[i+1];
data[i+1] =temp;
flag++;
}
}
}
}
main()
{
int data[1000];
int n,i;
printf("__________.::BUBBLE SORT:.__________\n");
printf("masukan angka (maks 1000):");
scanf("%d",&n);
printf("Data (pisahkan angka dengan spasi):");
for(i=0; i<n; i++)
scanf("%d",&data[i]);
bubblesort(data,n);
printf("\n Output after sort :\n");
for(i=0; i<n;i++)
printf("%d",data[i]);
getch();
return 0;
}
HASIL RUNNING :
PEMBAHASAN:
Dalam program tersebut adalah sebuah program untuk mengurutkan angka dari kecil ke besar dengan input tak beraturan, dan untuk mendapatkan hasil seperti itu menggunakan intruksi pengulanga yaitu while dan for
while(flag)
{
flag =0;
for(i=0; i<n; i++)
{
if(data[i]>data[i+1])
{
temp = data[i];
data[i] = data[i+1];
data[i+1] =temp;
flag++;
}
Jadi while itu mempunyai kondisi flag itu harus 1 jika tidak 1 maka while itu tidak akan di lakukan, nah dalam while terdapat intruksi for untuk mengulang nilai yang di masukan dan mengidentifikasi nilai mana yang lebih kecil, hadir jika (if (data[i]>data[i+1])) maka if itu akan berjalan dan temp mempunyai nilai yang sama dengan data[i], dan data[i] sama dengan data[i+1]; , data[i+1] sama dengan temp, jadi itu gunanya untuk mengulang - ulang nilai sedangkan untuk flag nilai awalnya adalah 0 dan flag ++ jadi 0 itu akan di tambah, jika anda memasukan script printf("%d",flag) maka yang akan muncul adalah 123456123451234123121, nah flag ini digunakan untuk menentukan kondisi perulangan while itu jika sudah flagnya sudah satu maka perulangan while tidak akan di jalan kan, jadi flag pertama 1-6 itu menunjukan data[i] sudah menemukan nilai terkecilnya seterusnya 1-5 berarti sudah menemukan nilai terkecil ke 2 sampai flag = 1 maka itu adalah nilai terbesar yang sudah di temukan,