Lompat ke isi

C++: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
k →‎Pranala luar: clean up
Tag: AWB halaman dengan galat kutipan
 
(195 revisi perantara oleh 100 pengguna tidak ditampilkan)
Baris 1: Baris 1:
{{Infobox programming language
[[Berkas:C++ programming.jpg|thumb|250px| Bahasa Pemrograman C++ ]]
| name = C++
'''C++''' adalah [[bahasa pemrograman]] [[komputer]] C++ dikembangkan di [[Bell Labs]] ([[Bjarne Stroustrup]]) pada awal tahun 1970-an, Bahasa itu diturunkan dari bahasa sebelumnya, yaitu BCL, Pada awalnya, bahasa tersebut dirancang sebagai bahasa pemrograman yang dijalankan pada sistem [[Unix]], Pada perkembangannya, versi ANSI (American National Standart Institute) [[Bahasa pemrograman C]] menjadi versi dominan, Meskipun versi tersebut sekarang jarang dipakai dalam pengembangan sistem dan jaringan maupun untuk sistem embedded,
| logo = File:ISO C++ Logo.svg
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> {{cite book
| logo caption = Logo didukung oleh Standar C++
| last = Hanif al fatta
| logo size = 120px
| title = Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek
| paradigms = [[Bahasa pemrograman multiparadigma|Multi-paradigma]]: [[pemrograman prosedural|prosedural]], [[pemrograman fungsional|fungsional]], [[pemrograman berorientasi objek|orientasi objek]], [[pemrograman generik|generik]], [[Pemrograman modular|modular]]
| year =2006
| family = [[C (bahasa pemrograman)|C]]
| isbn = 979-763-582-1}} </ref> Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.{{fact}} Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek ([[Object Oriented Programming]]).<ref> {{cite book
| designer = [[Bjarne Stroustrup]]
| last = Bruce Eckel
| developer = [[ISO/IEC JTC 1/SC 22|ISO/IEC JTC 1 (Joint Technical Committee 1) / SC 22 (Subcommittee 22)]] / WG 21 (Working Group 21)
| title = Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel
| released = {{Start date and age|df=yes|1985}}
| year =2000
| latest release version = [[C++20]] {{Small|(ISO/IEC 14882:2020)}}
| isbn = 0139798099, 9780139798092}} </ref>
| latest release date = {{Start date and age|2020|12|15|df=yes}}
| latest preview version = [[C++23]]
| latest preview date = {{Start date and age|2022|3|17|df=yes}}
| typing = [[Tipe statis|Statis]], [[Sistem tipe nominal|nominal]], [[Interfrensi jenis|sebagian interfrensi]]
| scope =
| platform =
| operating system = [[lintas platform]]
| file ext = .C, .cc, .cpp, .cxx, {{nowrap|.c++}}, .h, .H, .hh, .hpp, .hxx, {{nowrap|.h++}}
| file format =
| implementations = {{nowraplinks| [[GNU Compiler Collection|GCC]], [[Clang|LLVM Clang]], [[Microsoft Visual C++]], [[C++Builder|Embarcadero C++Builder]], [[Intel C++ Compiler]], [[IBM XL C++]], [[Edison Design Group|EDG]]}}
| dialects =
| wikibooks = C++ Programming
| influenced by = [[Ada (bahasa pemrograman)|Ada]], [[ALGOL 68]],<ref name="history-cpp-paper">{{cite encyclopedia |last=Stroustrup |first=Bjarne |date=1996 |pages=699–769 |title=A history of C++: 1979-1991 |work=History of programming languages---II |publisher=[[Association for Computing Machinery|ACM]] |doi=10.1145/234286.1057836}}</ref> [[BCPL]],<ref name="cppcon21_bj">{{cite web |url=https://www.youtube.com/watch?v=15QF2q66NhU |title=C++20: Reaching for the Aims of C++ - Bjarne Stroustrup - CppCon 2021 |first=Bjarne |last=Stroustrup |publisher=CppCon |date=December 16, 2021}}</ref> [[C (bahasa pemrograman)|C]], [[CLU (bahasa pemrograman)|CLU]],<ref name="history-cpp-paper" /> [[ML (bahasa pemrograman)|ML]], [[Mesa (bahasa pemrograman)|Mesa]],<ref name="history-cpp-paper" /> [[Modula-2]],<ref name="history-cpp-paper" /> [[Simula]], [[Smalltalk]]<ref name="history-cpp-paper" />
| influenced = [[Ada (bahasa pemrograman)|Ada 95]]<!-- 1995 -->, [[C Sharp (bahasa pemrograman)|C#]]<!-- 2001 -->,<ref name="influenceSharp">{{cite journal |last=Naugler |first=David |date=May 2007 |title=C# 2.0 for C++ and Java programmer: conference workshop |journal=Journal of Computing Sciences in Colleges |volume=22 |issue=5 |quote=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.}}</ref> [[C99]]<!-- 1999 -->, [[Carbon (bahasa pemrograman)|Carbon]], [[Chapel (bahasa pemrograman)|Chapel]],<ref name="chplspec">{{cite web|title=Chapel spec (Acknowledgements)|url=https://chapel-lang.org/spec/spec-0.98.pdf|date=1 October 2015|access-date=14 January 2016|publisher=Cray Inc|archive-date=24 June 2018|archive-url=https://web.archive.org/web/20180624150422/https://chapel-lang.org/spec/spec-0.98.pdf|url-status=live}}</ref> [[Clojure]],<ref>{{cite web |url=http://www.codequarterly.com/2011/rich-hickey/ |archive-url=https://web.archive.org/web/20170111184835/http://www.codequarterly.com/2011/rich-hickey/ |url-status=dead |archive-date=2017-01-11 |title=Rich Hickey Q&A by Michael Fogus |access-date=2017-01-11}}</ref> [[D (bahasa pemrograman)|D]]<!-- 1999 -->, [[Java (bahasa pemrograman)|Java]]<!-- 1995 -->,<ref>{{cite web |url=https://books.google.com/books?id=0rUtBAAAQBAJ&pg=PA133 |title=Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans |author=Harry. H. Chaudhary |access-date=29 May 2016 |date=28 July 2014 |archive-date=27 May 2021 |archive-url=https://web.archive.org/web/20210527025512/https://books.google.com/books?id=0rUtBAAAQBAJ&pg=PA133 |url-status=live }}</ref> [[JS++]],<ref>{{cite web|url=https://www.onux.com/jspp/blog/scaling-jspp-abstraction-performance-and-readability/|title=Scaling JS++: Abstraction, Performance, and Readability|author=Roger Poon|date=1 May 2017|access-date=21 April 2020|archive-date=11 May 2020|archive-url=https://web.archive.org/web/20200511095442/https://www.onux.com/jspp/blog/scaling-jspp-abstraction-performance-and-readability/|url-status=live}}</ref> [[Lua (bahasa pemrograman)|Lua]]<!-- 1993 -->, [[Nim (bahasa pemrograman)|Nim]],<ref>{{cite web|url=https://nim-lang.org/faq.html|title=FAQ Nim Programming Language|access-date=2020-04-21|archive-date=11 July 2017|archive-url=https://web.archive.org/web/20170711004631/https://nim-lang.org/faq.html|url-status=live}}</ref> [[Objective-C++]], [[Perl]]<!-- 1987 -->, [[PHP]]<!-- 1995 -->, [[Python (bahasa pemrograman)|Python]],<ref>{{Cite web|url=https://docs.python.org/tutorial/classes.html|title=9. Classes — Python 3.6.4 documentation|website=docs.python.org|access-date=2018-01-09|archive-date=23 October 2012|archive-url=https://web.archive.org/web/20121023030209/http://docs.python.org/tutorial/classes.html|url-status=live}}</ref> [[Rust (bahasa pemrograman)|Rust]], [[Seed7]]
}}
'''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''.
Perbedaan Antara Bahasa pemrograman C dan C++
meskipun bahasa-bahasa tersebut menggunakan sintaks yang sama tetapi mereka memiliki perbedaan, C merupakan bahasa pemrograman prosedural, dimana penyelesaian suatu masalah dilakukan dengan membagi-bagi masalah tersebut kedalam su-submasalah yang lebih kecil, Selain itu, C++ merupakan bahasa pemrograman yang memiliki sifat [[Pemrograman berorientasi objek]], Untuk menyelesaikan masalah, C++ melakukan langkah pertama dengan menjelaskan class-class yang merupakan anak class yang dibuat sebelumnya sebagai abstraksi dari object-object fisik, Class tersebut beiri keadaan object, anggota-anggotanya dan kemampuan dari objectnya, Setelah beberapa Class dibuat masalah dan dipecahkan dengan Class.<ref> {{cite book
| last = Bjarne Stroustrup
| title = The C++ programming language, Prentice Hall, 2000
| year =2000
| isbn = 0201889544, 9780201889543}} </ref>


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>{{cite book
|last = Hanif al fatta
|title = Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek
|year = 2006
|isbn = 979-763-582-1}}</ref> Pada C++ ditambahkan konsep-konsep baru seperti class dengan sifat-sifatnya seperti inheritance dan overloading.<ref>{{Cite book|last=Al Fatta|first=Hanif|date=2006|url=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|title=Dasar Pemograman C++ Disertai Dengan Pengenalan Pemograman Berorientasi Objek|location=Yogyakarta|publisher=CV. Andi Offset|isbn=979-763-582-1|editor-last=Triyuliana|editor-first=Agnes Heni|pages=1|url-status=live}}</ref> Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep [[pemrograman berorientasi objek]] (''object-oriented programming'').<ref>{{cite book
|last = Bruce Eckel
|title = Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel
|year = 2000
|isbn = 0139798099, 9780139798092}}</ref><ref>{{cite book
|last = Bjarne Stroustrup
|title = The C++ programming language, Prentice Hall, 2000
|year = 2000
|isbn = 0201889544, 9780201889543}}</ref>

== Sejarah ==
[[Berkas:BjarneStroustrup.jpg|jmpl|Bjarne Stroustrup, pembuat dari C++, di kantor AT&T-nya di New Jersey c. 2000]]
Pada 1979, [[Bjarne Stroustrup]], seorang [[ilmuan komputer]] Denmark, memulai pekerjaan pada "{{visible anchor|C dengan [[Kelas (ilmu komputer)|Kelas]]}}", pendahulunya C++.<ref name="invention32">{{cite web|last=Stroustrup|first=Bjarne|date=7 March 2010|title=Bjarne Stroustrup's FAQ: When was C++ invented?|url=http://www.stroustrup.com/bs_faq.html#invention|website=stroustrup.com|archive-url=https://web.archive.org/web/20160206214150/http://www.stroustrup.com/bs_faq.html#invention|archive-date=6 February 2016|access-date=16 September 2010|url-status=live}}</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 name="evolving">{{cite web|last=Stroustrup|first=Bjarne|title=Evolving a language in and for the real world: C++ 1991-2006|url=http://stroustrup.com/hopl-almost-final.pdf|archive-url=https://web.archive.org/web/20071120015600/http://www.research.att.com/~bs/hopl-almost-final.pdf|archive-date=20 November 2007|access-date=14 August 2013|url-status=live}}</ref>

=== Etimologi ===
Menurut Stroustrup, "namanya menandakan sifat evolusioner dari perubahan dari C".<ref name="name">{{cite web|title=Bjarne Stroustrup's FAQ&nbsp;– Where did the name "C++" come from?|url=http://www.stroustrup.com/bs_faq.html#name|archive-url=https://web.archive.org/web/20160206214150/http://www.stroustrup.com/bs_faq.html#name|archive-date=6 February 2016|access-date=16 January 2008|url-status=live}}</ref> Nama ini dikreditkan ke Rick Mascitti (pertenngahan-1983)<ref name="hopl2" /> 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"<ref name="hopl22" /><ref>{{cite web|title=C For C++ Programmers|url=https://www.ccs.neu.edu/course/com3620/parent/C-for-Java-C++/c-for-c++-alt.html|publisher=[[Northeastern University]]|archive-url=https://web.archive.org/web/20101117003419/http://www.ccs.neu.edu/course/com3620/parent/C-for-Java-C++/c-for-c++-alt.html|archive-date=17 November 2010|access-date=7 September 2015|url-status=dead|df=dmy-all}}</ref> sebelum mendapat nama akhir.

=== Standardisasi ===
{| class="wikitable floatright" style="margin-left: 1.5em;"
|+Standar C++
|-
!scope="col"| Tahun
!scope="col"| Standar C++<ref name="cppreference">{{cite web |url=http://en.cppreference.com/w/cpp/language/history |title=History of C++ |website=en.cppreference.com |access-date=March 16, 2022 |archive-date=Feb 2, 2022 |archive-url=https://web.archive.org/web/20220202052857/http://en.cppreference.com/w/cpp/language/history |url-status=live }}</ref>
!scope="col"| Nama informal
|-
!scope="row"| 1998
| | ISO/IEC 14882:1998<ref name="isocpp1998">{{cite web|title=ISO/IEC 14882:1998|publisher=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=25845|access-date=23 November 2018|archive-date=15 January 2017|archive-url=https://web.archive.org/web/20170115080045/http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=25845|url-status=live}}</ref> || C++98
|-
!scope="row"| 2003
| | ISO/IEC 14882:2003<ref name="isocpp2003">{{cite web|title=ISO/IEC 14882:2003|publisher=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=38110|access-date=23 November 2018|archive-date=13 August 2021|archive-url=https://web.archive.org/web/20210813193332/https://www.iso.org/standard/38110.html|url-status=live}}</ref> || [[C++03]]
|-
!scope="row"| 2011
| | ISO/IEC 14882:2011<ref name="isocpp2011">{{cite web|title=ISO/IEC 14882:2011|publisher=International Organization for Standardization|url=https://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=50372|access-date=23 November 2018|archive-date=27 May 2016|archive-url=https://web.archive.org/web/20160527084921/http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=60&ics3=&csnumber=50372|url-status=live}}</ref> || [[C++11]], C++0x
|-
!scope="row"| 2014
| | ISO/IEC 14882:2014<ref name="isocpp2014">{{cite web|title=ISO/IEC 14882:2014|publisher=International Organization for Standardization|url=https://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=64029&ICS1=35&ICS2=60|access-date=23 November 2018|archive-date=29 April 2016|archive-url=https://web.archive.org/web/20160429201210/http://www.iso.org/iso/home/store/catalogue_ics/catalogue_detail_ics.htm?csnumber=64029&ICS1=35&ICS2=60|url-status=live}}</ref> || [[C++14]], C++1y
|-
!scope="row"| 2017
| | ISO/IEC 14882:2017<ref name="isocpp2017">{{cite web|title=ISO/IEC 14882:2017|publisher=International Organization for Standardization|url=https://www.iso.org/standard/68564.html|access-date=2 December 2017|archive-date=17 May 2013|archive-url=https://www.webcitation.org/6GgR6NHSY?url=http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372|url-status=live}}</ref> || [[C++17]], C++1z
|-
!scope="row"| 2020
| | ISO/IEC 14882:2020<ref name="isocpp2020">{{cite web|title=ISO/IEC 14882:2020|publisher=International Organization for Standardization|url=https://www.iso.org/standard/79358.html|access-date=16 December 2020|archive-date=16 December 2020|archive-url=https://web.archive.org/web/20201216154357/https://www.iso.org/standard/79358.html|url-status=live}}</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 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<ref>{{cite web|title=ISO/IEC TR 18015:2006|url=https://www.iso.org/standard/43351.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20190115203236/https://www.iso.org/standard/43351.html|archive-date=15 January 2019|access-date=15 February 2019|url-status=live}}</ref> dalam penggunaan dari C++ pada sistem tertanam dan implikasi performa bahasa C++ dan fitur perpustakaan.
* ISO/IEC TS 22277:2017<ref>{{cite web|title=ISO/IEC TS 22277:2017|url=https://www.iso.org/standard/73008.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20190115202004/https://www.iso.org/standard/73008.html|archive-date=15 January 2019|access-date=15 February 2019|url-status=live}}</ref> pada coroutine, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 19216:2018<ref>{{cite web|title=ISO/IEC TS 19216:2018|url=https://www.iso.org/standard/64030.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20190115201923/https://www.iso.org/standard/64030.html|archive-date=15 January 2019|access-date=15 February 2019|url-status=live}}</ref> pada pustaka jaringan
* ISO/IEC TS 21544:2018<ref>{{cite web|title=ISO/IEC TS 21544:2018|url=https://www.iso.org/standard/71051.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20190115201858/https://www.iso.org/standard/71051.html|archive-date=15 January 2019|access-date=15 February 2019|url-status=live}}</ref> pada modul, terintegrasi ke dalam [[C++20]]
* ISO/IEC TS 19570:2018<ref>{{cite web|title=ISO/IEC TS 19570:2018|url=https://www.iso.org/standard/70588.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20190115201519/https://www.iso.org/standard/70588.html|archive-date=15 January 2019|access-date=15 February 2019|url-status=live}}</ref> pada satu set ekstensi pustaka baru untuk paralelisme
* ISO/IEC TS 23619:2021<ref>{{cite web|title=ISO/IEC TS 23619:2021|url=https://www.iso.org/standard/76425.html|publisher=International Organization for Standardization|archive-url=https://web.archive.org/web/20181215153205/https://www.iso.org/standard/76425.html|archive-date=15 December 2018|access-date=11 October 2021|url-status=live}}</ref> pada ekstensi baru untuk refleksi

Lebih banyak spesifikasi teknis sedang dalam pengembangan dan menunggu persetujuan, termasuk set ekstensi konkurensi baru.<ref>See a list at {{cite web|title=Experimental C++ Features|url=https://en.cppreference.com/w/cpp/experimental|website=cppreference.com|archive-url=https://web.archive.org/web/20181123140131/https://en.cppreference.com/w/cpp/experimental|archive-date=23 November 2018|access-date=15 February 2019}}</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]]:<ref>{{Cite book |first=Bjarne |last=Stroustrup |year=2000 |page=46 |title=The C++ Programming Language |edition=Special |publisher=Addison-Wesley |isbn=0-201-70073-5 }}</ref><ref>{{cite web |url=http://www.stroustrup.com/3rd_issues.html |title=Open issues for The C++ Programming Language (3rd Edition) |first=Bjarne |last=Stroustrup |postscript=. This code is copied directly from Bjarne Stroustrup's errata page (p. 633). He addresses the use of <code>'\n'</code> rather than <code>std::endl</code>. Also see [http://www.stroustrup.com/bs_faq2.html#void-main Can I write "void main()"?] for an explanation of the implicit <code>return 0;</code> in the <code>main</code> function. This implicit return is ''not'' available in other functions. |access-date=5 May 2014 |archive-date=5 May 2014 |archive-url=https://web.archive.org/web/20140505221112/http://www.stroustrup.com/3rd_issues.html |url-status=live }}</ref>
Contoh program sederhana C++ untuk hello world dengan menggunakan [[Pustaka Dasar C++]] dapat dilihat di bawah ini:{{fact}}
<!--
<source lang="cpp">

# include <iostream.h>
***************************************************************
void main()
*
* PLEASE NOTE:
*
* BEFORE MAKING CHANGES to the "Hello World" example
* please establish consensus by discussing your proposed changes
* on the Talk page. This is not the place to "Be Bold"; this
* has been discussed before at length.
*
* If you change the sample program without discussion, it will be
* reverted within a few minutes.
*
* The latest consensus is ''not'' to make any of those changes.
* This is the example "Hello, world!" by Bjarne Stroustrup,
* the author of the C++ language, and is used in
* his book, "The C++ Programming Language (3rd edition)".
*
***************************************************************

--><syntaxhighlight lang="cpp" line="1">
#include <iostream>

int main()
{
{
Cout << "hello world\n";
std::cout << "Hello, world!\n";
}
}
</syntaxhighlight><!--
</source><ref name="Nicolai"> {{cite book
| last = Nicolai M. Josuttis
| title = C++ primer Jilid 54848 dari Programming languages, penerbit Addison-Wesley, 1991
| year =1991
| isbn = 0201548488, 9780201548488}} </ref>


*** PLEASE NOTE:****
== Keterangan ==
* BEFORE MAKING CHANGES to the "Hello World" example
Baris pertama : <source lang="cpp">#include <iostream.h></source>
* please establish consensus by discussing your proposed changes
Sebagai bagian dari proses kompilator, [[Kompilator]] dari c++ menjalankan program yang dinamakan preprosesor.{{fact}} Preprosesor memiliki kemampuan menambahkan dan menghapus kode dari sumber, Pada bagian #include memberitahuakan preprosesor untuk menyertakan kode dari iostream, Berkas iostream berisi deklarasi untuk berbagai fungsi yang dibutuhkan oleh perangkat lunak, atau class-class yang dibutuhkan.<ref name="Nicolai"/>
* on the Talk page. This is not the place to "Be Bold"; this
<sub>Teks subscript</sub>
* has been discussed before.
Baris kedua : <source lang="cpp">void main ()</source>
*
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 name="Nicolai"/>
* If you change the sample program without discussion, it will be
* reverted within a few minutes.
*
* The latest consensus is ''not'' to make any of those changes.
* This is the example "Hello, world!" by Bjarne Stroustrup,
* the author of the C++ language, and is used in
* his book, "The C++ Programming Language (3rd edition)".
*
*************************************************************** -->


=== Keterangan ===
Baris ketiga : <source lang="cpp">{</source>

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

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.<ref name="Nicolai"/>

Baris ketiga: <syntaxhighlight lang="cpp">{</syntaxhighlight>
Kurung kurawal buka menandakan awal program.<ref name="Nicolai"/>
Kurung kurawal buka menandakan awal program.<ref name="Nicolai"/>


Baris keempat : <source lang="cpp">cout Cout << "Hello world\n";</source>
Baris keempat: <syntaxhighlight lang="cpp">std::cout << "Hello world\n";</syntaxhighlight>
Cout adalah sebuah object dari [[Pustaka perangkat lunak]] standart C++ yang digunakan untuk mencetak string ke piranti output standart, yang biasanya adalah layar komputer, Compiler menghubungkan kode dari pustaka perangkat lunak standar itu dengan kode yang telah ditulis untuk mendapatkan hasil executable, Tanda <source lang="cpp">\n</source> adalah format modifier yang digunakan untuk bergabti baris setelah menampilkan string, jika ada cout lain pada program tersebut, maka string yang menyertainya akan dituliskan pada baris bawahnya.<ref name="Nicolai"/>
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 name="Nicolai"/>


Baris kelima: <source lang="cpp">}</source>
Baris kelima: <syntaxhighlight lang="cpp">}</syntaxhighlight>
Kurung kurawal tutup menandakan akhir program.<ref name="Nicolai2">{{cite book
Kurung kurawal tutup menandakan akhir program.<ref name="Nicolai2">{{cite book
| last = Nicolai M. Josuttis
|last = Nicolai M. Josuttis
| title = Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman
|title = Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman
| year =2002
|year =2002
| isbn = 0470843993, 9780470843994}} </ref>
|isbn = 0470843993, 9780470843994}}</ref>


== 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:.<ref name="Nicolai2"/>
C++ mempunyai 32 buah kata yang dipesan (''reserved words''). Kata kunci kelompok pertama merupakan turunan dari [[C (bahasa pemrograman)|bahasa C]], di antaranya:<ref name="Nicolai2"/>


{| class="wikitable"
{| class="wikitable"
Baris 62: Baris 171:
| const
| const
| double
| double
|
| float
| int
| int
| short
| short
Baris 96: Baris 205:
|}
|}
<ref name="Gregory">{{cite book
<ref name="Gregory">{{cite book
| last = Gregory Satir, Doug Brown
|last = Gregory Satir, Doug Brown
| title = C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman.
|title = C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman.
| year =2002
|year =2002
| isbn = 156592116X, 9781565921160}} </ref>
|isbn = 156592116X, 9781565921160}}</ref>


=== Kelompok kedua ===
=== Kelompok kedua ===
Baris 144: Baris 253:


Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.<ref name="Gregory"/>
Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.<ref name="Gregory"/>

<syntaxhighlight lang="cpp">
# 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 ==
== 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 name="Gregory"/>
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 name="Gregory"/>


{| class="wikitable"
{| class="wikitable"
Baris 158: Baris 292:
| char
| char
| Abjad/karakter atau untuk bilangan bulat kecil
| Abjad/karakter atau untuk bilangan bulat kecil
| 1 byte
| 1 bita
| signed: -128 to 127
| signed: -128 to 127
unsigned: 0 to 255
unsigned: 0 to 255
Baris 164: Baris 298:
| short int (short)
| short int (short)
| Bilangan bulat dengan jangkauan pendek
| Bilangan bulat dengan jangkauan pendek
| 2 byte
| 2 bita
| signed: -32768 to 32767
| signed: -32768 to 32767
unsigned: 0 to 65535
unsigned: 0 to 65535
Baris 170: Baris 304:
| int
| int
| Bilangan bulat
| Bilangan bulat
| 4 byte
| 4 bita
| signed: -2147483648 to 2147483647
| signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
unsigned: 0 to 4294967295
Baris 176: Baris 310:
| long int (long)
| long int (long)
| Integer dengan jangkauan panjang
| Integer dengan jangkauan panjang
| 4 byte
| 4 bita
| signed: -2147483648 to 2147483647
| signed: -2147483648 to 2147483647
unsigned: 0 to 4294967295
unsigned: 0 to 4294967295
Baris 182: Baris 316:
| bool
| bool
| Boolean, dapat bernilai benar atau salah (true or false)
| Boolean, dapat bernilai benar atau salah (true or false)
| i byte
| i bita
| true or false
| true or false
|-
|-
| float
| float
| Angka dengan titik mengambang (bilangan cacah)
| Angka dengan titik mengambang (bilangan cacah)
| 4 byte
| 4 bita
| 3.4e +/- 38 (7 digit)
| 3.4e +/- 38 (7 digit)
|-
|-
| double
| double
| Bilangan cacah dengan ketelitian ganda
| Bilangan cacah dengan ketelitian ganda
| 8 byte
| 8 bita
| 1.7e +/- 308 (15 digits)
| 1.7e +/- 308 (15 digits)
|-
|-
| long double
| long double
| Bilangan cacah dengan ketelitian ganda panjang
| Bilangan cacah dengan ketelitian ganda panjang
| 8 byte
| 8 bita
| 1.7e +/- 308 (15 digits)
| 1.7e +/- 308 (15 digits)
|-
|-
| wchar_t
| wchar_t
| Karakter lebar, biasa dipakai untuk Unicode karakter
| Karakter lebar, biasa dipakai untuk Unicode karakter
| 2 byte
| 2 bita
| 1 karakter lebar
| 1 karakter lebar
|}
|}


== Daftar C++ compiler ==
== Kompilator C++ ==
* Acorn C/C++
Untuk mengubah kode-kode C++ program menjadi suatu program aplikasi yang dimengerti oleh [[sistem operasi]] dan [[komputer]], diperlukan sebuah [[kompilator]] C++.{{fact}} Berikut ini adalah beberapa [[kompilator]] C++ yang dapat digunakan secara gratis,
* Borland C++
* [http://msdn.microsoft.com/vstudio/express/visualc/ Microsoft Visual C++ 2005 Express]
* C++/CX
* [http://www.turboexplorer.com/ Turbo C++ Explorer]
* C++Builder
* [http://developer.apple.com/tools/download/ Apple Xcode for Mac OS X]
* Cfront
* [http://www.openwatcom.org/ Open Source Watcom / OpenWatcom C/C++ Compiler]
* Clang
* [http://www.digitalmars.com/ Digital Mars C/C++ Compiler (Symantec C++ Replacement)]
* CodeWarrior
* [http://www.bloodshed.net/devcpp.html Bloodshed Dev-C++ C++ Compiler]
* Comeau C/C++
* [http://msdn.microsoft.com/netframework/downloads/updates/default.aspx Free Microsoft .NET Framework Software Development Kit (SDK) / Free Microsoft Visual C++ Compiler]
* ConceptGCC
* [http://www.intel.com/cd/software/products/asmo-na/eng/compilers/clin/277618.htm Intel C++ Compiler for Linux Non-Commercial Version]
* Digital Mars
* [http://developers.sun.com/sunstudio/downloads/index.jsp Sun Studio Compilers and Tools]
*Dev-C++
* [http://open64.sourceforge.net/ Open64 Compiler Tools]
*Eclipse IDE
* [http://developer.apple.com/tools/mpw-tools/ Apple's Macintosh Programmer's Workshop (C and C++ compilers)]
* GNU Compiler Collection
* [http://www.tendra.org/ TenDRA C/C++ Compiler]
* HP aC++
* [http://gcc.gnu.org/ GNU C/C++ Compiler]
* IBM XL C++
* [http://www.softintegration.com/products/chstandard/download/ Ch Embeddable C/C++ Interpreter (Standard Edition)]
* Intel C++ Compiler
* [http://www.delorie.com/djgpp/ DJGPP C and C++ Compilers]
* MinGW
* [http://root.cern.ch/root/Cint.html CINT C and C++ Interpreter]
*NetBeans IDE
* [http://sdcc.sourceforge.net/ SDCC C Cross-compiler]
* Norcroft C compiler
* [http://www.cygwin.com/ Cygwin Project (C & C++ Compilers)]
* Open64
* [http://sdcc.sourceforge.net/ SDCC C Cross-compiler]
* Oracle Solaris Studio
* [http://www.codeblocks.org/ Code::Blocks]
* 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 ==

* [[Dart (bahasa pemrograman)]]
* [[C Sharp (bahasa pemrograman)|C#]]
* [[Carbon (bahasa pemrograman)]]
* [[Rust (bahasa pemrograman)|Rust]]

== Referensi ==
{{reflist}}

== Bacaan lanjutan ==
{{Refbegin|30em}}
* {{Cite book|last1=Abrahams|first1=David|last2=Gurtovoy|first2=Aleksey|year=2005|title=C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond|url=https://archive.org/details/ctemplatemetapro0000abra|publisher=Addison-Wesley|isbn=0-321-22725-5|author-link=David Abrahams (computer programmer)}}
* {{Cite book|last=Alexandrescu|first=Andrei|year=2001|title=Modern C++ Design: Generic Programming and Design Patterns Applied|url=https://archive.org/details/moderncdesigngen0000alex|publisher=Addison-Wesley|isbn=0-201-70431-5|author-link=Andrei Alexandrescu}}
* {{Cite book|last1=Alexandrescu|first1=Andrei|last2=Sutter|first2=Herb|year=2004|title=C++ Design and Coding Standards: Rules and Guidelines for Writing Programs|url=https://archive.org/details/ccodingstandards0000sutt|publisher=Addison-Wesley|isbn=0-321-11358-6|author-link=Andrei Alexandrescu|author-link2=Herb Sutter}}
* {{Cite book|last=Becker|first=Pete|year=2006|title=The C++ Standard Library Extensions : A Tutorial and Reference|url=https://archive.org/details/cstandardlibrary0000beck|publisher=Addison-Wesley|isbn=0-321-41299-0|author-link=Pete Becker}}
* {{Cite book|last=Brokken|first=Frank|year=2010|url=http://www.icce.rug.nl/documents/cplusplus/|title=C++ Annotations|publisher=University of Groningen|isbn=978-90-367-0470-0|access-date=28 April 2010|archive-url=https://web.archive.org/web/20100428014354/http://www.icce.rug.nl/documents/cplusplus/|archive-date=28 April 2010|url-status=live}}
* {{Cite book|last=Coplien|first=James O.|date=1994|url=https://archive.org/details/advancedcbsprogr00copl|title=Advanced C++: Programming Styles and Idioms|isbn=0-201-54855-0|author-link=James O. Coplien|orig-year=reprinted with corrections, original year of publication 1992}}
* {{Cite book|last=Dewhurst|first=Stephen C.|year=2005|title=C++ Common Knowledge: Essential Intermediate Programming|url=https://archive.org/details/ccommonknowledge0000dewh|publisher=Addison-Wesley|isbn=0-321-32192-8}}
* {{Cite book|author=Information Technology Industry Council|date=15 October 2003|title=Programming languages&nbsp;– C++|location=Geneva|publisher=ISO/IEC|edition=Second|id=14882:2003(E)|author-link=Information and Communications Technology Council}}
* {{Cite book|last=Josuttis|first=Nicolai M.|year=2012|title=The C++ Standard Library, A Tutorial and Reference|publisher=Addison-Wesley|isbn=978-0-321-62321-8|edition=Second}}
* {{Cite book|last1=Koenig|first1=Andrew|last2=Moo|first2=Barbara E.|year=2000|url=https://archive.org/details/acceleratedcprac2000koen|title=Accelerated C++ – Practical Programming by Example|publisher=Addison-Wesley|isbn=0-201-70353-X|author-link=Andrew Koenig (programmer)}}
* {{Cite book|last1=Lippman|first1=Stanley B.|last2=Lajoie|first2=Josée|last3=Moo|first3=Barbara E.|year=2011|url=https://archive.org/details/cprimer0000lipp_5thed|title=C++ Primer|publisher=Addison-Wesley|isbn=978-0-321-71411-4|edition=Fifth|author-link=Stanley B. Lippman|url-access=registration}}
* {{Cite book|last=Lippman|first=Stanley B.|year=1996|title=Inside the C++ Object Model|url=https://archive.org/details/insidecobjectmod0000lipp|publisher=Addison-Wesley|isbn=0-201-83454-5}}
* {{Cite book|last=Meyers|first=Scott|year=2005|url=https://archive.org/details/effectivec55spec00meye|title=Effective C++|publisher=Addison-Wesley|isbn=0-321-33487-6|edition=Third|author-link=Scott Meyers}}
* {{Cite book|last=Stroustrup|first=Bjarne|year=2013|title=[[The C++ Programming Language]]|publisher=Addison-Wesley|isbn=978-0-321-56384-2|edition=Fourth|author-link=Bjarne Stroustrup}}
* {{Cite book|last=Stroustrup|first=Bjarne|year=1994|title=[[The Design and Evolution of C++]]|publisher=Addison-Wesley|isbn=0-201-54330-3|author-link=Bjarne Stroustrup}}
* {{Cite book|last=Stroustrup|first=Bjarne|year=2014|title=Programming: Principles and Practice Using C++|url=https://archive.org/details/programmingprinc0000stro_b7o6|publisher=Addison-Wesley|isbn=978-0-321-99278-9|edition=Second|author-link=Bjarne Stroustrup}}
* {{Cite book|last=Sutter|first=Herb|year=2001|title=More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions|publisher=Addison-Wesley|isbn=0-201-70434-X|author-link=Herb Sutter}}
* {{Cite book|last=Sutter|first=Herb|year=2004|title=Exceptional C++ Style|publisher=Addison-Wesley|isbn=0-201-76042-8|author-link=Herb Sutter}}
* {{Cite book|last1=Vandevoorde|first1=David|last2=Josuttis|first2=Nicolai M.|year=2003|title=C++ Templates: The complete Guide|url=https://archive.org/details/ctemplatescomple0000vand|publisher=Addison-Wesley|isbn=0-201-73484-2}}
{{refend}}


== Pranala luar ==
== Pranala luar ==
* [http://public.research.att.com/~bs/homepage.html Homepage Bjarne Stroustrup]
* [http://www.cuj.com C++ Users Journal]
* [http://www.cuj.com C++ Users Journal]
* [http://www.sgi.com/tech/stl/ Standard Template Library]
* [http://www.sgi.com/tech/stl/ Standard Template Library]
* [http://public.research.att.com/~bs/iso_release.html ISO Standard]
* [http://erdani.org/ Andrei Alexandrescu]
* [http://erdani.org/ Andrei Alexandrescu]
* [http://www.codeguru.com/ Code guru, C++ resource]
* [http://www.codeguru.com/ Code guru, C++ resource]
* [http://www.cplusplus.com C++ basic tutorial]
* [https://www.scriptmlbb.com/2023/08/belajar-c-memahami-dasar-dasar-bahasa.html C++ basic tutorial]
* http://www.cplusplus.com/

* http://www.cplusplus.com/doc/tutorial/
== Referensi ==
* http://www.cplusplus.com/doc/tutorial/program_structure/
{{reflist}}
* http://www.learncpp.com/
* http://www.cprogramming.com/
* http://en.cppreference.com/w/
* http://www.cs.cf.ac.uk/Dave/C/node3.html
* https://goonlinetools.com/cpp-compiler/
* http://www.thefreecountry.com/compilers/cpp.shtml
* http://www.compilers.net/dir/free/compilers/ccpp.htm {{Webarchive|url=https://web.archive.org/web/20141013143049/http://www.compilers.net/Dir/Free/Compilers/CCpp.htm |date=2014-10-13 }}
* http://www.cppgameprogramming.com/
* http://www.cprogramming.com/game-programming.html


{{Daftar bahasa pemrograman}}
{{Daftar bahasa pemrograman}}
{{Authority control}}


[[Kategori:C++| ]]
[[Kategori:Bahasa pemrograman]]
[[Kategori:Bahasa pemrograman]]
[[Kategori:C++]]
[[Kategori:Perangkat lunak lintas platform]]
[[Kategori:Artikel bagus bertopik teknologi informasi]]
[[Kategori:Bahasa pemrograman dengan standar ISO]]
[[Kategori:Bahasa pemrograman tingkat tinggi]]

[[Kategori:Bahasa pemrograman yang dibuat pada tahun 1983]]
[[af:C++]]
[[an:C++]]
[[ar:سي++ (لغة برمجة)]]
[[az:C++]]
[[bat-smg:C++]]
[[be:C++]]
[[bg:C++]]
[[bn:সি++]]
[[br:Areg C++]]
[[bs:C++]]
[[bug:C++]]
[[ca:C++]]
[[cs:C++]]
[[cv:Си++]]
[[da:C++]]
[[de:C++]]
[[el:C++]]
[[en:C++]]
[[eo:C++]]
[[es:C++]]
[[et:C++]]
[[eu:C++]]
[[fa:سی++]]
[[fi:C++]]
[[fr:C++]]
[[ga:C++]]
[[gan:C++]]
[[gl:C++]]
[[he:C++]]
[[hi:सी++]]
[[hr:C++]]
[[hu:C++]]
[[hy:C++]]
[[ia:C++]]
[[is:C++]]
[[it:C++]]
[[ja:C++]]
[[ka:C++]]
[[kaa:C++]]
[[ko:C++]]
[[la:C++]]
[[lb:C++]]
[[lt:C++]]
[[lv:C++]]
[[mk:C++]]
[[ml:സി++]]
[[mr:सी प्लस प्लस प्रोग्रॅमिंग लँग्वेज]]
[[ms:C++]]
[[my:C++]]
[[new:सी++]]
[[nl:C++]]
[[nn:C++]]
[[no:C++]]
[[oc:C++]]
[[pl:C++]]
[[pt:C++]]
[[ro:C++]]
[[ru:C++]]
[[sah:C++]]
[[sh:C++]]
[[simple:C++]]
[[sk:C++]]
[[sl:C++]]
[[sq:C++]]
[[sr:C++]]
[[sv:C++]]
[[ta:சி++]]
[[te:సీ ప్లస్ ప్లస్]]
[[tg:C++]]
[[th:ภาษาซีพลัสพลัส]]
[[tk:C++ programmirleme]]
[[tr:C++]]
[[uk:C++]]
[[uz:C++]]
[[vi:C++]]
[[zh:C++]]
[[zh-yue:C++]]

Revisi terkini sejak 2 Juli 2024 10.09

C++
Edit nilai pada Wikidata
ParadigmasMulti-paradigma: prosedural, fungsional, orientasi objek, generik, modular
KeluargaC
Dirancang olehBjarne Stroustrup
PengembangISO/IEC JTC 1 (Joint Technical Committee 1) / SC 22 (Subcommittee 22) / WG 21 (Working Group 21)
Rilis perdana1985; 39 tahun lalu (1985)
Rilis stabil
C++20 (ISO/IEC 14882:2020) / 15 Desember 2020; 3 tahun lalu (2020-12-15)
Rilis pratayang
C++23 / 17 Maret 2022; 2 tahun lalu (2022-03-17)
Tipe sistemStatis, nominal, sebagian interfrensi
Sistem operasilintas platform
Ekstensi nama berkas.C, .cc, .cpp, .cxx, .c++, .h, .H, .hh, .hpp, .hxx, .h++
Situs webisocpp.org
Repositoriisocpp.org
Implementasi utama
GCC, LLVM Clang, Microsoft Visual C++, Embarcadero C++Builder, Intel C++ Compiler, IBM XL C++, EDG
Terpengaruh oleh
Ada, ALGOL 68,[1] BCPL,[2] C, CLU,[1] ML, Mesa,[1] Modula-2,[1] Simula, Smalltalk[1]
Mempengaruhi
Ada 95, C#,[3] C99, Carbon, Chapel,[4] Clojure,[5] D, Java,[6] JS++,[7] Lua, Nim,[8] Objective-C++, Perl, PHP, Python,[9] Rust, Seed7
Sunting kotak info
Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini

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.

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]

Bjarne Stroustrup, pembuat dari C++, di kantor AT&T-nya di New Jersey c. 2000

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 kernel UNIX sehubungan dengan komputasi terdistribusi. Mengingat pengalaman PhD-nya, Stroustrup bertindak untuk meningkatkan bahasa C dengan fitur seperti Simula.[15]

Etimologi

[sunting | sunting sumber]

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 operator C ++ (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"[18][19] sebelum mendapat nama akhir.

Standardisasi

[sunting | sunting sumber]
Standar C++
Tahun Standar C++[20] Nama informal
1998 ISO/IEC 14882:1998[21] C++98
2003 ISO/IEC 14882:2003[22] C++03
2011 ISO/IEC 14882:2011[23] C++11, C++0x
2014 ISO/IEC 14882:2014[24] C++14, C++1y
2017 ISO/IEC 14882:2017[25] C++17, C++1z
2020 ISO/IEC 14882:2020[26] 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 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
  • ISO/IEC TS 19216:2018[29] pada pustaka jaringan
  • ISO/IEC TS 21544:2018[30] pada modul, terintegrasi ke dalam C++20
  • ISO/IEC TS 19570:2018[31] pada satu set ekstensi pustaka baru untuk paralelisme
  • ISO/IEC TS 23619:2021[32] pada ekstensi baru untuk refleksi

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

Contoh Program C++

[sunting | sunting sumber]

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:[34][35]

#include <iostream>

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

Keterangan

[sunting | sunting sumber]

Baris pertama:

#include <iostream.h>

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:

int main()

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]

Baris ketiga:

{

Kurung kurawal buka menandakan awal program.[36]

Baris keempat:

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

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

[sunting | sunting sumber]

Kelompok pertama

[sunting | sunting sumber]

C++ mempunyai 32 buah kata yang dipesan (reserved words). Kata kunci kelompok pertama merupakan turunan dari bahasa C, di antaranya:[37]

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

[38]

Kelompok kedua

[sunting | sunting sumber]

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

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

# 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);

Tipe data dasar

[sunting | sunting sumber]

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

Kompilator C++

[sunting | sunting sumber]
  • Acorn C/C++
  • Borland C++
  • C++/CX
  • C++Builder
  • Cfront
  • Clang
  • CodeWarrior
  • Comeau C/C++
  • ConceptGCC
  • Digital Mars
  • Dev-C++
  • Eclipse IDE
  • 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++

[sunting | sunting sumber]
  • 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

[sunting | sunting sumber]

Referensi

[sunting | sunting sumber]
  1. ^ a b c d e Stroustrup, Bjarne (1996). "A history of C++: 1979-1991". History of programming languages---II. ACM. hlm. 699–769. doi:10.1145/234286.1057836. 
  2. ^ Stroustrup, Bjarne (December 16, 2021). "C++20: Reaching for the Aims of C++ - Bjarne Stroustrup - CppCon 2021". CppCon. 
  3. ^ 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. 
  4. ^ "Chapel spec (Acknowledgements)" (PDF). Cray Inc. 1 October 2015. Diarsipkan dari versi asli (PDF) tanggal 24 June 2018. Diakses tanggal 14 January 2016. 
  5. ^ "Rich Hickey Q&A by Michael Fogus". Diarsipkan dari versi asli tanggal 2017-01-11. Diakses tanggal 2017-01-11. 
  6. ^ Harry. H. Chaudhary (28 July 2014). "Cracking The Java Programming Interview :: 2000+ Java Interview Que/Ans". Diarsipkan dari versi asli tanggal 27 May 2021. Diakses tanggal 29 May 2016. 
  7. ^ Roger Poon (1 May 2017). "Scaling JS++: Abstraction, Performance, and Readability". Diarsipkan dari versi asli tanggal 11 May 2020. Diakses tanggal 21 April 2020. 
  8. ^ "FAQ Nim Programming Language". Diarsipkan dari versi asli tanggal 11 July 2017. Diakses tanggal 2020-04-21. 
  9. ^ "9. Classes — Python 3.6.4 documentation". docs.python.org. Diarsipkan dari versi asli tanggal 23 October 2012. Diakses tanggal 2018-01-09. 
  10. ^ Hanif al fatta (2006). Dasar Pemrograman C++ disertai dengan Pengenalan Pemrograman Berorientasi Objek. ISBN 979-763-582-1. 
  11. ^ Al Fatta, Hanif (2006). Triyuliana, Agnes Heni, ed. Dasar Pemograman C++ Disertai Dengan Pengenalan Pemograman Berorientasi Objek. Yogyakarta: CV. Andi Offset. hlm. 1. ISBN 979-763-582-1. 
  12. ^ Bruce Eckel (2000). Thinking in C++. Jilid 1 dari Thinking in C++ Introduction to Standard C+, Bruce Eckel. ISBN 0139798099, 9780139798092 Periksa nilai: invalid character |isbn= (bantuan). 
  13. ^ Bjarne Stroustrup (2000). The C++ programming language, Prentice Hall, 2000. ISBN 0201889544, 9780201889543 Periksa nilai: invalid character |isbn= (bantuan). 
  14. ^ Stroustrup, Bjarne (7 March 2010). "Bjarne Stroustrup's FAQ: When was C++ invented?". stroustrup.com. Diarsipkan dari versi asli tanggal 6 February 2016. Diakses tanggal 16 September 2010. 
  15. ^ Stroustrup, Bjarne. "Evolving a language in and for the real world: C++ 1991-2006" (PDF). Diarsipkan dari versi asli (PDF) tanggal 20 November 2007. Diakses tanggal 14 August 2013. 
  16. ^ "Bjarne Stroustrup's FAQ – Where did the name "C++" come from?". Diarsipkan dari versi asli tanggal 6 February 2016. Diakses tanggal 16 January 2008. 
  17. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama hopl2
  18. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama hopl22
  19. ^ "C For C++ Programmers". Northeastern University. Diarsipkan dari versi asli tanggal 17 November 2010. Diakses tanggal 7 September 2015. 
  20. ^ "History of C++". en.cppreference.com. Diarsipkan dari versi asli tanggal Feb 2, 2022. Diakses tanggal March 16, 2022. 
  21. ^ "ISO/IEC 14882:1998". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2017. Diakses tanggal 23 November 2018. 
  22. ^ "ISO/IEC 14882:2003". International Organization for Standardization. Diarsipkan dari versi asli tanggal 13 August 2021. Diakses tanggal 23 November 2018. 
  23. ^ "ISO/IEC 14882:2011". International Organization for Standardization. Diarsipkan dari versi asli tanggal 27 May 2016. Diakses tanggal 23 November 2018. 
  24. ^ "ISO/IEC 14882:2014". International Organization for Standardization. Diarsipkan dari versi asli tanggal 29 April 2016. Diakses tanggal 23 November 2018. 
  25. ^ "ISO/IEC 14882:2017". International Organization for Standardization. Diarsipkan dari versi asli tanggal 17 May 2013. Diakses tanggal 2 December 2017. 
  26. ^ "ISO/IEC 14882:2020". International Organization for Standardization. Diarsipkan dari versi asli tanggal 16 December 2020. Diakses tanggal 16 December 2020. 
  27. ^ "ISO/IEC TR 18015:2006". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019. 
  28. ^ "ISO/IEC TS 22277:2017". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019. 
  29. ^ "ISO/IEC TS 19216:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019. 
  30. ^ "ISO/IEC TS 21544:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019. 
  31. ^ "ISO/IEC TS 19570:2018". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 January 2019. Diakses tanggal 15 February 2019. 
  32. ^ "ISO/IEC TS 23619:2021". International Organization for Standardization. Diarsipkan dari versi asli tanggal 15 December 2018. Diakses tanggal 11 October 2021. 
  33. ^ See a list at "Experimental C++ Features". cppreference.com. Diarsipkan dari versi asli tanggal 23 November 2018. Diakses tanggal 15 February 2019. 
  34. ^ Stroustrup, Bjarne (2000). The C++ Programming Language (edisi ke-Special). Addison-Wesley. hlm. 46. ISBN 0-201-70073-5. 
  35. ^ 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. 
  36. ^ a b c d Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama Nicolai
  37. ^ a b Nicolai M. Josuttis (2002). Object-oriented programming in C++, Penerbit J. Wiley, 2002, Tebal 610 halaman. ISBN 0470843993, 9780470843994 Periksa nilai: invalid character |isbn= (bantuan). 
  38. ^ a b c d Gregory Satir, Doug Brown (2002). C++: the core language, Penerbit, O'Reilly Media, Inc., 1995, Tebal 207 halaman. ISBN 156592116X, 9781565921160 Periksa nilai: invalid character |isbn= (bantuan).  horizontal tab character di |title= pada posisi 68 (bantuan)

Bacaan lanjutan

[sunting | sunting sumber]

Pranala luar

[sunting | sunting sumber]