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 sebagai int 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;
template <class T>
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;
}
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.