1.1. Pendahuluan
Seperti kita ketahui, komputer dapat melakukan banyak hal untuk membantu
kehidupan manusia. Sebenarnya kemampuan komputer tersebut tergantung pada
perintah yang diberikan ke komputer dan komputer hanya melakukan apa yang
diperintahkan. Perintah ini disebut sebagai program komputer yang ditulis dalam
suatu bahasa pemrograman. Ada banyak bahasa pemrograman yang sudah diciptakan
orang, seperti BASIC, Pascal, C, C++, Fortran, Java, dan sebagainya. Dalam
praktikum ini, akan digunakan bahasa pemrograman C++.
Bahasa pemrograman C++ diciptakan oleh Bjarne Stroustrup dari AT & T Bell
Labs, Murray Hill New Jersey USA mulai tahun 1979. Bahasa ini merupakan
pengembangan dari bahasa C yang mempunyai kemampuan untuk menggabungkan
program C dengan bahasa mesin. Bahasa C++ mempunyai semua fitur yang dimiliki
oleh bahasa C, ditambah kemampuan untuk membuat program yang berorientasi
objek. Pada mulanya bahasa ini dinamakan “C with classes”, baru pada tahun 1983
bahasa ini dinamakan C++.
Program C++ adalah program yang berisi instruksi (statements) dan ekspresi
yang mengikuti kaidah bahasa pemrograman C++. Program ini dapat ditulis
menggunakan editor teks seperti notepad ataupun menggunakan editor bawaan dari
kompiler. Program C++ ditulis dengan nama file ekstensi .CPP. Agar program ini
dapat dijalankan, maka harus dikompilasi terlebih dulu dengan menggunakan
kompiler C++. Saat ini banyak kompiler C++ yang beredar di pasaran dengan
beberapa variasi C++, seperti Turbo C++ dan Borland C++ yang dikembangkan oleh
Borland International, Visual C++ yang dikembangkan oleh Microsoft Corporation
dan juga Dev C++ yang dapat diunduh gratis. Kompiler ini ditulis dengan bahasa
pemrograman Delphi. Meskipun demikian, program C++ sudah distandarisasi oleh
ANSI sehingga suatu program C++ dapat dijalankan oleh kompiler C++ apapun. Pada
praktikum ini dianjurkan menggunakan kompiler Dev C++ yang lebih mudah
digunakan dan tidak membutuhkan banyak memory.
Untuk menulis program C++, gunakan editor yang disediakan oleh Dev C++.
Setelah dipanggil dengan mengklik DevC++, maka program akan menampilkan editor
C++ seperti dapat dilihat pada gambar 1.2 di bawah ini.
Pada menu bar, pilih File lalu New - Source File. Lalu ketikkan contoh program
C++ pada gambar 1.3 di bawah ini.
//Program TEST
#include <iostream>
using namespace std;
int main()
{
cout<<" Saya baru belajar C++"<<endl;
cout<<" Semoga Sukses"<<endl;
}
Gambar 1.3 Program C++ yang pertama
Penjelasan dari program di atas mulai dari baris pertama adalah sebagai berikut :
1. //Program TEST : baris ini dinamakan komentar, diawali dengan sepasang tanda
garis miring (//), biasanya berisi penjelasan tentang program.
2. #include <iostream> : merupakan suatu bentuk instruksi yang memerintahkan
preprosesor untuk menyisipkan (include) file lain (dalam contoh ini, file
iostream) pada saat program di-linker. File ini perlu disertakan karena ada
perintah cout dalam kode program. Pada umumnya file yang dapat di-include
dibuat dengan ekstensi .h dan harus disisipkan di awal file, karena itu disebut file
judul (header file). File ini mengandung berbagai deklarasi, fungsi, dan lain-lain.
3. using namespace std; : menunjukkan bahwa program akan mengakses entitas
yang merupakan bagian dari namespace std karena semua nama yang digunakan
oleh file iostream adalah bagian dari namespace std.
4. tanda ; (titik koma) : tanda ini digunakan untuk mengakhiri sebuah instruksi pada
program C++, dalam hal ini instruksi using namespace std.
5. int main( ) : merupakan awal dari fungsi yang menjadi titik awal eksekusi
program C++. Setiap program C++ harus mempunyai fungsi main() ini. Kata int
menunjukkan bahwa fungsi menghasilkan nilai bertipe integer. Untuk fungsi
main, tipe data ini tidak ada pengaruhnya.
6. { : kurung buka, merupakan tanda untuk memulai kode program dalam fungsi
main. Semua kode yang menjadi anggota fungsi harus berada di dalam sepasang
tanda kurung ini.
7. cout << “Saya baru belajar C++” : cout adalah suatu fungsi yang digunakan
untuk menampilkan suatu keluaran ke layar monitor (console out). Simbol <<
adalah operator stream insertion sehingga tulisan Saya baru belajar Visual C++
yang berada di antara sepasang tanda petik, ditampilkan ke layar.
8. << endl; : menunjukkan baris telah berakhir (end line), sehingga kursor akan
pindah ke baris berikutnya.
9. cout <<”Semoga sukses” << endl; : untuk menampilkan tulisan Semoga sukses,
lalu kursor akan pindah ke baris berikutnya.
10. } : kurung tutup menandakan akhir dari program dalam fungsi main(). Karena
fungsi main () merupakan fungsi satu-satunya, maka tanda ini juga menunjukkan
akhir dari program.
1.2.2. Debugging
Pada umumnya ada 2 jenis kesalahan yang sering ditemukan dalam penulisan
program, yaitu:
1. Kesalahan sintaks (syntax error) seperti salah mengetik perintah, tanda kurung
tidak berpasangan, kurang tanda baca dan sejenisnya. Kesalahan ini biasa ditemui
pada proses compile. Compiler akan memberitahu letak terjadinya kesalahan
sintaks dalam program, dan programmer harus memperbaikinya. Proses compile
dan linker hanya dapat diselesaikan jika program sudah tidak terdapat kesalahan
sintaks.
2. Kesalahan ketika program dieksekusi (runtime error) yaitu hasil dari program
tidak sesuai dengan yang diharapkan. Dalam hal ini, programmer harus membaca
statement program dengan teliti untuk menemukan letak kesalahan.
int main( )
{
pernyataan;
....................;
pernyataan;
}
Bentuk program di atas adalah bentuk program yang paling sederhana, karena
hanya terdiri dari satu blok fungsi yaitu fungsi main ( ). Pada umumnya program C++
merupakan kumpulan fungsi-fungsi dan salah satu dari fungsi tersebut harus bernama
main ( ). Badan fungsi adalah deretan instruksi yang ditulis di antara sepasang tanda
kurung {....}.
Penulisan cara pertama memiliki arti bahwa file header yang akan disertakan
berada pada direktori default (default directory), sedangkan penulisan cara kedua, file
header yang akan disertakan berada pada direktori yang bernama PATH. Pada contoh
program di atas (lihat gambar 1.3), file header iostream perlu disertakan, karena
fungsi cout (baca : c out) yang digunakan terdapat pada file header tersebut.
1.3.3. Komentar
Komentar adalah bagian dari program yang diabaikan oleh compiler.
Komentar tidak melaksanakan aksi apapun tetapi digunakan oleh programmer untuk
menuliskan catatan, keterangan atau deskripsi tambahan mengenai kode program yang
ditulis. C++ memiliki dua cara untuk menuliskan komentar yaitu:
1. // Baris Komentar: akan mengabaikan apapun mulai dari tanda garis miring
dobel sampai akhir dari baris yang sama
2. /* Blok Komentar */ : mengabaikan apapun yang berada diantara tanda /* dan */
menyatakan bahwa karakter yang diketikkan pada keyboard akan dibaca dan disimpan
sebagai variabel nama.
Sebagai latihan lebih lanjut dengan cout dan cin, ketikkan program pada gambar 1.7
di halaman berikut.
1.6.1. Identifier
Identifier adalah nama yang dipakai untuk menyatakan variabel, konstanta
bernama, fungsi, label, objek, atau hal-hal lain yang perlu dideklarasikan atau
didefinisikan oleh program. Setiap identifier yang dibuat harus memenuhi aturan
berikut ini:
1. Terdiri dari satu atau beberapa karakter yang berupa huruf, angka, atau garis
bawah ( _ ).
2. Harus diawali oleh huruf atau garis bawah
3. Tidak boleh mengandung spasi
4. Panjang maksimal 32 karakter signifikan
5. Huruf besar dan huruf kecil dibedakan (case sensitive) sehingga identifier
HARGA, harga dan Harga adalah 3 identifier yang berbeda.
6. Tidak berupa kata kunci, fungsi atau obyek-obyek lainnya yang telah dipakai oleh
bahasa C++.
7. Harus unik, tidak ada identifier yang sama dalam satu program.
8. Tidak menggunakan reserved words atau fungsi dalam standar library
/*program ketiga.cpp
program latihan dengan cout dan cin
program untuk memasukkan, menampilkan dan menghitung angka
*/
#include <iostream.h>
using namespace std;
int main()
{
int a, b, c;
cout << "Program penjumlahan sederhana" << endl;
cout << "Jumlah dari 3 + 5 adalah : " << 8 << endl;
cout << " 9 + 6 = " << 9 + 6 << endl;
cout <<endl;
//menuliskan pesan
cout<<"Ketikkan 2 angka integer, pisahkan dengan spasi : ";
Contoh Indentifier yang benar dan salah dapat dilihat pada tabel 1.1 berikut.
Tabel 1.1 Contoh identifier yang benar dan salah
Benar Salah
Pengenal 5Data diawali dengan angka
Data1 data 1 mengandung spasi
Data_1 Data-1 mengandung karakter –
_1 d %1 mengandung karakter %
Cos menggunakan fungsi C++
Banyaknya byte dan jangkauan dari masing-masing tipe data tergantung dari jenis
komputer dan compiler yang digunakan. Secara umum dapat dilihat pada tabel 1.3
di bawah ini.
2. Tipe data terstruktur: merupakan gabungan dari beberapa tipe data sederhana,
contohnya array, struct dan lain-lain.
3. Pointer
Tabel 1.3 Banyaknya byte yang dialokasikan untuk suatu tipe data
Tipe Data Ukuran Memori Jangkauan Nilai
Char 1 byte -128 hingga + 127
Int 4 byte -2.147.438.648 hingga 2.147.438.647
Short 2 byte -32768 hingga + 32767
Long 4 byte -2.147.438.648 hingga 2.147.438.647
unsigned int 4 byte 0 – 4.294.877.295
Bool 1 byte true atau false
Float 4 byte 3.4x10-38 hingga 3.4x10+38
Double 8 byte 1.7x10-308 hingga 1.7x10+308
long double 10 byte 3.4x10-4932 hingga 1.1x10+4932
Perintah di atas berarti alokasikan 4 byte memori yang diberi nama jumlah untuk
menyimpan data integer yang bernilai 10
2. Di dalam program:
variabel = nilai_variabel;
Perintah di atas berarti, nilai 10 akan disimpan dalam lokasi memori yang bernama jumlah
dan nilai 17.5 akan disimpan dalam lokasi memori yang bernama harga_per_unit
3. Melalui keyboard dengan menggunakan fungsi cin,
Contoh: cin >> jumlah
Perintah di atas berarti nilai integer (berapapun) yang diketikkan melalui keyboard akan
disimpan dalam lokasi memori yang bernama jumlah.
Sebagai latihan untuk penggunaan konstanta dan variabel, ketikkan program pada gambar 1.8
dan gambar 1.9 berikut ini.
// Program 4: latihan karakter
#include <iostream>
using namespace std;
int main( )
{
char kar, a; // deklarasi variabel kar dan a
kar = ‘A’ // penugasan karakter ‘A’ ke variabel kar
cout << “Isi kar = “ <<kar<<’\n’; kar = 66;
cout << “Isi kar = “ <<kar<<’\n’; cout << endl; cout << endl;
cout << ” Ketikkan sebuah karakter ”<< endl;
cin >> a; cout << endl; cout << ”Karakter yang diketik : ” << a <<endl; cout <<endl;
cout << ” Ketikkan sebuah angka ”<< endl;
cin >> a; cout << endl;
cout << ”Angka yang diketik : ” << a << endl; }
int main( )
{
int bil; // deklarasi variabel bil bertipe integer
bil = 32763; // memasukkan angka 32763 ke variabel bil
cout << “Isi bil = “ <<bil<<’\n’;
bil = -66;
cout << “Isi bil = “ <<bil<<’\n’;
long jum_penduduk; // deklarasi variabel bertipe long
jum_penduduk=170123456;
cout << “Isi variabel jum_penduduk = “ <<jum_penduduk<<’\n’;
}
1.8.4. Variabel dan konstanta bertipe float, double dan long double
Tipe float, double atau long double digunakan untuk data numerik yang
berhubungan dengan pecahan. Contoh deklarasinya:
float panjang;
double phi;
long double tetapan;
Sebagai contoh :
const float PHI = 3.141592;
Berbeda dengan variabel, suatu konstanta bernama tidak dapat diubah setelah
didefinisikan. Pernyataan PHI = 3.14 tidak diperkenankan lagi di dalam program.
Contoh ekspresi:
A = 1;
B = A + 5;
C = A * B;
Operator merupakan simbol yang biasa dilibatkan dalam program untuk melakukan
sesuatu operasi atau manipulasi data. Misalnya untuk :
1. menjumlahkan dua buah nilai
2. memberikan nilai ke suatu variabel
3. membandingkan kesamaan dua buah nilai
/ Pembagian 7/2 1
+ Penjumlahan 5+4 2
- Pengurangan 5-4 2
Operand
3 + 2 - 1
Operator
Dalam penulisan ekspresi, operator aritmetika harus ditulis dengan jelas. Contoh
pemakaian operator aritmetika untuk memperoleh nilai deskriminan dari suatu
persamaan kuadrat adalah:
d = b2 – 4ac d= b * b - 4 * a * c
Contoh pengerjaan ekspresi berdasarkan urutan prioritas :
x=2+3*2 ==> hasilnya x = 8
x=2*3%2 ==> hasilnya x = 0
Penggunaan operator kombinasi ini dapat dilihat pada gambar 1.20 berikut ini.
int main()
{
int k70, k80, kfl, jual;
cout <<"Program inventori\n";
cout << endl;
cout <<"Ketikkan banyaknya kertas 70 gr mula-mula ";
cin >> k70;
cout <<"Ketikkan banyaknya kertas 80 gr mula-mula ";
cin >> k80;
cout <<"Ketikkan banyaknya kertas folio mula-mula ";
cin >> kfl; cout << endl;
cout <<"Ketikkan banyaknya kertas 70 gr yang terjual ";
cin >> jual; k70 -= jual;
cout << endl;
cout <<"Ketikkan banyaknya kertas 80 gr yang terjual ";
cin >> jual; k80 -= jual;
cout << endl;
cout <<"Ketikkan banyaknya kertas folio yang terjual ";
cin >> jual; kfl -= jual; cout << endl; cout<< endl;
cout <<"Banyaknya kertas 70 gr tersisa = " << k70 << endl;
cout <<"Banyaknya kertas 80 gr tersisa = " << k80 << endl;
cout <<"Banyaknya kertas folio tersisa = " << kfl << endl;
return 0;
}
ekspresi1?ekspresi2:ekspresi3
int main( )
{
int bil1,bil2,minim;
bil1=53; bil2=6;
minim=bil1<bil2?bil1:bil2; // jika bil1 < bil2 maka minim = bil1, selain itu, minim = bil2
cout << "Bilangan terkecil = " <<minim<<'\n';
}
Gambar 1.21 Contoh program dengan operator kondisi
Tampilan di atas kelihatan tidak teratur dan agak sulit dilihat karena angka tidak
berada dalam 1 kolom yang sama. Untuk mengatasi hal ini, dapat digunakan instruksi
yang mengatur lebar kolom agar angka dapat tampil dalam 1 kolom yang sama.
Instruksi tersebut adalah setw(n) dengan n adalah lebar kolom. Instruksi ini berada
dalam file library iomanip sehingga harus ditambahkan pada include directive. Lihat
program di gambar 1.23 yang menggunakan instruksi setw ini sehingga angka-angka
tampil dalam kolom yang sama.
// Program 9: contoh program dengan format output
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{
int bil1 = 12, bil2 = 345, bil3 = 5789,
bil4 = 234, bil5 = 45678, bil6 = 890,
bil7 = 1234, bil8 = 56, bil9 = 789;
cout << setw(8) << bil1 << setw(8) << bil2 << setw(8) << bil3 << endl;
cout <<setw(8) << bil4 << setw(8) << bil5 << setw(8) << bil6 << endl;
cout << setw(8) <<bil7 << setw(8) << bil8 << setw(8) << bil9 << endl;
}
12 345 5789
234 45678 890
1234 56 789
Instruksi setw(8) artinya adalah output akan ditulis dalam tempat yang lebarnya 8
karakter, dengan rata kanan.
Instruksi setw ini juga dapat digunakan untuk mengatur tampilan data yang bertipe
real maupun karakter, lihat program pada gambar 1.24 di halaman berikut ini.
Perhatikan perbedaan tampilan output antara output yang tidak menggunakan
instruksi setw dengan yang menggunakan instruksi setw.
Untuk data bertipe real yang mengandung titik decimal, instruksi setw tidak dapat
mengatur tampilan berdasarkan letak titik desimal sehingga tampilan output masih
terlihat tidak teratur. Khusus untuk data real, dapat digunakan instruksi
setprecision(n). Instruksi ini akan mengatur tampilan bilangan real sehingga hanya
ditampilan sebanyak n bilangan termasuk tanda titik decimal. Sebagai contoh
penggunakan instruksi setprecision(n) ini dapat dilihat pada program di gambar 1.25
di halaman berikut.
#include <iostream> // Program 10 : contoh program dengan format output
#include <iomanip>
using namespace std;
int main( )
{
char n1[10] = "ani", n2[10] = "budi", n3[10] = "charlie", n4[10] = "diana";
double bil1 = 12.3456, bil2 = 78.91, bil3 = 2.34, bil4 = 567.123;
bil3 = bil1/bil2;
bil6 = bil4 + bil5;
cout <<"Output tanpa instruksi setprecision" << endl;
cout << bil3 << endl<<endl;
cout << bil4 << endl;
cout << bil5 << endl;
cout << "-------- + " << endl;
cout << bil6 << endl << endl;
cout <<"Output dengan instruksi setprecision" << endl;
cout << setprecision(7) << bil3 << endl;
cout << setprecision(5) << bil3 << endl;
cout << setprecision(3) << bil3 << endl;
cout << setprecision(1) << bil3 << endl << endl;
cout << setprecision(4);
cout << setw(8) << bil4 << endl;
cout << setw(8) << bil5 << endl;
cout << "-------- + " << endl;
cout << setprecision(5);
cout << setw(8) << bil6 << endl << endl;
}
2. Buat program untuk menghitung luas dan keliling lingkaran dengan rumus :
keliling =PI*2*jari; luas=PI*jari*jari;
Tentukanlah nama variabel dan tipenya jika diinginkan tampilan di layar seperti
berikut:
#include <iostream.h>
using namespace std;
int one, duo, tre;
6. Apa yang ditampilkan oleh program berikut ini jika angka 6 dimasukkan sebagai
input?.
#include <iostream>
using namespace std;
int main()
{
const int per_botol = 1860;
const double rate = 0.2;
int botol, banyak;
double kom;
cout <<" Program untuk menghitung komisi dari permen yang dijual" << endl;
cout << " Banyaknya permen yang dijual = " << banyak << " buah" << endl;
kom = banyak * rate;
cout <<" Besarnya komisi = " << kom << " buah" << endl;
return 0;
7. Carilah kesalahan pada program berikut ini lalu perbaiki dan tampilkan hasilnya
7.a.
using namespace std;
int main ()
{
double number1, number2, sum;
Cout << "Ketikkan angka: ";
Cin << number1;
Cout << "Ketikkan angka lagi: ";
Cin << number2;
number1 + number2 = sum;
Cout "Jumlah dari kedua angka = " << sum
return 0;
}
7.b.
#include <iostream>;
using namespace std;
main
{
double number, half;
cout << "Ketikkan sebuah angka yang akan dibagi 2\n"
cin >> number1;
half =/ 2;
cout << “Angka mula-mula << number1 << endl << “Hasil bagi 2 = << half << endl;
return 0;
}
Untuk program nomor 8 dan seterusnya, nama variabel, tipe data, dan format untuk
input dan output ditentukan sendiri.
10. Biaya asuransi ladang pertanian terhadap bencana alam adalah 3.5 persen dari
biaya yang ditanggung per hektar dikali dengan luas tanah yang akan
diasuransikan. Buatlah algoritma untuk membaca jenis ladang, luas ladang, dan
11. Diketahui sebuah mobil dengan bensin sebanyak 20 liter dapat bergerak sejauh
240 km jika berkendaraan di dalam kota dan dan 300 km jika berkendaraan di
luar kota. Hitunglah efisiensi (km/liter) untuk masing-masing lokasi. Hitung
pula rata-rata efisiensi untuk mobil tersebut.
12. Sebuah perusahaan menerima jasa pembuatan kotak dari kayu. Modal dan
ongkos untuk membuat kotak kayu adalah Rp. 3.500,- per cm3. Tetapi
perusahaan menetapkan harga pembuatan Rp. 5.000,- per cm3. Buatlah program
untuk membaca dimensi kotak yang dipesan pelanggan (dalam cm), menghitung
biaya yang dibayar pelanggan dan untung yang didapat oleh perusahaan.
14. Buatlah program untuk mencetak slip pembayaran dari sebuah toko ritel yang
berisi nama barang, harga satuan, banyaknya barang dan total harga barang yang
harus dibayar.
15. Buatlah program untuk menghitung harga jual suatu barang jika diketahui harga
modalnya, pajak pertambahan nilai (PPN) 10%, biaya sewa toko 8%,
keuntungan 20% dan biaya lain-lain 5%.
17. Sebuah perusahaan minuman energi melakukan survey terhadap 12345 orang.
Hasilnya adalah 14% dari mereka yang disurvey membeli minuman energi
sekurangnya 1 kali perminggu. Dari mereka yang membeli minuman energi ada
62% yang menyukai rasa lemon, dan sisanya menyukai rasa jeruk. Buatlah
algoritma untuk menghitung banyaknya orang yang:
a. membeli minuman energi sekurangnya satu kali seminggu
b. menyukai rasa lemon
c. menyukai rasa jeruk