Lompat ke isi

C++: Perbedaan antara revisi

Ensiklopedia Pengetahuan Universitas Islam Sultan Agung
Maintenance script (bicara | kontrib)
Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 29223886; atribusi sumber disertakan.
 
Maintenance script (bicara | kontrib)
Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi
 
Baris 1: Baris 1:
[[File:ISO_C++_Logo.svg|thumb|right|280px|ISO C++ Logo]]
'''C++''' (dibaca: '''C plus-plus''') adalah [[bahasa pemrograman]] [[komputer]] 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 (bahasa pemrograman)|B]].
'''C++''' (dibaca: '''C plus-plus''') adalah [[bahasa pemrograman]] [[komputer]] 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 (bahasa pemrograman)|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)
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''). Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep [[pemrograman berorientasi objek]] (''object-oriented programming'').
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'').<ref>Hanif al fatta. ''Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek''. 2006. ISBN 979-763-582-1.</ref> Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.<ref>Hanif Al Fatta. [https://www.google.co.id/books/edition/Dasar_Pemrograman_C++_Disertai_dengan_Pe/H20EMvS2EmQC?hl=id&gbpv=1&dq=Pada+C%2B%2B+ditambahkan+konsep-konsep+baru+seperti+class+dengan+sifat-sifatnya+seperti+inheritance+dan+overloading&pg=PA1&printsec=frontcover Dasar Pemograman C++ Disertai Dengan Pengenalan Pemograman Berorientasi Objek]. CV. Andi Offset. 2006. hlm. 1. ISBN 979-763-582-1.</ref> Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep [[pemrograman berorientasi objek]] (''object-oriented programming'').<ref>Bruce Eckel. ''Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel''. 2000. ISBN 0139798099, 9780139798092.</ref><ref>Bjarne Stroustrup. ''The C++ programming language, Prentice Hall, 2000''. 2000. ISBN 0201889544, 9780201889543.</ref>


== Sejarah ==
== Sejarah ==
 
Pada 1979, [[Bjarne Stroustrup]], seorang [[ilmuan komputer]] Denmark, memulai pekerjaan pada "", pendahulunya C++.<ref>Bjarne Stroustrup. [http://www.stroustrup.com/bs_faq.html#invention Bjarne Stroustrup's FAQ: When was C++ invented?]. ''stroustrup.com''. 7 March 2010.</ref> 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 [[Bell Laboratories|AT&T Bell Labs]], dia mempunyai masalah menganalisi [[Kernel (ilmu komputer)|kernel]] [[Unix|UNIX]] sehubungan dengan [[komputasi terdistribusi]]. Mengingat pengalaman PhD-nya, Stroustrup bertindak untuk meningkatkan bahasa [[C (bahasa pemrograman)|C]] dengan fitur seperti [[Simula]].<ref>Bjarne Stroustrup. [http://stroustrup.com/hopl-almost-final.pdf Evolving a language in and for the real world: C++ 1991-2006].</ref>
Pada 1979, [[Bjarne Stroustrup]], seorang [[ilmuan komputer]] Denmark, memulai pekerjaan pada "", pendahulunya C++. 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 [[Bell Laboratories|AT&T Bell Labs]], dia mempunyai masalah menganalisi [[Kernel (ilmu komputer)|kernel]] [[Unix|UNIX]] sehubungan dengan [[komputasi terdistribusi]]. Mengingat pengalaman PhD-nya, Stroustrup bertindak untuk meningkatkan bahasa [[C (bahasa pemrograman)|C]] dengan fitur seperti [[Simula]].


=== Etimologi ===
=== Etimologi ===
Menurut Stroustrup, "namanya menandakan sifat evolusioner dari perubahan dari C". Nama ini dikreditkan ke Rick Mascitti (pertenngahan-1983) 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 [[Operator (pemrograman komputer)|operator]] [[C (bahasa pemrograman)|C]] (yang [[Operator penambahan dan pengurangan|menambah]] [[Nilai (ilmu komputer)|nilai]] dari sebuah [[Variabel (matematika)|variabel]]) dan [[konvensi penamaan]] umum menggunakan "+" untuk mengindikasikan sebuah program komputer yang disempurnakan.
Menurut Stroustrup, "namanya menandakan sifat evolusioner dari perubahan dari C".<ref>[http://www.stroustrup.com/bs_faq.html#name Bjarne Stroustrup's FAQ – Where did the name "C++" come from?].</ref> Nama ini dikreditkan ke Rick Mascitti (pertenngahan-1983)<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref> 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 [[Operator (pemrograman komputer)|operator]] [[C (bahasa pemrograman)|C]] <syntaxhighlight lang="C++" inline="">++</syntaxhighlight> (yang [[Operator penambahan dan pengurangan|menambah]] [[Nilai (ilmu komputer)|nilai]] dari sebuah [[Variabel (matematika)|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" sebelum mendapat nama akhir.
Selama pengembangan periode C++, bahasa ini disebut sebagai "new C" dan "C dengan kelas"<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref><ref>[https://www.ccs.neu.edu/course/com3620/parent/C-for-Java-C++/c-for-c++-alt.html C For C++ Programmers]. Northeastern University.</ref> sebelum mendapat nama akhir.


=== Standardisasi ===
=== Standardisasi ===
 
{| class="wikitable floatright" style="margin-left: 1.5em;"
|+Standar C++
|-
!scope="col"| Tahun
!scope="col"| Standar C++<ref>[http://en.cppreference.com/w/cpp/language/history History of C++]. ''en.cppreference.com''.</ref>
!scope="col"| Nama informal
|-
!scope="row"| 1998
| | ISO/IEC 14882:1998<ref>[https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=25845 ISO/IEC 14882:1998]. International Organization for Standardization.</ref> || C++98
|-
!scope="row"| 2003
| | ISO/IEC 14882:2003<ref>[https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=38110 ISO/IEC 14882:2003]. International Organization for Standardization.</ref> || [[C++03]]
|-
!scope="row"| 2011
| | ISO/IEC 14882:2011<ref>[https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=50372 ISO/IEC 14882:2011]. International Organization for Standardization.</ref> || [[C++11]], C++0x
|-
!scope="row"| 2014
| | ISO/IEC 14882:2014<ref>[https://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=64029&ICS1=35&ICS2=60 ISO/IEC 14882:2014]. International Organization for Standardization.</ref> || [[C++14]], C++1y
|-
!scope="row"| 2017
| | ISO/IEC 14882:2017<ref>[https://www.iso.org/standard/68564.html ISO/IEC 14882:2017]. International Organization for Standardization.</ref> || [[C++17]], C++1z
|-
!scope="row"| 2020
| | ISO/IEC 14882:2020<ref>[https://www.iso.org/standard/79358.html ISO/IEC 14882:2020]. International Organization for Standardization.</ref> || [[C++20]], C++2a
|}


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 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.
Baris 22: Baris 47:
Sebagai bagian dari proses standardisasi, ISO juga menerbitkan laporan dan spesifikasi teknis:
Sebagai bagian dari proses standardisasi, ISO juga menerbitkan laporan dan spesifikasi teknis:


* ISO/IEC TR 18015:2006 dalam penggunaan dari C++ pada [[Sistem terbenam|sistem tertanam]] dan implikasi performa bahasa C++ dan fitur perpustakaan.
* ISO/IEC TR 18015:2006<ref>[https://www.iso.org/standard/43351.html ISO/IEC TR 18015:2006]. International Organization for Standardization.</ref> dalam penggunaan dari C++ pada [[Sistem terbenam|sistem tertanam]] dan implikasi performa bahasa C++ dan fitur perpustakaan.
* ISO/IEC TS 22277:2017 pada coroutine, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 22277:2017<ref>[https://www.iso.org/standard/73008.html ISO/IEC TS 22277:2017]. International Organization for Standardization.</ref> pada coroutine, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 19216:2018 pada pustaka jaringan
* ISO/IEC TS 19216:2018<ref>[https://www.iso.org/standard/64030.html ISO/IEC TS 19216:2018]. International Organization for Standardization.</ref> pada pustaka jaringan
* ISO/IEC TS 21544:2018 pada modul, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 21544:2018<ref>[https://www.iso.org/standard/71051.html ISO/IEC TS 21544:2018]. International Organization for Standardization.</ref> pada modul, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 19570:2018 pada satu set ekstensi pustaka baru untuk paralelisme
* ISO/IEC TS 19570:2018<ref>[https://www.iso.org/standard/70588.html ISO/IEC TS 19570:2018]. International Organization for Standardization.</ref> pada satu set ekstensi pustaka baru untuk paralelisme
* ISO/IEC TS 23619:2021 pada ekstensi baru untuk refleksi
* ISO/IEC TS 23619:2021<ref>[https://www.iso.org/standard/76425.html ISO/IEC TS 23619:2021]. International Organization for Standardization.</ref> pada ekstensi baru untuk refleksi


Lebih banyak spesifikasi teknis sedang dalam pengembangan dan menunggu persetujuan, termasuk set ekstensi konkurensi baru.
Lebih banyak spesifikasi teknis sedang dalam pengembangan dan menunggu persetujuan, termasuk set ekstensi konkurensi baru.<ref>See a list at [https://en.cppreference.com/w/cpp/experimental Experimental C++ Features]. ''cppreference.com''.</ref>


== Contoh Program C++ ==
== Contoh Program C++ ==
C++ mewarisi sebagian besar sintaks C. Berikut ini adalah program Hello world versi [[Bjarne Stroustrup]] yang menggunakan fasilitas stream [[pustaka dasar C++]] untuk menulis pesan ke [[Standard output#Standard output (stdout)|standard output]]:
C++ mewarisi sebagian besar sintaks C. Berikut ini adalah program Hello world versi [[Bjarne Stroustrup]] yang menggunakan fasilitas stream [[pustaka dasar C++]] untuk menulis pesan ke [[Standard output#Standard output (stdout)|standard output]]:<ref>Bjarne Stroustrup. [https://archive.org/details/cprogramminglang0000stro The C++ Programming Language]. Addison-Wesley. 2000. hlm. [https://archive.org/details/cprogramminglang0000stro/page/46 46]. ISBN 0-201-70073-5.</ref><ref>Bjarne Stroustrup. [http://www.stroustrup.com/3rd_issues.html Open issues for The C++ Programming Language (3rd Edition)].</ref>
<syntaxhighlight lang="cpp" line="1">
#include <iostream>


int main()
{
    std::cout << "Hello, world!\n";
}
</syntaxhighlight>


=== Keterangan ===
=== Keterangan ===
Baris pertama: <syntaxhighlight lang="cpp">#include <iostream.h></syntaxhighlight>
Sebagai bagian dari proses kompilator, [[kompilator]] dari c++ menjalankan program yang dinamakan preprosesor. Preprosesor memiliki kemampuan menambahkan dan menghapus kode dari sumber. Pada bagian <code>#include</code> memberitahukan preprosesor untuk menyertakan kode dari iostream, berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak, atau ''class-class'' yang dibutuhkan.<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref>


Baris pertama:
Baris kedua: <syntaxhighlight lang="cpp">int main()</syntaxhighlight>
Sebagai bagian dari proses kompilator, [[kompilator]] dari c++ menjalankan program yang dinamakan preprosesor. Preprosesor memiliki kemampuan menambahkan dan menghapus kode dari sumber. Pada bagian <code>#include</code> memberitahukan preprosesor untuk menyertakan kode dari iostream, berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak, atau ''class-class'' yang dibutuhkan.
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.<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref>


Baris kedua:
Baris ketiga: <syntaxhighlight lang="cpp">{</syntaxhighlight>
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.
Kurung kurawal buka menandakan awal program.<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref>


Baris ketiga:
Baris keempat: <syntaxhighlight lang="cpp">std::cout << "Hello world\n";</syntaxhighlight>
Kurung kurawal buka menandakan awal program.
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 <code>\n</code> 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.<ref>[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 sumber pada Wikipedia bahasa Indonesia]</ref>


Baris keempat:
Baris kelima: <syntaxhighlight lang="cpp">}</syntaxhighlight>
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 <code>\n</code> 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.
Kurung kurawal tutup menandakan akhir program.<ref>Nicolai M. Josuttis. ''Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman''. 2002. ISBN 0470843993, 9780470843994.</ref>
 
Baris kelima:
Kurung kurawal tutup menandakan akhir program.


== Kata yang dipesan ==
== Kata yang dipesan ==
=== Kelompok pertama ===
=== Kelompok pertama ===
C++ mempunyai 32 buah kata yang dipesan (''reserved words''). [[Kata kunci]] kelompok pertama merupakan turunan dari [[C (bahasa pemrograman)|bahasa C]], di antaranya:
C++ mempunyai 32 buah kata yang dipesan (''reserved words''). [[Kata kunci]] kelompok pertama merupakan turunan dari [[C (bahasa pemrograman)|bahasa C]], di antaranya:<ref>Nicolai M. Josuttis. ''Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman''. 2002. ISBN 0470843993, 9780470843994.</ref>


{| class="wikitable"
|-
| auto
| const
| double
|
| int
| short
| struct
| unsigned
|-
| break
| continue
| else
| for
| long
| signed
| switch
| void
|-
| case
| default
| enum
| goto
| register
| sizeof
| typedef
| volatile
|-
| char
| do
| extern
| if
| return
| static
| union
| while
|}
<ref>Gregory Satir, Doug Brown. ''C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman''. 2002. ISBN 156592116X, 9781565921160.</ref>


=== Kelompok kedua ===
=== Kelompok kedua ===
Kata yang dipesan kelompok kedua berjumlah 30. Kata-kata ini adalah baru dan hanya ada di bahasa C++.
Kata yang dipesan kelompok kedua berjumlah 30. Kata-kata ini adalah baru dan hanya ada di bahasa C++.<ref>Gregory Satir, Doug Brown. ''C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman''. 2002. ISBN 156592116X, 9781565921160.</ref>
 
{| class="wikitable"
|-
| asm
| dynamic_cast
| namespace
| reinterpret_cast
| try
|-
| bool
| explicit
| new
| static_cast
| typeid
|-
| catch
| false
| operator
| template
| typename
|-
| class
| friend
| private
| this
| using
|-
| const_cast
| inline
| public
| throw
| virtual
|-
| delete
| mutable
| protected
| true
| wchar_t
|}
 
Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.<ref>Gregory Satir, Doug Brown. ''C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman''. 2002. ISBN 156592116X, 9781565921160.</ref>


<syntaxhighlight lang="cpp">
# include <stdio.h>


Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.
int maksimum (int,int);
void tulis (int);


main()
int nilai 1,nilai 2,nilai maks;
printf (*\n ketikkan dua bilangan bulat:);
scanf("%d%d",& nilai 1,nilai 2);
nilai maks=maksimum (nilai 1,nilai 2);
tulis(nilai maks);
returns 0;
int maksimum(int x1,int x2)
if (x1>x2)
return x1;
else
return x2;
void tulis(int x)
printf("\n hasilnya adalah:%d",x);
</syntaxhighlight>


== Tipe data dasar ==
== Tipe data dasar ==
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.<ref>Gregory Satir, Doug Brown. ''C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman''. 2002. ISBN 156592116X, 9781565921160.</ref>


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.
{| class="wikitable"
 
|-
! 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
| 2 bita
| 1 karakter lebar
|}


== Kompilator C++ ==
== Kompilator C++ ==
Baris 123: Baris 310:


== Lihat pula ==
== Lihat pula ==
* [[Dart (bahasa pemrograman)]]
* [[Dart (bahasa pemrograman)]]
* [[C Sharp (bahasa pemrograman)|C#]]
* [[C Sharp (bahasa pemrograman)|C#]]
* [[Carbon (bahasa pemrograman)]]
* [[Carbon (bahasa pemrograman)]]
* [[Rust (bahasa pemrograman)|Rust]]
* [[Rust (bahasa pemrograman)|Rust]]
== Referensi ==


== Bacaan lanjutan ==
== Bacaan lanjutan ==
 
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
*  
*
 


== Pranala luar ==
== Pranala luar ==
Baris 170: Baris 351:
* https://goonlinetools.com/cpp-compiler/
* https://goonlinetools.com/cpp-compiler/
* http://www.thefreecountry.com/compilers/cpp.shtml
* http://www.thefreecountry.com/compilers/cpp.shtml
* http://www.compilers.net/dir/free/compilers/ccpp.htm
* http://www.compilers.net/dir/free/compilers/ccpp.htm  
* http://www.cppgameprogramming.com/
* http://www.cppgameprogramming.com/
* http://www.cprogramming.com/game-programming.html
* http://www.cprogramming.com/game-programming.html
== Referensi ==
<references />


== Sumber dan atribusi ==
== Sumber dan atribusi ==


Artikel ini diadaptasi dalam mode teks dari
Konten artikel ini diadaptasi dari [https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 Wikipedia bahasa Indonesia], revisi 29223886 (2026-05-13T12:15:53Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.
[https://id.wikipedia.org/w/index.php?title=C%2B%2B&oldid=29223886 Wikipedia bahasa Indonesia],
 
revisi 29223886 (2026-05-13T12:15:53Z).
<!-- WIKI_UNISSULA_PRESENTATION_V4 -->
Gambar, media, infobox, templat navigasi, dan kategori sumber
tidak diimpor ke Wiki Unissula.
Atribusi dan lisensi mengikuti ketentuan Creative Commons
Atribusi-BerbagiSerupa (CC BY-SA) pada sumber Wikipedia.

Revisi terkini sejak 23 Agustus 2026 03.14

Berkas:ISO C++ Logo.svg
ISO C++ Logo

C++ (dibaca: C plus-plus) adalah bahasa pemrograman komputer 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).[1] Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.[2] Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (object-oriented programming).[3][4]

Sejarah

Pada 1979, Bjarne Stroustrup, seorang ilmuan komputer Denmark, memulai pekerjaan pada "", pendahulunya C++.[5] 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 kernel UNIX sehubungan dengan komputasi terdistribusi. Mengingat pengalaman PhD-nya, Stroustrup bertindak untuk meningkatkan bahasa C dengan fitur seperti Simula.[6]

Etimologi

Menurut Stroustrup, "namanya menandakan sifat evolusioner dari perubahan dari C".[7] Nama ini dikreditkan ke Rick Mascitti (pertenngahan-1983)[8] 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 operator C <syntaxhighlight lang="C++" inline="">++</syntaxhighlight> (yang menambah nilai 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"[9][10] sebelum mendapat nama akhir.

Standardisasi

Standar C++
Tahun Standar C++[11] Nama informal
1998 ISO/IEC 14882:1998[12] C++98
2003 ISO/IEC 14882:2003[13] C++03
2011 ISO/IEC 14882:2011[14] C++11, C++0x
2014 ISO/IEC 14882:2014[15] C++14, C++1y
2017 ISO/IEC 14882:2017[16] C++17, C++1z
2020 ISO/IEC 14882:2020[17] C++20, C++2a

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 standardisasi, ISO juga menerbitkan laporan dan spesifikasi teknis:

  • ISO/IEC TR 18015:2006[18] dalam penggunaan dari C++ pada sistem tertanam dan implikasi performa bahasa C++ dan fitur perpustakaan.
  • ISO/IEC TS 22277:2017[19] pada coroutine, terintegrasi ke dalam C++20
  • ISO/IEC TS 19216:2018[20] pada pustaka jaringan
  • ISO/IEC TS 21544:2018[21] pada modul, terintegrasi ke dalam C++20
  • ISO/IEC TS 19570:2018[22] pada satu set ekstensi pustaka baru untuk paralelisme
  • ISO/IEC TS 23619:2021[23] pada ekstensi baru untuk refleksi

Lebih banyak spesifikasi teknis sedang dalam pengembangan dan menunggu persetujuan, termasuk set ekstensi konkurensi baru.[24]

Contoh Program C++

C++ mewarisi sebagian besar sintaks C. Berikut ini adalah program Hello world versi Bjarne Stroustrup yang menggunakan fasilitas stream pustaka dasar C++ untuk menulis pesan ke standard output:[25][26] <syntaxhighlight lang="cpp" line="1">

  1. include <iostream>

int main() {

   std::cout << "Hello, world!\n";

} </syntaxhighlight>

Keterangan

Baris pertama: <syntaxhighlight lang="cpp">#include <iostream.h></syntaxhighlight> Sebagai bagian dari proses kompilator, kompilator dari c++ menjalankan program yang dinamakan preprosesor. 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.[27]

Baris kedua: <syntaxhighlight lang="cpp">int main()</syntaxhighlight> 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.[28]

Baris ketiga: <syntaxhighlight lang="cpp">{</syntaxhighlight> Kurung kurawal buka menandakan awal program.[29]

Baris keempat: <syntaxhighlight lang="cpp">std::cout << "Hello world\n";</syntaxhighlight> 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.[30]

Baris kelima: <syntaxhighlight lang="cpp">}</syntaxhighlight> Kurung kurawal tutup menandakan akhir program.[31]

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:[32]

auto const double int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while

[33]

Kelompok kedua

Kata yang dipesan kelompok kedua berjumlah 30. Kata-kata ini adalah baru dan hanya ada di bahasa C++.[34]

asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t

Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.[35]

<syntaxhighlight lang="cpp">

  1. include <stdio.h>

int maksimum (int,int); void tulis (int);

main() int nilai 1,nilai 2,nilai maks; printf (*\n ketikkan dua bilangan bulat:); scanf("%d%d",& nilai 1,nilai 2);

nilai maks=maksimum (nilai 1,nilai 2); tulis(nilai maks); returns 0;

int maksimum(int x1,int x2) if (x1>x2) return x1; else return x2;

void tulis(int x) printf("\n hasilnya adalah:%d",x); </syntaxhighlight>

Tipe data dasar

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.[36]

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 2 bita 1 karakter lebar

Kompilator C++

  • Acorn C/C++
  • Borland C++
  • C++/CX
  • C++Builder
  • Cfront
  • Clang
  • CodeWarrior
  • Comeau C/C++
  • ConceptGCC
  • Digital Mars
  • Dev-C++
  • Eclipse IDE
  • Geany
  • GNU Compiler Collection
  • HP aC++
  • IBM XL C++
  • Intel C++ Compiler
  • MinGW
  • NetBeans IDE
  • Norcroft C compiler
  • Open64
  • Oracle Solaris Studio
  • PathScale
  • The Portland Group
  • ROSE (compiler framework)
  • Shed Skin
  • Sublime Text
  • Softune
  • TenDRA Compiler
  • THINK C
  • Turbo C++
  • Visual C++
  • IBM VisualAge
  • Vim
  • Watcom C/C++ compiler
  • Zortech

Keluarga bahasa pemrograman C++

  • Algorithmic skeleton
  • C++/CLI
  • C++/CX
  • Charm++
  • Embedded C++
  • Felix (programming language)
  • Intel Array Building Blocks
  • Intel Parallel Studio
  • Managed Extensions for C++
  • R++
  • Sieve C++ Parallel Programming System
  • Threading Building Blocks
  • ΜC++

Lihat pula

Bacaan lanjutan

Pranala luar

Referensi

  1. Hanif al fatta. Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek. 2006. ISBN 979-763-582-1.
  2. Hanif Al Fatta. Dasar Pemograman C++ Disertai Dengan Pengenalan Pemograman Berorientasi Objek. CV. Andi Offset. 2006. hlm. 1. ISBN 979-763-582-1.
  3. Bruce Eckel. Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel. 2000. ISBN 0139798099, 9780139798092.
  4. Bjarne Stroustrup. The C++ programming language, Prentice Hall, 2000. 2000. ISBN 0201889544, 9780201889543.
  5. Bjarne Stroustrup. Bjarne Stroustrup's FAQ: When was C++ invented?. stroustrup.com. 7 March 2010.
  6. Bjarne Stroustrup. Evolving a language in and for the real world: C++ 1991-2006.
  7. Bjarne Stroustrup's FAQ – Where did the name "C++" come from?.
  8. sumber pada Wikipedia bahasa Indonesia
  9. sumber pada Wikipedia bahasa Indonesia
  10. C For C++ Programmers. Northeastern University.
  11. History of C++. en.cppreference.com.
  12. ISO/IEC 14882:1998. International Organization for Standardization.
  13. ISO/IEC 14882:2003. International Organization for Standardization.
  14. ISO/IEC 14882:2011. International Organization for Standardization.
  15. ISO/IEC 14882:2014. International Organization for Standardization.
  16. ISO/IEC 14882:2017. International Organization for Standardization.
  17. ISO/IEC 14882:2020. International Organization for Standardization.
  18. ISO/IEC TR 18015:2006. International Organization for Standardization.
  19. ISO/IEC TS 22277:2017. International Organization for Standardization.
  20. ISO/IEC TS 19216:2018. International Organization for Standardization.
  21. ISO/IEC TS 21544:2018. International Organization for Standardization.
  22. ISO/IEC TS 19570:2018. International Organization for Standardization.
  23. ISO/IEC TS 23619:2021. International Organization for Standardization.
  24. See a list at Experimental C++ Features. cppreference.com.
  25. Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley. 2000. hlm. 46. ISBN 0-201-70073-5.
  26. Bjarne Stroustrup. Open issues for The C++ Programming Language (3rd Edition).
  27. sumber pada Wikipedia bahasa Indonesia
  28. sumber pada Wikipedia bahasa Indonesia
  29. sumber pada Wikipedia bahasa Indonesia
  30. sumber pada Wikipedia bahasa Indonesia
  31. Nicolai M. Josuttis. Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman. 2002. ISBN 0470843993, 9780470843994.
  32. Nicolai M. Josuttis. Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman. 2002. ISBN 0470843993, 9780470843994.
  33. Gregory Satir, Doug Brown. C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. 2002. ISBN 156592116X, 9781565921160.
  34. Gregory Satir, Doug Brown. C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. 2002. ISBN 156592116X, 9781565921160.
  35. Gregory Satir, Doug Brown. C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. 2002. ISBN 156592116X, 9781565921160.
  36. Gregory Satir, Doug Brown. C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. 2002. ISBN 156592116X, 9781565921160.

Sumber dan atribusi

Konten artikel ini diadaptasi dari Wikipedia bahasa Indonesia, revisi 29223886 (2026-05-13T12:15:53Z), yang tersedia berdasarkan lisensi Creative Commons Atribusi-BerbagiSerupa (CC BY-SA). Gambar pada artikel ini bersumber dari Wikimedia Commons dan mengikuti ketentuan lisensi masing-masing berkas. Mohon gunakan konten dan media secara bijak serta sesuai dengan ketentuan lisensi yang berlaku.