Define dan Const

Selain menggunakan function, kalian bisa menggunakan dua keyword ini untuk mempersingkat dan mempermudah pembacaan bagian program yang berulang. Dua keyword tersebut adalah const dan #define.

Const

Keyword const digunakan untuk mengubah variabel menjadi konstanta. Variabel yang sudah dijadikan konstanta tidak bisa diubah selama program berjalan. Jika ada statement yang berusaha mengubah nilainya, maka akan muncul peringatan error.

int main(){
    const float pi=3.14;
    pi=3.14159;
    return 0;
}

Kode program di atas mengubah nilai pi setelah dideklarasikan. Itu membuat compiler menampilkan error karena ada usaha untuk mengubah nilai konstanta.

Konstanta maupun variabel disimpan sebagai satu nilai di dalam memori. Perbedaannya ada pada bisa dan tidaknya variabel tersebut diubah. Karena sama-sama disimpan dalam memori komputer, kalian bisa mengecek alamat penyimpanannya dengan pointer.

Konstanta perlu diberi nilai saat deklarasi, kecuali kalian ingin nilainya 0 atau acak. Konstanta akan sangat berguna jika kalian ingin menggunakan nilai yang sama berkali-kali.

Define

Selain menggunakan const, kalian juga bisa menggunakan #define untuk melakukan hal yang hampir sejenis. Bedanya, define tidak menyimpan nilai dalam memori. Define hanya mengganti bagian tertentu dari program saat kode program dicompile. 

Define termasuk preprocessor seperti halnya include. Penulisannya diawali dengan tanda pagar / hash (#). Preprocessor diakhiri dengan enter atau akhir baris, jadi kalian tidak perlu tanda titik koma untuk mengakhirinya. Singkatnya, sintaksnya adalah seperti di bawah ini.

  • #define nama_define nilai_define

Define bisa dibilang mirip dengan "replace" yang biasa kalian temukan di program teks editor atau semacamnya. Define menggunakan nama tertentu untuk menggantikan satu bagian program yang berulang.

Contoh penggunaannya bisa kalian lihat di bawah ini.

#include <iostream>

#define negaraku "Indonesia"

using namespace std;

int main(){
    cout << negaraku << " merdeka" << endl;
    cout << negaraku << " maju" << endl;
    cout << negaraku << " menang";
    return 0;
}

Sebelum dicompile, compiler akan mengubah semua kata negaraku jadi "Indonesia" sehingga hasilnya sama dengan di bawah ini.

#include <iostream>

using namespace std;

int main(){
    cout << "Indonesia" << " merdeka" << endl;
    cout << "Indonesia" << " maju" << endl;
    cout << "Indonesia" << " menang";
    return 0;
}

Define akan berguna untuk mempermudah pembacaan program. Selain itu, define berguna di beberapa bagian program yang hanya menerima angka, dan tidak membolehkan variabel maupun konstanta. Kalian juga bisa membuat perubahan pada program hanya dengan mengubah satu baris terutama saat kalian tidak yakin pada pengaturan atau nilai yang kalian gunakan beberapa kali.

Macro

Define bisa menyimpan nilai angka, string, karakter, dan boolean. Selain itu, define juga bisa digunakan sebagai macro yang mempersingkat penulisan satu statement, apalagi kalau kalian perlu memakai statement yang sama berulang.

#include <iostream>

#define makro i++

using namespace std;

int main(){
    int i=2;
    cout << "i++ = " << makro << endl;
    for(i=0;i<5;makro)cout << i << " ";

    return 0;
}
Output :
i++ = 2
0 1 2 3 4

Contoh di atas bisa dibilang sama dengan contoh di bawah ini.

#include <iostream>

using namespace std;

int main(){
    int i=2;
    cout << "i++ = " << i++ << endl;
    for(i=0;i<5;i++)cout << i << " ";

    return 0;
}

Kesimpulannya, #define kegunaannya mirip dengan "replace" pada text editor. Semua nama konstanta yang didefinisikan dengan define akan diganti dengan nilainya saat kode program dicompile. Kalian cukup mengubah satu baris untuk mengubah kegunaan dari sekumpulan baris jika kalian menggunakan define.

Kira-kira, apa yang akan terjadi kalau saya mengubah i++ menjadi (i+=2)?

#include <iostream>

#define makro (i+=2)

using namespace std;

int main(){
    int i=2;
    cout << "i++ = " << makro << endl;
    for(i=0;i<5;makro)cout << i << " ";

    return 0;
}

Kalian bisa mencoba untuk mengcompile dan menjalankan sendiri kode program di atas.