Anda di halaman 1dari 36

BAB II

JENIS-JENIS DATA DASAR

Tujuan dari bab ini adalah agar mahasiswa :


 Dapat mendefinisikan dan menginisialisasi variabel dan konstanta
 Memahami sifat dan keterbatasan integer dan bilangan floating-point
 Dapat menulis aritmatika ekspresi dan pernyataan tugas di C++
 Menghargai pentingnya komentar dan tata letak kode yang baik
 Dapat membuat program yang membaca dan memproses masukan (input), dan
menampilkan hasilnya
 Dapat memproses string, menggunakan tipe string C++ standar

2.1. Variabel
Saat program Kita melakukan perhitungan, Kita ingin menyimpan nilai sehingga Kita bisa
menggunakannya nanti. Dalam program C++, Kita menggunakan variabel untuk menyimpan
nilai. Pada bagian ini, Kita akan belajar menentukan dan menggunakan variabel.

Untuk menggambarkan penggunaan variabel, kita akan mengembangkan program yang


memecahkan masalah berikut. Minuman ringan dijual dengan kaleng dan botol. Sebuah toko
menawarkan paket enam kaleng 12 ons untuk harga yang sama dengan botol dua liter. Mana
yang harus kamu beli? (12 ons cairan sama dengan 0,355 liter.)

Gambar 2.1 : Apa yang lebih banyak mengandung soda? Paket enam kaleng 12
ons atau botol dua liter?

Dalam program, kita akan menentukan variabel untuk jumlah kaleng per paket dan untuk
volume masing-masing kaleng. Kemudian kita akan menghitung volume paket enam dalam
liter dan mencetak jawabannya.
2.1.1 Definisi Variabel

Pernyataan berikut mendefinisikan sebuah variabel bernama kaleng_per_pak:


int kaleng_per_pak=6;

Variabel adalah lokasi penyimpanan dalam program komputer. Setiap variabel memiliki
nama dan memiliki nilai.

Sebuah variabel mirip dengan tempat parkir di garasi parkir. Tempat parkir memiliki
pengenal (seperti "J 053"), dan bisa menampung kendaraan. Variabel memiliki nama (seperti
kaleng_per_pak), dan dapat menyimpan nilai (seperti 6).

Sebuah variabel adalah lokasi penyimpanan dengan sebuah nama.

Gambar 2.2. Seperti variabel dalam program komputer, tempat parkir memiliki
pengenal dan isi.

Saat menentukan variabel, Kita biasanya ingin menginisialisasinya. Artinya, Kita


menentukan nilai yang harus disimpan dalam variabel. Pertimbangkan lagi definisi variabel
ini:
int kaleng_per_pak = 6;

Variabel kaleng_per_pak diinisialisasi dengan nilai 6.

Saat menentukan variabel, Kita juga menentukan jenis nilainya.


Seperti tempat parkir yang dibatasi pada jenis kendaraan tertentu (seperti mobil kompak,
sepeda motor, atau kendaraan listrik), sebuah variabel di C++ menyimpan data tipe tertentu.
C++ mendukung beberapa tipe data: angka, string teks, file, tanggal, dan banyak lainnya.
Kita harus menentukan jenis kapan pun Kita menentukan variabel.

Gambar 2.3. Setiap tempat parkir cocok untuk jenis kendaraan tertentu, sama
seperti setiap variabel memiliki nilai tipe tertentu.

Variabel kaleng_per_pak adalah bilangan bulat, bilangan bulat tanpa bagian pecahan. Di C+
+, tipe ini disebut int. (Lihat bagian selanjutnya untuk informasi lebih lanjut tentang jenis
bilangan di C++.)

Perhatikan bahwa tipe tersebut muncul sebelum nama variabel:


int kaleng_per_pack = 6;

Tabel 2.1 menunjukkan variasi definisi variabel.

Tabel 2.1. Definisi variable pada C++


Nama variable Keterangan
int kaleng = 6; Mendefinisikan variabel integer dan menginisialisasi dengan 6.
int botol =7; Nilai awal tidak perlu konstan. (Tentu saja, kaleng dan botol
int total = kaleng + pasti sudah ditentukan sebelumnya.)
botol;
int botol = "10"; SALAH: Kita tidak dapat menginisialisasi bilangan dengan
string.
int botol; Mendefinisikan variabel integer tanpa menginisialisasi. Ini bisa
menjadi menyebabkan Kesalahan
int botol, kaleng; Mendefinisikan dua variabel integer dalam sebuah pernyataan
tunggal. Dalam buku ini, kita akan mendefinisikan setiap
variabel dalam sebuah pernyataan terpisah.

botol =1; Hati-hati: Jenisnya hilang Pernyataan ini bukan definisi tapi
penugasan nilai baru ke variabel yang ada

2.1.2. Jenis-Jenis Bilangan

Di C++, ada beberapa jenis/tipe angka yang berbeda. Kita menggunakan tipe bilangan bulat,
yang disebut int di C++, untuk menunjukkan bilangan bulat tanpa bagian pecahan. Sebagai
contoh, harus ada sejumlah kaleng bilangan bulat dalam kemasan kaleng apapun, Kita tidak
dapat memiliki pecahan kaleng.

Tabel 2.2. Bilangan-bilangan pada C++


Bilangan Jenis Keterangan
6 int Sebuah bilangan bulat/integer tidak memiliki bagian pecahan
-6 int Bilangan bulau/integer bisa jadi negatif.
0 int Nol adalah bilangan bulat/integer.
0.5 double Angka dengan bagian pecahan memiliki tipe ganda.
1.0 double Sebuah bilangan bulat dengan bagian pecahan .0 memiliki
1.3 tipe ganda.
1E6 double Angka dalam notasi eksponensial: 1 × 10 6 atau 1000000.
Angka dalam notasi eksponensial selalu memiliki tipe double.
2.96E-2 double Eksponen negatif: 2.96 × 10-2 = 2.96 / 100 = 0.0296
100,000 SALAH: Jangan gunakan koma sebagai pemisah desimal.
3½ SALAH: Jangan gunakan pecahan; Gunakan notasi desimal:
3.5.
Gunakan tipe int untuk angka yang tidak dapat memiliki
bagian pecahan.
Bila diperlukan bagian pecahan (seperti pada angka 0.355), kita menggunakan bilangan
floating point. Jenis yang paling umum digunakan untuk bilangan floating-point di C ++
disebut double. Inilah definisi variabel floating-point:

double volume_kaleng = 0.355;


float volume_kaleng = 0.355;

Bila nilai seperti 6 atau 0,355 terjadi pada program C++, itu disebut angka literal. Tabel 2
menunjukkan bagaimana menulis bilangan bulat dan floating-point literal di C ++.

Gunakan tipe ganda untuk bilangan floating-point.

2.1.3. Nama Variabel

Bila Kita mendefinisikan sebuah variabel, Kita harus memilih nama yang menjelaskan
tujuannya. Misalnya, lebih baik menggunakan nama deskriptif, seperti can_volume, daripada
nama yang singkat, seperti cv.
Di C ++, ada beberapa aturan sederhana untuk nama variabel:
1. Nama variabel harus dimulai dengan huruf atau karakter garis bawah (_), dan karakter
yang tersisa harus berupa huruf, angka, atau garis bawah.
2. Kita tidak dapat menggunakan simbol lain seperti $ atau %. Spasi juga tidak diizinkan
masuk dalam nama. Kita bisa menggunakan underscore sebagai gantinya, seperti pada
volume_kaleng.
3. Nama variabel bersifat case-sensitive, yaitu Volume_kaleng dan volume_kaleng adalah
nama yang berbeda. Untuk itu alasan ini, ada sebaiknya gunakan hanya huruf kecil untuk
nama variabel.
4. Kita tidak dapat menggunakan kata-kata yang reversed seperti double atau return sebagai
nama; Kata-kata ini dicadangkan secara eksklusif untuk makna khas C ++ mereka. (Lihat
Lampiran B.)
Tabel 3 menunjukkan contoh nama variabel legal dan ilegal di C ++.
Tabel 2.3. Nama Variabel pada C++
Nama Variabel Keterangan
Volume_kaleng1 Nama variabel terdiri dari huruf, angka, dan karakter
underscore.
X Dalam matematika, Kita menggunakan nama variabel pendek
seperti x atau y. Ini legal di C++, tapi tidak terlalu umum,
karena bisa membuat program lebih sulit dimengerti
Volume_kaleng Hati-hati: Nama variabel sensitif huruf. Nama variabel ini
berbeda dengan volume_kaleng
6pack SALAH: Nama variabel tidak dapat dimulai dengan angka.
Volume kaleng SALAH: Nama variabel tidak boleh berisi spasi.
double SALAH: Kita tidak dapat menggunakan kata yang
int dicadangkan (reserved word) sebagai nama variabel.
ltr/fl.oz SALAH: Kita tidak dapat menggunakan simbol seperti / atau .
(titik)

2.1.4. Pernyataan Tugas

Kita menggunakan pernyataan tugas (assignment statement) untuk menempatkan nilai baru
ke dalam variabel. Ini adalah
int kaleng_per_pak;
contoh:
kaleng_per_pak = 8;

Sisi kiri dari sebuah pernyataan tugas terdiri dari sebuah variabel. Tangan kanan Sisi adalah
ungkapan yang memiliki nilai. Nilai itu tersimpan dalam variabel, Tanpa Isi sebelumnya Ada
perbedaan penting antara definisi variabel dan tugas pernyataan:
int kaleng_per_pak = 6; // Definisi variabel
...
kaleng_per_pak = 8; // Pernyataan tugas
Pernyataan pertama adalah definisi kaleng_per_pak. Ini adalah instruksi untuk membuat
variabel baru ber-tipe int, untuk memberi nama kaleng_per_pak, dan untuk menginisialisasi
dengan 6. Pernyataan kedua adalah pernyataan tugas: sebuah instruksi untuk mengganti isi
dari variabel yang ada kaleng_per_pak dengan nilai lain.

Pernyataan tugas menyimpan nilai baru dalam variabel, menggantikan


nilai yang tersimpan sebelumnya.

Tanda = tidak berarti sisi kiri sama dengan sisi kanan. Ekspresi di sebelah kanan dievaluasi,
dan nilainya dimasukkan ke dalam variabel di sebelah kiri.

Jangan bingung operasi penugasan ini dengan = digunakan dalam aljabar untuk menunjukkan
kesetaraan. Operator penugasan adalah instruksi untuk melakukan sesuatu, yaitu memberi
nilai pada variabel. Kesamaan matematis menyatakan fakta bahwa dua nilai sama.

Operator penugasan = tidak menunjukkan kesetaraan matematika.

Misalnya, di C++, sangat legal untuk menulis


total_volume = total_volume + 2;

Ini berarti mencari nilai yang tersimpan dalam variabel total_volume, tambahkan 2 ke
dalamnya, dan letakkan hasilnya kembali ke total_volume (lihat gambar 2.4) Efek bersih dari
eksekusi pernyataan ini adalah kenaikan total_volume dengan 2. Misalnya, jika total_volume
adalah 2.13 sebelum eksekusi pernyataan, maka akan diatur ke 4.13 sesudahnya. Tentu saja,
dalam matematika tidak masuk akal untuk menulis bahwa x = x + 2. Tidak ada nilai yang
bisa setara dengan dirinya sendiri ditambah 2.
syntax 2.2 Tugas

Gambar. 2.4. Menjalankan tugas total_volume = total_volume + 2

2.1.5. Konstanta

Bila variabel didefinisikan dengan kata yang dikunci const, nilainya tidak akan pernah
berubah. Konstanta dikomunikasikan dengan huruf kapital untuk membedakannya secara
visual dari variabel biasa:

const double VOLUME_BOTOL = 2;

Ini adalah gaya pemrograman yang baik untuk menggunakan konstanta yang dinamai dalam
program Kita untuk menjelaskan makna nilai numerik. Misalnya, bandingkan pernyataannya

double total_volume = botol * 2;


dan
double total_volume = botol * VOLUME_BOTOL;
Seorang programmer yang membaca pernyataan pertama mungkin tidak mengerti
pentingnya angka 2. Pernyataan kedua, dengan konstanta bernama, membuat perhitungan
jauh lebih jelas.

Kita tidak dapat mengubah nilai variabel yang didefinisikan sebagai


const.

2.1.6. Komentar

Seiring program Kita menjadi lebih kompleks, Kita harus menambahkan komentar,
penjelasan untuk pembaca kode Kita. Berikut adalah contohnya:

const double VOLUME_KALENG = 0.355; // isi kaleng 0,355 Liter

Komentar ini menjelaskan pentingnya nilai 0.355 untuk pembaca manusia. Compiler tidak
memproses komentar sama sekali. Ini mengabaikan segala sesuatu mulai dari tanda
pembatas // sampai akhir baris.

Gunakan komentar untuk menambahkan penjelasan bagi orang


yang membaca kode kita. Kompilator mengabaikan komentar.

Gambar 2.5. Sama seperti komentator televisi yang menjelaskan berita


tersebut, Kita menggunakan komentar di program Kita untuk
menjelaskan perilakunya.
Kita menggunakan tanda // untuk komentar satu baris. Jika Kita memiliki komentar yang
mencakup banyak baris, lampirkan antara tanda pembatas / * dan * /. Compiler mengabaikan
pembatas ini dan segala sesuatu di antaranya.

Berikut adalah contoh khas, sebuah komentar panjang di awal sebuah program, untuk
menjelaskan tujuan program:

/*
Program ini menghitung volume (dalam liter) dari enam kaleng soda
Dan total volume enam pak dan botol dua liter.
*/

Contoh:
// program latihan2-1.cpp
// program menjumlah 2 bilangan bulat
#include <iostream>
using namespace std;
int main()
{
// deklarasi variable/definisi variabel
int bilangan1 = 0, bilangan2 = 0;
int jumlah = 0;

cout << "PROGRAM MENJUMLAH 2 BILANGAN BULAT\n";


cout << "=====================================\n\n";
//input bilangan bulat pertama
cout << "Masukkan Bilangan Bulat Pertama : ";
cin >> bilangan1;

//input bilangan bulat kedua


cout << "Masukkan Bilangan Bulat Kedua : ";
cin >> bilangan2;

// jumlah kedua bilangan disimpan pd varibel jumlah


jumlah = bilangan1 + bilangan2;

//output keterangan dan hasil


cout << "Jumlah kedua Bilangan adalah : " << jumlah << endl;
system("PAUSE");
return 0;
}
Kita sekarang siap menyelesaikan program kita. Program berikut menunjukkan penggunaan
variabel, konstanta, dan pernyataan tugas. Program ini menampilkan volume enam kaleng
dan total volume enam pak dan botol dua liter.

Kita menggunakan konstanta untuk kaleng dan volume botol. Variabel total_volume
diinisialisasi dengan volume kaleng. Dengan menggunakan pernyataan tugas, kami
menambahkan volume botol.

Contoh:
// program latihan2-2.cpp
/*
Program ini menghitung volume (dalam liter) minuman soda isi 6 kaleng dalam
1 pak dan total volume enam kaleng dan botol isi dua liter.
*/
#include <iostream>
using namespace std;

int main()
{
int kaleng_per_pak = 6; // 1 pak isinya 6 kaleng
const double VOLUME_KALENG = 0.355; // isi 1 kaleng = 0,355 liter
double total_volume = kaleng_per_pak * VOLUME_KALENG;

cout << "PROGRAM NILAI KONSTAN\n";


cout << "=====================\n\n";
cout << "1 Pak isi 6 kaleng, volumenya = "
<< total_volume << " liter." << endl;
const double VOLUME_BOTOL = 2; // botol isi 2 liter
total_volume = total_volume + VOLUME_BOTOL;

cout << "1 Pak isi 6 kaleng dan Botol 2 liter, volumenya = "
<< total_volume << " liter." << endl;
system("PAUSE");
return 0;
}

Jalankan program:

1 Pak isi 6 dari kaleng, volumenya = 2.13 liter


1 Pak isi 6 dan Botol 2 liter, volumenya = 4.13 liter
Kesalahan umum 2.1

Menggunakan Variabel yang tidak terdefinisi

Kita harus menentukan variabel sebelum menggunakannya untuk pertama kalinya.


Misalnya, urutan pernyataan berikut tidak sah;

double volume_kaleng = 12 * liter_per_ons;


double liter_per_ons = 0.0296;

Dalam program Kita, pernyataan disusun sesuai urutannya. Ketika compiler mencapai
pernyataan pertamanya, ia tidak tahu bahwa liter_per_ons akan didefinisikan pada baris
berikutnya, dan laporan tersebut melaporkan adanya kesalahan.

Kesalahan umum 2.2

Menggunakan variabel yang tidak diinisialisasi

Jika Kita mendefinisikan sebuah variabel tapi membiarkannya tidak diinisialisasi, maka
program Kita dapat bertindak tidak terduga. Untuk memahami mengapa, pertimbangkan
apa yang terjadi bila Kita mendefinisikan sebuah variabel. Cukup banyak ruang disisihkan
dalam memori untuk menyimpan nilai tipe yang Kita tentukan. Misalnya dengan definisi

int botol;

Blok memori yang cukup besar untuk menampung bilangan bulat dicadangkan. Sudah ada
beberapa nilai dalam memori itu. Lagipula, Kita tidak mendapatkan transistor yang baru
dicetak-hanya area memori yang sebelumnya telah digunakan, penuh dengan flotsam yang
tersisa dari perhitungan sebelumnya. (Dalam hal ini, sebuah variabel berbeda dari tempat
parkir, tempat parkir kosong, tidak mengandung kendaraan, namun sebuah variabel selalu
memiliki nilai tertentu).

Jika Kita menggunakan variabel tanpa menginisialisasi, maka nilai sebelumnya akan
digunakan, menghasilkan hasil yang tidak dapat diprediksi. Misalnya, pertimbangkan
segmen program

int botol; // lupa menginisialisasi


int volume_botol = botol * 2; // hasilnya tak bias diprediksi

Tidak ada cara untuk mengetahui nilai apa yang akan dihitung. Jika Kita tidak
beruntung, nilai yang masuk akal akan muncul saat Kita menjalankan program di
rumah, dan hasil yang sama sekali berbeda akan terjadi bila program dinilai.
Contoh:
// program latihan2-2a.cpp
/*
Program ini menghitung volume (dalam liter) soda isi 6 kaleng dalam 1 pak
dan total volume enam kaleng dan botol.
*/
#include <iostream>
using namespace std;

int main()
{
int kaleng_per_pak = 6; // 1 pak isinya 6 kaleng
const double VOLUME_KALENG = 0.355; // isi 1 kaleng = 0,355 liter
double total_volume = kaleng_per_pak * VOLUME_KALENG;
cout << "PROGRAM NILAI KONSTAN\n";
cout << "======================================\n\n";
cout << "1 Pak isi 6 kaleng, volumenya = "
<< total_volume << " liter." << endl;
const double VOLUME_BOTOL = 2; // botol isi 2 liter
total_volume = total_volume + VOLUME_BOTOL;
cout << "1 Pak isi 6 kaleng dan Botol 2 liter, volume = "
<< total_volume << " liter." << endl;
cout << "\nPROGRAM isi 1 pak kaleng variabel\n";
cout << "Berapa isi 1 pak kaleng yang lain= ";
cin >> kaleng_per_pak;
total_volume = kaleng_per_pak * VOLUME_KALENG;
cout << "1 Pak isi " << kaleng_per_pak << " kaleng berisi = "
<< total_volume << " liter." << endl;
system("PAUSE");
return 0;
}

Contoh:
// program latihan2-2b.cpp
/* Program ini menghitung volume (dalam liter)
minuman soda kaleng dalam 1 pak isi 0,355 liter per kaleng dan
minuman soda dalam botol dalam 1 pak isi 2 liter per botol*/
#include <iostream>
using namespace std;

int main()
{
int kaleng_per_pak = 6; // 1 pak kaleng isi 6 botol
int botol_per_pak = 1; // 1 pak botol isi 1 botol
const double VOLUME_KALENG = 0.355;// isi 1 kaleng = 0,355 liter
const double VOLUME_BOTOL = 2; // isi 1 botol = 2 liter
double total_volume_kaleng = 0;
double total_volume_botol = 0;
double total_volume_semua = 0;
cout << "\tPROGRAM MENGHITUNG VOLUME\n";
cout << "\tMINUMAN KALENG dan BOTOL\n";
cout << "\t==========================\n\n";
// input jumlah kaleng dalam 1 pak
cout << "\tBerapa Kaleng dalam 1 Dus? = " ;
cin >> kaleng_per_pak;
// input jumlah botol dalam 1 pak
cout << "\tBerapa Botol dalam 1 Dus? = ";
cin >> botol_per_pak;
// volume kaleng dalam 1 pak
total_volume_kaleng = kaleng_per_pak * VOLUME_KALENG;
total_volume_botol = botol_per_pak * VOLUME_BOTOL;
total_volume_semua = total_volume_kaleng + total_volume_botol;

cout << "\n\tVolume 1 Dus Minuman Kaleng isi " << kaleng_per_pak << " kaleng = "
<< total_volume_kaleng << " liter\n";
cout << "\tVolume 1 Dus Minuman Botol " << botol_per_pak << " botol ="
<< total_volume_botol << " liter\n";
cout << "\tVolume 1 Dus Minuman Kaleng dan 1 Dus minuman Botol = "
<< total_volume_semua << " liter\n\n";
system("PAUSE");
return 0;
}

Tipe Bilangan/numerik di C ++

Selain tipe int dan double, C++ memiliki beberapa tipe numerik lainnya. C++ memiliki dua
tipe floating-point. Tipe float menggunakan setengah dari penyimpanan tipe ganda yang kita
gunakan dalam buku ini, namun hanya bisa menyimpan 6-7 digit. Bertahun-tahun yang lalu,
ketika komputer memiliki memori jauh lebih sedikit daripada yang mereka miliki saat ini,
float adalah tipe standar untuk perhitungan floating-point, dan pemrogram akan menikmati
kemewahan "presisi ganda" hanya jika mereka memerlukan digit tambahan. Saat ini, jenis
float jarang digunakan.

Angka-angka ini disebut "floating-point" karena representasi internal mereka di komputer.


Perhatikan angka 29.600, 2.96, dan 0.0296. Mereka dapat diwakili dengan cara yang sangat
mirip: yaitu, sebagai urutan angka signifikan-296 - dan indikasi posisi titik desimal. Bila
nilainya dikalikan atau dibagi dengan 10, hanya posisi titik desimal berubah; Itu
"mengapung". Komputer menggunakan bilangan basis 2 (biner), bukan bilangan basis 10
(decimal), tapi asasnya sama.

Selain tipe int, C++ memiliki tipe integer short, long, dan long long. Untuk setiap tipe
integer, ada unsigned equivalent. Misalnya, tipe pendek biasanya memiliki range dari -32,768
sampai 32,767, sedangkan unsigned short memiliki range dari 0 sampai 65,535. Batas-batas
aneh ini adalah hasil penggunaan bilangan biner di komputer. Nilai short menggunakan 16
digit biner, yang dapat mengkodekan 2 16 = 65.536 nilai. Perlu diingat bahwa rentang tipe
integer tidak distandarisasi, dan berbeda di antara kompiler. Tabel 4 berisi nilai yang khas
untuk setiap jenis bilangan.
Tabel 2.4. Jenis-Jenis Bilangan
Jenis Range Ukuran
int –2,147,483,648 … 2,147,483,647 (sekitas 2 milyar) 4 byte
unsigned 0 … 4,294,967,295 4 byte
short –32,768 … 32,767 2 byte
unsigned short 0 … 65,535 2 byte
long long –9,223,372,036,854,775,808 … 9,223,372,036,854,775,807 8 byte
double Tipe floating-point presisi ganda, dengan kisaran sekitar ± 8 byte
10308 dan sekitar 15 digit desimal yang signifikan
float Tipe floating-point presisi tunggal, dengan kisaran sekitar ± 4 byte
1038 dan sekitar 7 digit desimal yang signifikan

Rentang numerik dan presisi

Karena angka diwakili dalam komputer dengan jumlah digit terbatas, mereka tidak dapat
mewakili bilangan bulat atau bilangan floating-point semaunya.

Tipe int memiliki jangkauan terbatas: Pada kebanyakan platform, dapat mewakili angka
hingga lebih dari dua miliar. Bagi banyak aplikasi, ini bukan masalah, tapi Kita tidak bisa
menggunakan int untuk mewakili populasi dunia.

Jika sebuah perhitungan menghasilkan nilai yang berada di luar kisaran int, hasilnya akan
meluap (over flow). Tidak ada kesalahan ditampilkan. Sebagai gantinya, hasilnya terpotong
agar sesuai dengan int, menghasilkan nilai yang tidak berguna. Sebagai contoh,

int satu_milyar = 1000000000;


cout << 3 * satu_milyar << endl;

Menampilkan -1294967296.
Dalam situasi seperti ini, Kita bisa beralih ke nilai ganda. Namun, baca Common Error
untuk informasi lebih lanjut tentang masalah terkait: kesalahan putaran (roundoff errors).

2.2. Aritmatika

Pada bagian berikut, Kita akan belajar bagaimana melakukan perhitungan aritmatika dan
matematis di C++.

2.2.1. Operator Aritmatika

C++ mendukung empat operasi aritmatika dasar yang sama dengan kalkulator-penambahan
(+), pengurangan (-), perkalian (*), dan pembagian (/) - namun menggunakan simbol yang
berbeda untuk perkalian dan pembagian.

Gambar 2.6. Kalkulator

Kita harus menulis huruf a * b untuk menunjukkan perkalian. Tidak seperti matematika, Kita
tidak bisa menulis huruf a b, a . b atau a × b. Demikian pula, pembagian selalu ditunjukkan
dengan /, tidak pernah ada ÷ atau pecahan bar.

a+b
Contonhya menjadi (a + b) / 2
2

Tanda kurung digunakan sama seperti aljabar: untuk menunjukkan urutan sub ekspresi yang
harus dilakukan. Misalnya, dalam ungkapan (a + b) / 2, jumlah a + b dihitung terlebih dahulu,
dan kemudian jumlahnya dibagi 2.

Sebaliknya, dalam ungkapan


c=a + b / 2 c=a-b+d c=a/b*d c=a-b*d
Hanya b dibagi dengan 2, dan kemudian jumlah a dan b / 2 terbentuk. Sama seperti dalam
notasi aljabar biasa, perkalian dan pembagian memiliki prioritas yang lebih tinggi daripada
penambahan dan pengurangan. Misalnya, dalam ungkapan a + b / 2, / dilakukan lebih dulu,
meskipun operasi + terjadi lebih jauh ke kiri. Jika kedua argumen operasi aritmatika adalah
bilangan bulat, hasilnya adalah bilangan bulat. Jika satu atau kedua argumen adalah bilangan
floating-point, hasilnya adalah bilangan floating-point. Misalnya, 4 * 0.5 adalah 2.0.

Gunakan * untuk perkalian dan / untuk pembagian

2.2.2. Increment dan decrement

Mengubah sebuah variabel dengan menambahkan atau mengurangkan 1 sangat umum


sehingga ada singkatan khusus untuk itu, yaitu:
int counter=5;
counter=counter+1; counter+=1; counter++; ++counter;
counter=counter-1; counter-=1; counter--; --counter;
counter=counter+5; counter+=5;
counter=counter-3; counter-=3;
counter=counter*4; counter*=4;
counter=counter/6; counter/=6;

Operator increment ++ memberi bahasa pemrograman C++ namanya. C++ adalah


peningkatan (incremental) bahasa C secara bertahap.

Operator ++ menambahkan 1 ke variabel; -- operator mengurangi 1.

2.2.3. Pembagian Integer dan sisanya

Pembagian bekerja seperti yang Kita harapkan, selama setidaknya satu dari jumlah yang
terlibat adalah angka floating-point. Artinya, 7.0 / 4.0, 7 / 4.0, dan 7.0 / 4 semua hasil 1.75.
Namun, jika kedua bilangan itu bilangan bulat, maka hasil pembagian selalu bilangan bulat,
dan sisanya dibuang, seperti :
C=7 / 4 hasil c=1 jika jenis data C adalah bulat/integer
hasil c=1.75 jik a jenis data C adalah pecahan/float/double
Hasilnya adalah ke 1 karena 7 dibagi 4 adalah 1 dengan sisa 3 (yang dibuang).

Jika kedua argumen / bilangan bulat, sisanya akan dibuang

Ini bisa menjadi sumber kesalahan pemrograman yang tidak kentara-lihat Common Error.
Jika Kita hanya tertarik pada yang tersisa, gunakan operator %
C=7 % 4 hasil c=3 jika dan jenis data C adalah bulat/integer tidak boleh bilangan
pecahan

Adalah 3, sisa pembagian bilangan bulat 7 dengan 4. Simbol % tidak memiliki analog dalam
aljabar. Itu dipilih karena terlihat mirip dengan /, dan operasi sisanya terkait dengan
pembagian. Operator disebut modulus. (Beberapa orang menyebutnya modulo atau mod.)
Tidak ada hubungan dengan operasi persen yang Kita temukan pada beberapa kalkulator.

Operator % menghitung sisa pembagian bilangan bulat.

Berikut adalah penggunaan khusus untuk operasi bilangan bulat atau integer / dan %.
Misalkan Kita memiliki sejumlah uang dalam sebuah celengan:
int cen_dollars = 1729;

Kita ingin menentukan nilai dalam dolar dan sen. Kita mendapatkan dolar melalui pembagian
bilangan bulat dengan 100.
int dollars = cen_dolars / 100; // mengatur dollar ke 17

Bagian integer membuang sisanya. Untuk mendapatkan sisanya, gunakan operator % :


int cents = cen_dollars % 100; // mengatur cents to 29

Penggunaan umum lainnya dari operator % adalah untuk memeriksa apakah ada bilangan
yang genap atau ganjil. Jika angka n genap, maka n % 2 adalah nol.
Gambar 2.7. Pembagian bilangan bulat dan operator % menghasilkan nilai
dolar dan sen dari celengan ayam yang penuh dengan uang ukuran sen.

Contoh:
// program latihan2-3.cpp
// program menghitung dolar dan sen
#include <iostream>
using namespace std;
int main()
{
// deklarasi variabel
int cen_dollars = 1729;
int dollars = 0;
int cents = 0;
cout << "PROGRAM MENGHITUNG DOLLAR DAN CENT\n";
cout << "==================================\n";
dollars = cen_dollars / 100; // mengatur dollar ke 17
cents = cen_dollars % 100; // mengatur cents to 29

cout << "1729 cent dollar adalah : " << endl;


cout << dollars << " dollar " << cents <<" cent" << endl;
system("PAUSE");
return 0;
}

Untuk input yang bervariasi programnya adalah seperti :

Contoh:
// program latihan2-3a.cpp
// program menghitung dolar dan sen
#include <iostream>
using namespace std;
int main()
{
// definisi variabel
int cen_dollars = 1729;
int dollars = 0;
int cents = 0;
cout << "PROGRAM MENGHITUNG DOLLAR DAN CENT\n";
cout << "==================================\n\n";
cout << "Input dollar dalam cen : ";
cin >> cen_dollars;
dollars = cen_dollars / 100; // mengatur ke dollar
cents = cen_dollars % 100; // mengatur ke cent
cout << "\n";
cout << cen_dollars << " cen dollar adalah : " << endl << endl;
cout << dollars << " dollar " << cents <<" cent" ""<< endl;
system("PAUSE");
return 0;
}

2.2.4. Mengubah Bilangan Floating Point ke Bilangan Bulat


Bila nilai floating-point diberikan ke variabel integer, bagian pecahannya akan
dibuang:
double price = 2.55;
int dollars = price; // mengatur dollar ke 2

Membuang bagian pecahan tidak selalu sesuai keinginan. Seringkali, Kita ingin
membulatkan ke bilangan bulat terdekat. Untuk membulatkan nilai floating-point positif ke
bilangan bulat terdekat, tambahkan 0,5 dan kemudian konversikan ke bilangan bulat:
int dollars = price + 0.5; // bulatkan ke bilangan bulat terdekat

Dalam contoh diatas, menambahkan 0,5 mengubah semua nilai di atas 2,5 menjadi
nilai di atas 3. Secara khusus, 2.55 diubah menjadi 3.05, yang kemudian dipotong menjadi 3.
(Untuk nilai floating-point negatif, Kita mengurangi 0,5.)

Karena pemotongan adalah penyebab potensial untuk kesalahan, compiler dapat


mengeluarkan peringatan bahwa menetapkan nilai floating-point ke variabel bilangan bulat
tidak aman. Lihat Topik Khusus 2.3 di halaman 46 tentang bagaimana menghindari
peringatan ini.

Menempatkan variabel floating point ke integer akan membuang bagian


pecahannya.
Contoh:
// // program latihan2-4.cpp
// program koversi bilangan pecahan ke bilangan bulat
#include <iostream>
using namespace std;
int main()
{
// deklarasi variabel
double harga = 2.55;
int dollars = 0;

dollars = harga; // mengatur dollar ke 2

cout << "Bilangan Pecahan 2,55 bilangan bulatnya adalah : " << endl;
cout << dollars << endl;
system("PAUSE");
return 0;
}

Contoh:
// program latihan2-5.cpp
// program koversi bilangan pecahan ke bilangan bulat
#include <iostream>
using namespace std;
int main()
{
// deklarasi variabel
double harga = 2.55;
int dollars = 0;

dollars = harga + 0.5; // mengatur dollar ke 2

cout << "Bilangan Pecahan 2,55 bilangan bulatnya adalah : " << endl << endl;
cout << dollars << endl;
system("PAUSE");
return 0;
}

2.5.5. Pangkat (Powers) dan Akar (Roots)


Pada C++, tidak ada simbol untuk pangkat (powers) dan akar (roots). Untuk
menghitungnya, Kita harus memanggil fungsi. Untuk mengambil akar kuadrat bilangan, Kita
menggunakan fungsi sqrt. Untuk contoh, √ x ditulis sebagai sqrt (x). Untuk menghitung xn,
Kita menulis pow(x,n).
c=a3 c=a*a*a
c=a2.5 d=cn
Gambar 2.8.

Library C++ mendefinisikan banyak fungsi matematika seperti sqrt (akar


kuadrat) dan pow (pangkat).

Untuk menggunakan fungsi sqrt dan pow, Kita harus menempatkan baris #include <cmath>
di bagian atas file program Kita. File header <cmath> adalah header C++ standar yang
tersedia dengan semua sistem C++, seperti <iostream>.

Seperti yang dapat Kita lihat, efek operasi /, sqrt, dan pow adalah untuk meratakan istilah
matematika. Dalam aljabar, Kita menggunakan pecahan, eksponen, dan akar untuk mengatur
ekspresi dalam bentuk dua dimensi yang ringkas. Di C++, Kita harus menulis semua ekspresi
dalam susunan linier. Misalnya, ekspresi matematis:

( )
n
r
b x 1+
100

Menjadi:
b * pow(1 + r / 100, n)

Gambar 2 menunjukkan bagaimana menganalisis ekspresi/persamaan semacam itu.


Tabel 2.5. Persamaan Aritmatika
Persamaan Persamaan C++ Keterangan
matematika
( x+ y ) (x + y) / 2 Tanda kurung wajib diisi;
2 y
x + y / 2 komputer menghitung x +
2
xy x*y/2 Tanda kurung tidak diperlukan;
2 Operator dengan prioritas yang sama
dievaluasi dari kiri ke kanan.

( )
n
r b*pow(1 + r / 100, n) Ingatlah untuk menambahkan
b x 1+ #include <cmath> ke bagian atas
100
program Kita.
√ a2 +b 2 sqrt( a * a + b * b) a * a lebih sederhana dari pow (a, 2).
sqrt(pow(a,2)+pow(b,2))
√ an +b m sqrt(pow(a,n)+pow(b,m))
i+ j+k (i + j + k) / 3.0 Jika i, j, dan k adalah bilangan bulat,
3 dengan menggunakan penyebut dari
3,0 memaksa pembagian bilangan
pecahan atau floating-point.

Contoh: menghitung nilai y=x5


// program latihan2-6.cpp
// program menghitung pangkat
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// mendefinisikan variabel
double x=0, y=0, y1=0;
cout << " 5”<< endl;
cout << "Menghitung x" << endl;
cout << "\nMasukkan Nilai x : " ;
cin >> x;
// rumus x pangkat 5
y = pow(x,5);
// atau dengan cara berikut:
y1 = x*x*x*x*x;
cout << "" << endl;
cout << " 5" << endl;
cout << "Pangkat y=x adalah : " << y << endl;
cout << " 5" << endl;
cout << "Pangkat y1=x adalah : " << y1 << endl;
system("PAUSE");
return 0;
}
Contoh: menghitung nilai z=√ x 2+ y 2
// program latihan2-7.cpp
// program menghitung pangkat
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// deklarasi variabel
double x = 0, y = 0, z = 0, z1=0;
cout << "Menghitung z= \xFB x^2 + y^2" << endl;
cout << "Masukkan Nilai x : " ;
cin >> x;
cout << "Masukkan Nilai y : " ;
cin >> y;
//rumus z=akar x kuadrat + y kuadrat
z = sqrt(x*x + y*y) ;
//atau dengan cara sbb:
z1=sqrt(pow(x,2)+pow(y,2));
cout << "" << endl;
cout << "Nilai z= \xFB x^2 + y^2 = " << z << endl;
cout << "Nilai z1= \xFB x^2 + y^2 = " << z1 << endl;
system("PAUSE");
return 0;
}

Contoh: menghitung nilai z=√ x a + y b


// program latihan2-7b.cpp
// program menghitung pangkat
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// deklarasi variabel
double x = 0, y = 0, a = 0, b = 0, z = 0;
cout << "Menghitung z= \xFB x^a + y^b" << endl;
cout << "Masukkan Nilai x : " ;
cin >> x;
cout << "Masukkan Nilai a : " ;
cin >> a;
cout << "Masukkan Nilai y : " ;
cin >> y;
cout << "Masukkan Nilai b : " ;
cin >> b;
//rumus z=akar (x pangkat a + y pangkat b)
z=sqrt(pow(x,a)+pow(y,b));
cout << "" << endl;
cout << "Nilai z= \xFB x^a + y^a = " << z << endl;
system("PAUSE");
return 0;
}

Tabel 2.6. Fungsi matematika yang lain


Fungsi Keterangan
sin(x) cin dari x ( x dalam radian)
cos(x) cos dari x ( x dalam radian)
tan(x) tan dari x ( x dalam radian)
log10(x) (log decimal) log10 (x), x . 0
abs(x) Nilai absolut |x|

Tabel 2.6 menunjukkan fungsi tambahan yang dideklarasikan di header <cmath>. Input dan
output adalah bilangan floating-point.

Contoh: menghitung nilai y=cos(2x), input dalam sudut


// program latihan2-8.cpp
// program trigonometri
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// deklarasi/definisi variabel
double x = 0, y = 0, d = 0;

cout << "Program Trigonometri" << endl;


cout << "Menghitung y=5cos(2x)" << endl;
cout << "Masukkan d (dalam sudut) : " ;
cin >> d; //phi = 3.14285714285714
x=d/180*3.14;// konversi sudut ke radian
y = cos(2*x);

cout << "" << endl;


cout << "sudut : " << d << " adalah " << x << " radian" << endl;
cout << "y = 5*cos (2x) adalah " << y << endl;
system("PAUSE");
return 0;
}

Contoh: menghitung nilai y=cos(2x), input dalam radian


// program latihan2-8a.cpp
// program trigonometri
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
// deklarasi/definisi variabel
double x = 0, y = 0, d = 0;

cout << "Program Trigonometri" << endl;


cout << "Menghitung y=cos(2x)" << endl;
cout << "Masukkan x (dalam radian) : " ;
cin >> x;
y = cos(2*x);
cout << "" << endl;
cout << "y = cos (2x) adalah " << y << endl;
system("PAUSE");
return 0;
}

2.3. Input dan Output


2.3.1. Input
Pada bagian ini, Kita akan melihat bagaimana menempatkan input pengguna ke dalam
variabel. Lihat misalnya program volume1.cpp di halaman 36. Alih-alih mengasumsikan
bahwa harga untuk botol dua liter dan enam kaleng 1 pack itu identik, kita dapat meminta
pengguna program untuk harganya.

Saat sebuah program meminta input pengguna, pertama-tama harus mencetak pesan yang
memberitahukan pengguna yang akan diharapkan. Pesan seperti itu disebut prompt.
cout << "Masukkan jumlah botol : "; // tampilan prompt

Jangan menambahkan endl setelah prompt. Kita ingin masukan muncul setelah titik dua,
bukan pada baris berikut.

Selanjutnya, program mengeluarkan perintah untuk membaca input. Objek cin membaca
input dari jendela konsol. Kita menggunakan operator >> (kadang-kadang disebut operator
ekstraksi) untuk menempatkan nilai input ke variabel, seperti ini:
int botol;
cin >> botol;

Saat program mengeksekusi pernyataan input, program menunggu pengguna/user untuk


memasukkan input. Pengguna juga perlu menekan tombol Enter sehingga program menerima
input. Setelah pengguna memasukkan input, bilangan tersebut dimasukkan ke dalam variabel
botol, dan program berlanjut.
Perhatikan bahwa di segmen kode ini, tidak perlu menginisialisasi variabel botol karena
sudah diisi oleh pernyataan berikutnya. Sebagai aturan praktis, Kita harus menginisialisasi
variabel saat Kita mendeklarasikannya kecuali jika diisi dengan pernyataan input yang
mengikutinya segera.

Gunakan operator >> untuk membaca nilai dan meletakkan di variabel

Kita dapat membaca lebih dari satu nilai dalam satu pernyataan masukan:
cout << "Masukkan jumlah botol dan kaleng: ";
cin >> botol >> kaleng;

Pengguna dapat menyediakan kedua input pada baris yang sama:


Masukkan jumlah botol dan kaleng: 2 6

Sebagai alternatif, pengguna dapat menekan tombol Enter setelah setiap masukan:

Masukkan jumlah botol dan kaleng: 2


6

syntax 2.3 Input statement

2.3.2. Format Output

Saat Kita mencetak hasil perhitungan, Kita sering menginginkan kontrol atas penampilannya.
Sebagai contoh, ketika Kita mencetak sejumlah dolar dan sen, Kita biasanya
menginginkannya dibulatkan menjadi dua angka penting. Artinya, Kita ingin output terlihat
seperti
Harga per ons: 0,04
dari pada
Harga per ons: 0.0409722

Kita menggunakan manipulator untuk menentukan bagaimana nilai harus


diformat.

Perintah berikut menginstruksikan cout untuk menggunakan dua digit setelah titik desimal
untuk semua bilangan floating-point:
cout << fixed << setprecision (2);

Perintah ini tidak menghasilkan output apapun; Itu hanya memanipulasi cout sehingga akan
mengubah format output. Nilai tetap dan setprecision disebut manipulator. Kita akan
membahas manipulator secara rinci di Bab 8. Untuk saat ini, ingatlah untuk menyertakan
pernyataan yang diberikan di atas bila Kita menginginkan nilai mata uang ditampilkan
dengan rapi.

Untuk menggunakan manipulator, Kita harus menyertakan header <iomanip> dalam


program Kita:
#include <iomanip>

Kita dapat menggabungkan manipulator dan nilai yang akan ditampilkan ke dalam satu
pernyataan.
cout << fixed << setprecision (2)
<< "Harga per ons:"
<< Harga_per_ons << endl;

Ada manipulator lain yang terkadang berguna. Bila Kita menampilkan beberapa baris data,
Kita sekalian ingin kolomnya berbaris.
Kita menggunakan manipulator setw untuk mengatur lebar bidang output berikutnya. Lebar
adalah jumlah total karakter yang digunakan untuk menampilkan nilai, termasuk angka, titik
desimal, dan spasi. Mengontrol lebar adalah penting bila Kita ingin kolom angka berbaris.

Misalnya, jika Kita ingin bilangan yang akan dicetak dalam kolom berukuran delapan
karakter, Kita menggunakannya:

cout << setw(8) << harga_per_ons;

Perintah ini mencetak nilai harga_per_ons di bidang dengan lebar 8, misalnya

(Di mana masing-masing mewakili spasi).

Ada perbedaan yang mencolok antara manipulator setprecision dan setw. Begitu Kita
menetapkan presisi, nilai itu digunakan untuk semua bilangan floating-point. Tapi lebar
hanya mempengaruhi nilai berikutnya. Nilai selanjutnya diformat tanpa spasi tambahan.

Program contoh berikut akan meminta harga pack isi 6 kaleng dan volume masing-masing
kaleng, kemudian mencetak harga per ons. Program ini bekerja apa yang baru saja Kita
pelajari tentang membaca input dan format output.
Contoh: mengatur jumlah angka dibelakang titik desimal
// program latihan2-9.cpp
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
// baca harga per pack

cout << "Inputkan harga untuk dus isi 6 ($) : ";


double harga_per_dus;
cin >> harga_per_dus;

// baca volume kaleng


cout << "Inputkan volume setiap kaleng (dalam ons): ";
double volume_kaleng;
cin >> volume_kaleng;

// hitung volume pack


const double KALENG_PER_DUS = 6;
double volume_dus = volume_kaleng * KALENG_PER_DUS;

// hitung dan cetak harga per ons


double harga_per_ons = harga_per_dus / volume_dus;

cout << "Harga per ons : " << harga_per_ons << endl;
cout << fixed << setprecision(2);
cout << "Harga per ons : " << harga_per_ons << endl;
system("PAUSE");
return 0;
}

Jalan program :
Inputkan harga untuk dus isi 6 : 2.95
Inputkan volume setiap kaleng (dalam ons) : 12
Harga per ons : 0.0409722
Harga per ons : 0.04

Tabel 2.7. Format Output


Pernyataan output output Keterangan
cout << 12.345678; 12.3457 Secara default, bilangan dicetak dengan 6
digit signifikan.
cout << fixed 12.30 Gunakan manipulator fixed dan setprecision
<< setprecision(2) untuk mengontrol jumlah digit setelah titik
<< 12.3; desimal.
cout << ":" << setw(6) : 12 Empat spasi dicetak sebelum bilangan
<< 12; tersebut, dengan lebar total 6 karakter.
cout << ":" << setw(2) :123 Jika lebar tidak mencukupi, itu diabaikan
<< 123;
cout << setw(6) :12.3 Lebar hanya mengacu pada item berikutnya.
<< ":" << 12; Ini, didahului oleh lima spasi.

2.5. String

Banyak program memproses teks, bukan angka. Teks terdiri dari karakter: huruf, angka,
tanda baca, spasi, dan sebagainya. String adalah urutan karakter. Misalnya, string "Harry"
adalah urutan lima karakter.

String adalah urutan karakter.


2.5.1. Jenis String

Kita dapat menentukan variabel yang menyimpan string.


String name = "Harry";

Tipe string adalah bagian dari standar C++. Untuk menggunakannya, cukup sertakan file
header,
<string>:
#include <string>

Kita membedakan antara variabel string (seperti nama variabel yang didefinisikan di atas)
dan string literal (urutan karakter char terlampir dalam tanda petik, seperti "Harry"). String
yang tersimpan dalam variabel string bisa berubah. String literal menunjukkan string tertentu,
sama seperti angka literal (seperti angka 2) menunjukkan angka tertentu.

Tidak seperti variabel bilangan, variabel string dijamin akan diinisialisasi bahkan jika Kita
tidak memberikan nilai awal. Secara default, variabel string disetel ke string kosong: string
yang tidak mengandung karakter. String literal kosong ditulis sebagai "". Definisi :
string response;

Memiliki efek yang sama dengan:


string response = "";

2.5.2. Rangkaian
Dengan dua string, seperti "Harry" dan "Morgan", kita bisa menggabungkannya dengan
satu string panjang. Hasilnya terdiri dari semua karakter pada string pertama, diikuti oleh
semua karakter pada string kedua. Di C++, kita menggunakan operator + untuk
menggabungkan dua string. Sebagai contoh:
String fname = "Harry";
String lname = "Morgan";
String name = fname + lname;
Hasil dalam string:
"HarryMorgan"

Bagaimana jika kita ingin nama depan dan belakang dipisahkan oleh sebuah ruang? Tidak
masalah:
String name = fname + "" + lname;

Pernyataan ini menggabungkan tiga string: fname, string literal "", dan lname. Hasilnya
adalah:
"Harry Morgan"
Gunakan + operator untuk menggabungkan string; Artinya, untuk
mengumpulkan mereka untuk menghasilkan string yang lebih
panjang.

2.5.3. Input String

Kita bisa membaca string dari konsol:


cout << "Masukkan nama kita : ";

string nama;
cin >> nama;

Bila sebuah string dibaca dengan operator >>, hanya satu kata yang dimasukkan ke dalam
variabel string. Misalnya, misalkan tipe pengguna:
Harry Morgan

Sebagai respon terhadap prompt. Input ini terdiri dari dua kata. Setelah panggilan cin >>
nama, string "Harry" ditempatkan ke dalam variabel nama. Gunakan pernyataan input lain
untuk membaca kata kedua.

2.5.4. Fungsi-Fungsi String


Jumlah karakter dalam sebuah string disebut panjang string. Misalnya, panjang "Harry"
adalah 5. Kita bisa menghitung panjang string dengan panjang fungsinya. Berbeda dengan
fungsi sqrt atau pow, fungsi panjang dipanggil dengan notasi titik (dot notation). Artinya,
Kita menulis string yang panjangnya Kita inginkan, maka sebuah periode, maka nama fungsi
tersebut, diikuti dengan tanda kurung:
int n = name.length();

Fungsi panjang panjang menghasilkan jumlah karakter dalam sebuah string.

Banyak fungsi C++ mengharuskan Kita menggunakan notasi titik ini, dan Kita harus
menghafal (atau melihat ke atas) mana yang melakukan dan mana yang tidak. Fungsi ini
disebut fungsi anggota (member function). Kita mengatakan bahwa panjang fungsi anggota
dipanggil pada nama variabel. Setelah Kita memiliki sebuah string, Kita dapat mengekstrak
substring dengan menggunakan fungsi anggota substr. memanggil fungsi anggota:
s.substr(start, length)

Fungsi anggota dipanggil menggunakan notasi titik.

Mengembalikan string yang dibuat dari karakter di string s, dimulai dari awal karakter, dan
berisi panjang karakter. Berikut adalah contohnya:
string greeting = "Hello, World!";
string sub = greeting.substr(0, 5);
// sub is "Hello"

Gunakan fungsi anggota substr untuk mengekstrak substring


sebuah string.

Operasi substr membentuk sebuah string yang terdiri dari lima karakter yang diambil dari
string greeting. Memang, "Hello" adalah string panjangnya 5 yang terdapat di dalam
greeting. Aspek yang ganjil dari operasi substr adalah posisi awal. Posisi awal 0 berarti
"mulai dari awal string". Posisi pertama dalam sebuah string diberi label 0, yang kedua 1,
dan seterusnya. Sebagai contoh, berikut adalah nomor posisi di string greeting:
Nomor posisi karakter terakhir (12) selalu satu kurang dari panjang string.

Mari cari tahu cara mengekstrak substring "World". Menghitung karakter mulai dari 0, Bukan
1. Kita menemukan bahwa W, karakter ke 8, memiliki nomor posisi 7. String yang Kita
inginkan adalah 5 karakter. Oleh karena itu, perintah substring yang tepat adalah:

string w = greeting.substr(7, 5);

Jika Kita menghilangkan panjangnya, Kita mendapatkan semua karakter dari posisi yang
diberikan sampai akhir string. Sebagai contoh:
greeting.substr(7)

Adalah string "World!" (Termasuk tanda seru).

Berikut adalah program sederhana yang menempatkan konsep ini untuk bekerja. Program
meminta nama Kita dan nama Kita yang penting lainnya. Ini kemudian mencetak inisial Kita.

Operasi first.substr (0, 1) membuat sebuah string yang terdiri dari satu karakter, diambil dari
awal mula. Program melakukan hal yang sama untuk yang kedua. Kemudian menggabungkan
string satu karakter yang dihasilkan dengan string literal "&" untuk mendapatkan string yang
panjangnya 3, string inisial. (Lihat gambar. 2.8.)

Gambar. 2.8. Membangun inisial string


Contoh:
// program latihan2-10.cpp
// Program string
#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Inputkan nama pertama kita : ";
string first;
cin >> first;
cout << "Inputkan nama kedua yang lain : ";
string second;
cin >> second;
string initials = first.substr(0, 1) + " & " + second.substr(0, 1);
cout << first << " " << second << endl;
cout << “Inisialnya adalah : ” << initials << endl;
system("PAUSE");
return 0;
}

Jalan program :

Inputkan nama pertama kita : Rudolfo


Inputkan nama pertama kita yang lain : Sally
R&S

Tabel 2.8. Operasi String


Pernyataan Hasil Keterangan
string str = "C"; str diatur ke "C ++" Bila diterapkan pada string,
str = str + "++"; + menunjukkan Rangkaian.
string str = "C" + "++"; SALAH SALAH: Kita tidak dapat
menggabungkan dua string
literal.
cout << "Enter name: "; name berisi “Harry” Operator >> menempatkan
cin >> name; kata berikutnya ke dalam
(User input: Harry Morgan) variabel string.
cout << "Enter name: "; name berisi Gunakan beberapa operator
cin >> name >> last_name; "Harry", last_name >> untuk membaca lebih
(User input: Harry Morgan) berisi "Morgan" dari satu kata.
string greeting = "H & S"; n di set ke 5 Setiap spasi dihitung satu
int n = greeting.length(); karakter.
string str = "Sally"; str2 di set ke "all" Ekstrak substring dengan
string str2 = str.substr(1, 3); panjang 3 dimulai dari posisi
1. (Posisi awal adalah 0.)
string str = "Sally"; str2 di set ke "ally" Jika Kita menghilangkan
string str2 = str.substr(1); panjang, semua karakter dari
posisi awal mulai sampai
akhir disertakan.
string a = str.substr(0, 1); a di set ke huruf awal di str Ekstrak substring dengan
panjang 1 mulai dari posisi
0.
string b = b di set ke huruf terakhir di Huruf terakhir memiliki
str posisi str.length posisi () - 1.
str.substr(str.length() - 1);
Kita tidak perlu menentukan
panjangnya

Anda mungkin juga menyukai