Entri Populer

Selasa, 08 Maret 2011

perbedaan bahasa C dengan C++

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.