C++ (dibaca: C plus-plus) adalah bahasa pemrogramankomputer yang dibuat oleh Bjarne Stroustrup, yang merupakan perkembangan dari bahasa C dikembangkan di Bell Labs (Dennis Ritchie). Pada awal tahun 1970-an, bahasa itu merupakan peningkatan dari bahasa sebelumnya, yaitu B.
Pada awalnya, bahasa tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem Unix. Pada perkembangannya, versi ANSI (American National Standards Institute) pada bahasa pemrograman C menjadi versi dominan, meskipun versi tersebut sekarang jarang dipakai dalam pengembangan sistem dan jaringan maupun untuk sistem embedded. Dengan demikian, bahasa C++ dapat dikategorikan sebagai bahasa pemrograman tujuan umum (general-purpose programming language; GPL)
Bjarne Stroustrup pada Bell Labs pertama kali mengembangkan C++ pada awal 1980-an. Untuk mendukung fitur-fitur pada C++, dibangun efisiensi dan sistem support untuk pemrograman tingkat rendah (low level coding).[10] Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.[11] Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (object-oriented programming).[12][13]
Sejarah
Pada 1979, Bjarne Stroustrup, seorang ilmuan komputer Denmark, memulai pekerjaan pada "C dengan Kelas", pendahulunya C++.[14] Motivasi untuk membuat bahasa pemrograman baru originated dari pengalaman Stroustrup dalam pemrograman untuk tesis PhD-nya. Stroustrup menemukan bahwa Simula mempunyai fitur yang sangat membantu untuk pengembangan perangkat lunak besar, tapi bahasanya terlalu lambat untuk penggunaan praktis, sementara BCPL cepat tapi levelnya terlalu rendah agar cocok untuk pengembangan perangkat lunak besar. Saat Stroustrup mulai bekerja pada AT&T Bell Labs, dia mempunyai masalah menganalisi kernelUNIX sehubungan dengan komputasi terdistribusi. Mengingat pengalaman PhD-nya, Stroustrup bertindak untuk meningkatkan bahasa C dengan fitur seperti Simula.[15]
Etimologi
Menurut Stroustrup, "namanya menandakan sifat evolusioner dari perubahan dari C".[16] Nama ini dikreditkan ke Rick Mascitti (pertenngahan-1983)[17] dan digunakan pertama kali pada Desember 1983. Ketika Mascitti ditanyai secara informal pada tahun 1992 tentang penamaan, dia menunjukkan bahwa itu diberikan dalam semangat Tongue-in-cheek. Nama itu berasal dari operatorC++ (yang menambahnilai dari sebuah variabel) dan konvensi penamaan umum menggunakan "+" untuk mengindikasikan sebuah program komputer yang disempurnakan.
Selama pengembangan periode C++, bahasa ini disebut sebagai "new C" dan "C dengan kelas"[18][19] sebelum mendapat nama akhir.
Pada tahun 1998, C++ Standar Komite (ISO/IEC JTC1/SC22/WG21 Working Group) mengeluarkan Standar Internasional ISO/IEC 14882:1998 yang digunakan selama beberapa tahun. Pada tahun 2003 dirilis versi yang telah dikoreksi, ISO/IEC 14882:2003.
Pada tahun 2005, Laporan Teknis yang disebut "Laporan Teknis Perpustakaan 1" (sering dikenal sebagai TR1) dirilis. Revisi terbaru dari standar C++ adalah C+11 (sebelumnya dikenal C++0x) telah disetujui oleh ISO/IEC pada tanggal 12 Agustus 2011 dan telah diterbitkan sebagai 14882:11.
Sebagai bagian dari proses standarisasi, ISO juga menerbitkan laporan dan spesifikasi teknis:
ISO/IEC TR 18015:2006[27] dalam penggunaan dari C++ pada sistem tertanam dan implikasi performa bahasa C++ dan fitur perpustakaan.
ISO/IEC TS 22277:2017[28] pada coroutine, terintegrasi ke dalam C++20
Sebagai bagian dari proses kompilator, kompilator dari c++ menjalankan program yang dinamakan preprosesor.[butuh rujukan] Preprosesor memiliki kemampuan menambahkan dan menghapus kode dari sumber. Pada bagian #include memberitahukan preprosesor untuk menyertakan kode dari iostream, berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak, atau class-class yang dibutuhkan.[36]
Baris kedua:
intmain()
Pernyataan ini mendeklarasikan fungsi utama, bahwa suatu program C++ dapat berisi banyak fungsi, yang harus selalu memiliki sebuah fungsi utama (main function). Fungsi adalah modul yang berisi kode-kode untuk menyelesaikan masalah-masalah tertentu. Kata Void menandakan fungsi main tidak bertipe.[36]
Cout adalah sebuah object dari pustaka perangkat lunak standar C++ yang digunakan untuk mencetak string ke peranti output standar, yang biasanya adalah layar komputer, kompilator menghubungkan kode dari pustaka perangkat lunak standar itu dengan kode yang telah ditulis untuk mendapatkan hasil executable. Tanda \n adalah format modifier yang digunakan untuk berganti baris setelah menampilkan string, jika ada cout lain pada program tersebut, maka string yang menyertainya akan dituliskan pada baris bawahnya.[36]
Baris kelima:
}
Kurung kurawal tutup menandakan akhir program.[37]
Kata yang dipesan
Kelompok pertama
C++ mempunyai 32 buah kata yang dipesan (reserved words). Kata kunci kelompok pertama merupakan turunan dari bahasa C, di antaranya:[37]
Untuk menyimpan suatu variabel diperlukan tempat khusus di dalam memori komputer. Besar dan tipe dari variabel-variabel di dalam standar program C++ dispesifikasikan sebagai berikut.[38]
Nama
Keterangan
Ukuran
Jangkauan
char
Abjad/karakter atau untuk bilangan bulat kecil
1 bita
signed: -128 to 127
unsigned: 0 to 255
short int (short)
Bilangan bulat dengan jangkauan pendek
2 bita
signed: -32768 to 32767
unsigned: 0 to 65535
int
Bilangan bulat
4 bita
signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
long int (long)
Integer dengan jangkauan panjang
4 bita
signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
bool
Boolean, dapat bernilai benar atau salah (true or false)
i bita
true or false
float
Angka dengan titik mengambang (bilangan cacah)
4 bita
3.4e +/- 38 (7 digit)
double
Bilangan cacah dengan ketelitian ganda
8 bita
1.7e +/- 308 (15 digits)
long double
Bilangan cacah dengan ketelitian ganda panjang
8 bita
1.7e +/- 308 (15 digits)
wchar_t
Karakter lebar, biasa dipakai untuk Unicode karakter
^Naugler, David (May 2007). "C# 2.0 for C++ and Java programmer: conference workshop". Journal of Computing Sciences in Colleges. 22 (5). Although C# has been strongly influenced by Java it has also been strongly influenced by C++ and is best viewed as a descendant of both C++ and Java.
^"Chapel spec (Acknowledgements)"(PDF). Cray Inc. 1 October 2015. Diarsipkan dari versi asli(PDF) tanggal 24 June 2018. Diakses tanggal 14 January 2016.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^Bruce Eckel (2000). Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel. ISBN0139798099, 9780139798092 Periksa nilai: invalid character |isbn= (bantuan).
^Bjarne Stroustrup (2000). The C++ programming language, Prentice Hall, 2000. ISBN0201889544, 9780201889543 Periksa nilai: invalid character |isbn= (bantuan).
^"History of C++". en.cppreference.com. Diarsipkan dari versi asli tanggal Feb 2, 2022. Diakses tanggal March 16, 2022.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:1998". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2017. Diakses tanggal 23 November 2018.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:2003". International Organization for Standardization. Diarsipkan dari versi asli tanggal 13 August 2021. Diakses tanggal 23 November 2018.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:2011". International Organization for Standardization. Diarsipkan dari versi asli tanggal 27 May 2016. Diakses tanggal 23 November 2018.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:2014". International Organization for Standardization. Diarsipkan dari versi asli tanggal 29 April 2016. Diakses tanggal 23 November 2018.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:2017". International Organization for Standardization. Diarsipkan dari versi asli tanggal 17 May 2013. Diakses tanggal 2 December 2017.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC 14882:2020". International Organization for Standardization. Diarsipkan dari versi asli tanggal 16 December 2020. Diakses tanggal 16 December 2020.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TR 18015:2006". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TS 22277:2017". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TS 19216:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TS 21544:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TS 19570:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^"ISO/IEC TS 23619:2021". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 December 2018. Diakses tanggal 11 October 2021.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^Stroustrup, Bjarne (2000). The C++ Programming Language (edisi ke-Special). Addison-Wesley. hlm. 46. ISBN0-201-70073-5.
^Stroustrup, Bjarne. "Open issues for The C++ Programming Language (3rd Edition)". Diarsipkan dari versi asli tanggal 5 May 2014. Diakses tanggal 5 May 2014. This code is copied directly from Bjarne Stroustrup's errata page (p. 633). He addresses the use of '\n' rather than std::endl. Also see Can I write "void main()"? for an explanation of the implicit return 0; in the main function. This implicit return is not available in other functions.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)
^ abcdKesalahan pengutipan: Tag <ref> tidak sah;
tidak ditemukan teks untuk ref bernama Nicolai
^ abNicolai M. Josuttis (2002). Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman. ISBN0470843993, 9780470843994 Periksa nilai: invalid character |isbn= (bantuan).
^ abcdGregory Satir, Doug Brown (2002). C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. ISBN156592116X, 9781565921160 Periksa nilai: invalid character |isbn= (bantuan).horizontal tab character di |title= pada posisi 68 (bantuan)
Brokken, Frank (2010). C++ Annotations. University of Groningen. ISBN978-90-367-0470-0. Diarsipkan dari versi asli tanggal 28 April 2010. Diakses tanggal 28 April 2010.Parameter |url-status= yang tidak diketahui akan diabaikan (bantuan)