C++ adalah bahasa pemrograman yang dirancang sebagai
penyempurnaan bahasa C. Menurut Bjarne Stroustrup sang pencipta, beliau
menjadikan C sebagai dasar bahasa C++ nya karena bahasa C dinilai sudah cukup
baik. Namun apa kedua bahasa tersebut sama karena berasal dari garis
“keturunan” yang sama? Ataukah kedua bahasa berbeda? Check this out.
Kerangka Program
Kerangka program utama adalah kerangka utama atau template
yang digunakan untuk membuat setiap program. Dalam C, kita menulis program
seperti ini:
#include
<stdio.h>
void main()
{
printf(“Halo
dunia”);
}
Sedangkan dalam C++ kita menulis seperti ini:
#include
<iostream>
using
namespace std;
int main()
{
cout<<”Halo
dunia”<<endl;
return 0;
}
penjelasan:
Dalam C, untuk melakukan input output kita menggunakan
library standard bernama stdio.h sedangkan di C++ kita menggunakan iostream.
Dalam potongan kode di atas kita akan melihat ada baris using namespace
std; maksudnya adalah kita menggunakan namespace bernama std. Apa itu
namespace? Namespace diibaratkan seperti folder yang menyimpan berkas-berkas.
Kita dapat membuat namespace untuk mengelompokkan fungsi-fungsi tertentu
sehingga lebih sistematis. Keuntungannya adalah, kita dapat membuat banyak nama
fungsi yang sama namun dibedakan menjadi kategori-kategori tertentu sesuai
namespace yang kita buat.
Lanjut ke baris selanjutnya, pada fungsi utama main() di
program C kita bisa menulis nilai kembalian fungsi adalah void yang
berarti fungsi tidak akan mengembalikan nilai apapun ke pemanggil / ke OS.
Sedangkan dalam C++ kita lihat nilai kembalian fungsi didefinisikan sebagaiint yang
artinya setelah program dieksekusi maka akan mengembalikan nilai tertentu
(dalam hal ini 0) kepada pemanggil / OS. Sebenarnya fungsi main() dalam C juga
dapat diberikan nilai int namun itu bukan suatu keharusan. Sedangkan dalam C++
kita diwajibkan menggunakan int sebagai nilai kembalian (jika menggunakan
bahasa C++ yang telah standard).
Nah sekarang kita mencoba menuliskan kata “Halo dunia” ke
layar. Dalam C kita melakukannya dengan printf(“Halo dunia); sedangkan
dalam C++ kita melakukannya dengan cout<<”Halo dunia”;
Prosedural vs OOP
Satu hal yang pasti disetujui oleh banyak orang bahwa C dan
C++ berbeda dalam paradigma pemrograman. Bahasa C lebih mengarah ke prosedural
murni, sedangkan C++ adalah semi-prosedural. Kekuatan utama C++ adalah pada
Object Oriented Programming atau Pemrograman Berorientasi Objek. Dalam
prosedural, masalah dipecah menjadi bagian-bagian yang kecil kemudian dicari
solusi penyelesaian tepat untuk masalah tersebut. Dalam konsep OOP, setiap
masalah adalah objek yang memiliki karakteristik tertentu.
misalnya dalam C, kita membutuhkan beberapa fungsi atau sub
program untuk menyelesaikan masalah:
int
fungsi1() { bla..bla..bla }
float
fungsi2() { bla..bla..bla.. }
void main()
{
// disini
dioperasikan
}
sedangkan dalam C++, kita akan menganggap masalah sebagai
objek.
class
masalah {
int
fungsi1() {}
float
fungsi2() {}
};
Memang kode dalam C++ terlihat lebih panjang, namun dalam
proyek skala besar kita akan sangat tertolong karena kita bisa menggunakan
objek berulang-ulang untuk masalah yang serupa.
malloc vs new
Berbicara mengenai pointer dan data maka kita tidak akan
lepas dari alokasi memori dan dealokasi tentunya. Dalam C tidak terdapat kata
kunci khusus untuk melakukannya. Untuk memesan alamat memori di heap kita
menggunakan fungsi malloc(). Sedangkan dalam C++ disediakan kata kunci new untuk
melakukan kegiatan serupa. Keuntungannya dengan adanya kata kunci new untuk
alokasi memori sebagai perintah built-in dapat mengefisienkan kerja kita.
template
Ini dia salah satu kelebihan C++ dibanding banyak bahasa
pemrograman lain. Template adalah sistem overload otomatis terhadap
fungsi-fungsi yang kita definisikan. Bingung? gampangannya dengan template kita
bisa membuat fungsi generic (fungsi umum) yang dapat dipakai untuk
berbagai tipe data. Jadi kita hanya perlu membuat 1 fungsi untuk semua. Menarik
bukan? Mari kita simak contohnya:
#include
<iostream>
using namespace std;
using namespace std;
template
<class T>
T fungsiMax(T v1, T v2) {
if(v1 >= v2) return v1;
else return v2;
}
T fungsiMax(T v1, T v2) {
if(v1 >= v2) return v1;
else return v2;
}
int main()
{
int a=9,b=10;
float c=3.14, d=2.13;
char e=’e',f=’f';
cout<<”Yang paling besar:”<<endl;
cout<<”antara “<<a<<” dan “<<b<<” adalah “<<fungsiMax(a,b)<<endl;
cout<<”antara “<<c<<” dan “<<d<<” adalah “<<fungsiMax(c,d)<<endl;
cout<<”antara “<<e<<” dan “<<f<<” adalah “<<fungsiMax(e,f)<<endl;
return 0;
}
int a=9,b=10;
float c=3.14, d=2.13;
char e=’e',f=’f';
cout<<”Yang paling besar:”<<endl;
cout<<”antara “<<a<<” dan “<<b<<” adalah “<<fungsiMax(a,b)<<endl;
cout<<”antara “<<c<<” dan “<<d<<” adalah “<<fungsiMax(c,d)<<endl;
cout<<”antara “<<e<<” dan “<<f<<” adalah “<<fungsiMax(e,f)<<endl;
return 0;
}
Coba jalankan dan lihat hasilnya
Jika kita lihat dalam potongan source code di atas, kita
hanya melihat satu fungsi yaitu fungsiMax(), tapi ia dapat digunakan untuk tipe
data int, float dan char.
Exception handling
C++ adalah bahasa pemrograman pertama yang menggunakan
sistem exception handling. Exception handling adalah teknik menjebak error atau
penanganan kesalahan. Jika kita menulis kode dalam bahasa C, kita akan
dipusingkan jika terjadi error dalam kode kita. Cara lama yang dipakai adalah
menelusuri alur program dan menguji satu per satu fungsi yang ada dan
diperkirakan menyebabkan error. Dalam C++, manakala terjadi error program akan
menghentikan proses dan mencari penanganan kesalahan yang tepat sesuai
kesalahan yang terjadi. perhatikan kode dibawah ini.
try {
int a;
cin>>a;
if( a == 0) throw a;
else cout<<”Anda
memasukkan angka selain 0″<<endl;
cout<<”Baris
ini tidak akan dieksekusi ketika terjadi kesalahan”<<endl;
}
catch(int e)
{
cout<<”Kesalahan
ditemukan! Anda memasukkan nilai 0″<<endl;
}
Misalkan saja kita membuat sebuah kode yang meminta input
valid. Input valid di sini adalah input yang bukan 0. Ketika user memasukkan 0
maka masukan itu dianggap sebagai kesalahan. Kesalahan itu kemudian dilempar ke
luar dengan perintah throw. Sedangkan error yang dilempar itu akan
ditangkap oleh catch dan akan ditampilkan / dikerjakan statement
untuk menangani kesalahan tersebut.
STL
Satu yang ada di C++ adalah library khusus bernama STL. STL
adalah kumpulan fungsi-fungsi dan data-data khusus yang banyak digunakan untuk
struktur data. Misalkan queue, vector, map, tree dll yang banyak digunakan
dalam struktur data. Dengan STL kita tidak perlu mendefinisikan sendiri
struktur data sendiri karena struktur-struktur data tersebut telah disediakan
oleh C++. STL Merupakan singkatan dari Standard Template Library. Sesuai
namanya, class dalam STL merupakan template sehingga dapat digunakan untuk
berbagai macam tipe data.