Bab 2
Bab 2
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.
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
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).
Gambar 2.2. Seperti variabel dalam program komputer, tempat parkir memiliki
pengenal dan isi.
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++.)
botol =1; Hati-hati: Jenisnya hilang Pernyataan ini bukan definisi tapi
penugasan nilai baru ke variabel yang ada
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.
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 ++.
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)
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.
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.
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
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:
Ini adalah gaya pemrograman yang baik untuk menggunakan konstanta yang dinamai dalam
program Kita untuk menjelaskan makna nilai numerik. Misalnya, bandingkan pernyataannya
2.1.6. Komentar
Seiring program Kita menjadi lebih kompleks, Kita harus menambahkan komentar,
penjelasan untuk pembaca kode Kita. Berikut adalah contohnya:
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.
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;
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 << "1 Pak isi 6 kaleng dan Botol 2 liter, volumenya = "
<< total_volume << " liter." << endl;
system("PAUSE");
return 0;
}
Jalankan program:
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.
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
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.
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
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,
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++.
C++ mendukung empat operasi aritmatika dasar yang sama dengan kalkulator-penambahan
(+), pengurangan (-), perkalian (*), dan pembagian (/) - namun menggunakan simbol yang
berbeda untuk perkalian dan pembagian.
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.
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).
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.
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
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
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;
}
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.)
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;
cout << "Bilangan Pecahan 2,55 bilangan bulatnya adalah : " << endl << endl;
cout << dollars << endl;
system("PAUSE");
return 0;
}
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)
( )
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.
Tabel 2.6 menunjukkan fungsi tambahan yang dideklarasikan di header <cmath>. Input dan
output adalah bilangan floating-point.
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;
Kita dapat membaca lebih dari satu nilai dalam satu pernyataan masukan:
cout << "Masukkan jumlah botol dan kaleng: ";
cin >> botol >> kaleng;
Sebagai alternatif, pengguna dapat menekan tombol Enter setelah setiap masukan:
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
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.
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:
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 << "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
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.
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;
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.
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.
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)
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"
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:
Jika Kita menghilangkan panjangnya, Kita mendapatkan semua karakter dari posisi yang
diberikan sampai akhir string. Sebagai contoh:
greeting.substr(7)
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.)
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 :