A.           Fungsi
·      Pengertian Fungsi ( function )
Function/fungsi adalah satu blok kode yang melakukan tugas tertentu atau satu blok instruksi yang di eksekusi ketika dipanggil dari bagian lain dalam suatu program.
·      Tujuan pembuatan fungsi adalah :
-       Memudahkan dalam pembuatan program.
-       Menghemat ukuran program. 
·      Keuntungan memakai fungsi :
-       Menguraikan tugas pemrograman rumit menjadi langkah-langkah yang lebih sederhana atau kecil.
-       Mengurangi duplikasi kode (kode yang sama ditulis berulang-ulang) dalam program.
-       Dapat menggunakan kode yang ditulis dalam berbagai program yang berbeda.
-       Memecah program besar menjadi kecil sehingga dapat dikerjakan oleh programmer-programmer atau dipecah menjadi beberapa tahap sehingga mempermudah pengerjaan dalam sebuah projek
-       Menyembunyikan informasi dari user sehingga mencegah adanya perbuatan iseng seperti memodifikasi atau mengubah program yang kita buat
-       Meningkatkan kemampuan pelacakan kesalahan, jika terjadi suatu kesalahan kita tinggal mencari fungsi yang bersangkutan saja dan tak perlu mencari kesalahan tersebut di seluruh program.
·      Bentuk umum Sebuah fungsi adalah sebagai berikut :
Tipedata namafungsi(daftarparameter)
{

/*Badan Fungsi*/
return nilaireturn; /* untuk tipe data bukan void */
}
·      Jenis-jenis fungsi pada C++
Ada dua jenis fungsi yaitu :
1.    Void ( Fungi tanpa nilai balik )
Fungsi yang void sering disebut juga prosedur. Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut. 
Ciri-ciri dari jenis fungsi Void adalah sebagai berikut: 
-        Tidak adanya keyword return.
-        Tidak adanya tipe data di dalam deklarasi fungsi.
-        Menggunakan keyword void.
-        Tidak dapat langsung ditampilkan hasilnya.
-        Tidak memiliki nilai kembalian fungsi
-       Keyword void juga digunakan jika suatu function tidak mengandung suatu parameter apapun.
Contoh fungsi void :
#include <iostream>
using namespace std;
void kerucut()
{
     float r,t,v;
     cout<<"--Mencari Volume Kerucut--"<<endl;
     cout<<"Masukkan nilai jari-jari(r) kerucut : ";
     cin>>r;
     cout<<"Masukkan nilai tinggi(t) kerucut    : ";
     cin>>t;
     cout<<"Volume kerucut dengan r="<<r<<" dan t="<<t<<" adalah : ";
     v=(1*3.14*r*r*t)/3;
     cout<<v<<endl;
}
void balok()
{
     int p,l,t,v;
     cout<<"--Mencari Volume Balok--"<<endl;
     cout<<"Masukkan nilai panjang (p) balok : ";
     cin>>p;
     cout<<"Masukkan nilai lebar (l) balok   : ";
     cin>>l;
     cout<<"Masukkan nilai tinggi (t) balok  : ";
     cin>>t;
     cout<<"Volume balok dengan p="<<p<<", l="<<l<<", dan t="<<t<<" adalah : ";
     v=p*l*t;
     cout<<v<<endl;
}
void main ()
{
     kerucut();
     balok();
}

2.    NonVoid (Fungsi dengan nilai balik)
Fungsi non-void disebut juga function. Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function tersebut .
Ciri-ciri dari jenis fungsi non void adalah sebagai berikut:
-        Ada keyword return
-        Ada tipe data yang mengawali fungsi
-        Tidak ada keyword void
-        Memiliki nilai kembalian .  
-        Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu 
-        Sehingga dapat langsung ditampilkan hasilnya  
Contoh fungsi non void :
#include <iostream>
using namespace std;
float kerucut()
{
     float r,t,v;
     cout<<"--Mencari Volume Kerucut--"<<endl;
     cout<<"Masukkan nilai jari-jari (r) kerucut : ";
     cin>>r;
     cout<<"Masukkan nilai tinggi (t) kerucut    : ";
     cin>>t;
     cout<<"Volume kerucut dengan r="<<r<<" dan t="<<t<<" adalah : ";
     v=(1*3.14*r*r*t)/3;
     return v;
}
int balok()
{
     int p,l,t,v;
     cout<<"--Mencari Volume Balok--"<<endl;
     cout<<"Masukkan nilai panjang (p) balok : ";
     cin>>p;
     cout<<"Masukkan nilai lebar (l) balok   : ";
     cin>>l;
     cout<<"Masukkan nilai tinggi (t) balok  : ";
     cin>>t;
     cout<<"Volume balok dengan p="<<p<<", l="<<l<<", dan t="<<t<<" adalah : ";
     v=p*l*t;
     return v;
}
void main ()
{
     cout<< kerucut()<<endl;
     cout<< balok()<<endl;
}
·      Parameter
Terdapat dua macam para parameter fungsi, yaitu :
-       Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi.
-       Parameter Aktual adalah variabel yang dipakai dalam pemanggilan fungsi.
Bentuk penulisan Parameter Formal dan Parameter Aktual.
·      Passing by Value
-       Call by value akan menyalin nilai dari parameter aktual ke parameter formal.  
-       Yang dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari datanya.
-       Fungsi yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari  nilai aslinya yang digunakan oleh bagian program yang memanggil fungsi. 
-       Perubahan nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian program yang memanggilnya.
-       Pengiriman parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang memanggil fungsi ke fungsi yang dipanggil.  
-       Pengiriman suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah variabel, elemen array atau konstanta saja.
·      Passing by Reference
-       Call by Referense merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi.   
-        Yang dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan  nilai datanya.
-       Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang  sama untuk mendapatkan nilai datanya. 
-       Perubahan nilai di fungsi akan merubah nilai asli di bagian program yang memanggil fungsi.  
-       Pengiriman parameter secara referensi adalah pengiriman dua arah, yaitu   dari fungsi pemanggil ke fungsi yang dipanggil dan juga sebaliknya.
-       Pengiriman secara acuan tidak dapat bdilakukan untuk suatu ungkapan.
Contoh fungsi yang menggunakan parameter :
#include <iostream>
using namespace std;
#define PI 3.14;
float kerucut(float r,float t)
{
          float v=(1*3.14*r*r*t)/3;
          return v;
}
int balok(int p,int l,int t)
{
          int v=p*l*t;
          return v;
}
void main ()
{
          int a,b,c,d,e;
          cout<<"--Menghitung Volume Kerucut--"<<endl;
          cout<<"Masukkan nilai jari-jari(r) : ";
          cin>>a;
          cout<<"Masukkan nilai tinggi(t)    : ";
          cin>>b;
          cout<<"Volume kerucut adalah       : ";
          cout<<kerucut(a,b)<<endl;
          cout<<"--Menghitung Volume Balok--"<<endl;
          cout<<"Masukkan nilai panjang(p)   : ";
          cin>>c;
          cout<<"Masukkan nilai lebar(l)     : ";
          cin>>d;
          cout<<"Masukkan nilai tinggi(t)    : ";
          cin>>e;
          cout<<"Volume balok adalah         : ";
          cout<<balok(c,d,e)<<endl;
}
B.            Array
·      Pengertian
Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu larik disebut dengan elemen-elemen larik.Letak urutan dari suatu elemen larik ditunjukkan oleh suatu subscript atau suatu index.
·      Menurut dimensinya, array dapat dibedakan menjadi :
1.    Array satu dimensi
Setiap elemen array dapat diakses melalui index
Index array secara default dimulai dari 0.
Deklarasi array :
Tipe_array nama_array[ukuran]
Contoh :
#include <iostream>
using namespace std;
void main()
{
     cout<<"---Harga Layanan Salon---"<<endl;
     cout<<"Perawatan 1         : 100000"<<endl;
     cout<<"Perawatan 2         : 50000"<<endl;
     cout<<"Perawatan 3         : 75000"<<endl;
     cout<<"Tidak ingin memilih : 0"<<endl;
    
     int salon[3];
     int total=0;
     int diskon,selisih;
     for (int i=0;i<3;i++)
     {
                 cout<<"Masukkan harga jenis perawatan yang Anda inginkan : ";
                 cin>>salon[i];
                 cout<<salon[i]<<endl;
                 total=total+salon[i];
                 diskon=0.1*total;
                 selisih=total-diskon;
     }
     cout<<"Total harga perawatan Anda adalah : ";
     cout<<total<<endl;
    
     cout<<"Diskon Anda sebesar               : ";
     cout<<diskon<<endl;

     cout<<"Anda harus membayar sebesar       : ";
     cout<<selisih<<endl;

     int uang;
     cout<<"Masukan uang Anda                 : ";
     cin>>uang;
     int kembali=uang-selisih;
     cout<<"Uang kembalian Anda sebesar       : ";
     cout<<kembali<<endl;
}

2.    Array dua dimensi
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah buah kolom bentuknya dapat berupa matriks atau tabel.
Deklarasi array :
Tipe_array nama_array [baris][kolom]
Contoh :
#include <iostream>
using namespace std;
void main()
{
     int i,j;
     int a[3][3]={{4,5,6},{2,3,4},{1,2,3}};
     cout<<"Matriks A : "<<endl;
     for (i=0;i<3;i++)
     {
                 for(j=0;j<3;j++)
                 {
                             cout<<a[i][j]<<"   ";
                 }
                 cout<<endl;
     }
     cout<<endl;
    
     int b[3][3]={{6,4,3},{5,1,3},{7,1,3}};
     cout<<"Matriks B : "<<endl;
     for (i=0;i<3;i++)
     {
                 for(j=0;j<3;j++)
                 {
                             cout<<b[i][j]<<"   ";
                 }
                 cout<<endl;
     }
     cout<<endl;
    
     int c;
     cout<<"Matriks C = A+B : "<<endl;
     for (i=0;i<3;i++)
     {
                 for(j=0;j<3;j++)
                 {
                             c=a[i][j]+b[i][j];
                             cout<<c<<"   ";
                 }
                 cout<<endl;
     }
     cout<<endl;

}

3.    Array Multidimensi
Array multidimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array multidimensi sama saja dengan deklarasi array dimensi satu maupun dimensi dua.
Deklarasi array :
Tipe_array nama_array [ukuran 1][ukuran 2] . . . [ukuran N]

·      Perbedaan array dengan tipe data lain :
-       Array dapat mempunyai sejumlah nilai, sedangkan tipe data lain hanya dihubungkan dengan sebuah nilai saja.
-       Array dapat digunakan untuk menyimpan beberapa nilai tipe data lain data (char, int, float, double, long, dll) yang sama dengan satu nama saja.
-       Selain itu, array dapat berupa satu dimensi atau lebih, sedangkan tipe data lain hanya berupa satu dimensi.
·      Array juga dapat digunakan sebagai parameter. Jenisnya :
a. Array dimensi satu sebagai parameter :
Pengiriman parameter berupa array dimensi satu merupakan pengiriman secara acuan/referensi, karena yang dikirimkan adalah alamat dari elemen pertama arraynya, bukan seluruh nilai-nilai elemenya. Alamat elemen pertama dari array dapat ditunjukkan oleh nama lariknya yang tidak ditulis dengan indeknya.
b. Array dua dimensi sebagai parameter :
Pengiriman parameter berupa array dua dimensi hampir sama dengan pengiriman parameter array satu dimensi, hanya saja perbedaannya adalah dalam array dua dimensi harus menyebutkan baris dan kolom array dimensi dua tersebut, mendeklarasikan MAX_ROWS dan MAX_COLS yang digunakan untuk pengiriman parameter array dua dimensi dan pada saat pengiriman parameter formal array dua dimensi, kita harus menyebutkan banyaknya dimensi array untuk kolom, sehingga ukuran kolom dapat diketahui, hal ini berkaitan dengan pemesanan variabel array di memori.