Beruflich Dokumente
Kultur Dokumente
BAB 1
PENGENALAN PROGRAM C++
Linker
Object File
ASB/AK
C++ Programming 2
b. Tipe Data
Tipe data dibagi dua, yaitu :
Tipe data dasar, dan
Tipe bentukan yang merupakan bentukan dari tipe data dasar
ASB/AK
C++ Programming 3
Keterangan :
1. char, merupakan tipe data dasar yang dipakai untuk mendeklarasikan
peubah bilangan bulat, karakter atau string.
2. int, merupakan tipe data dasar untuk menentukan jenis peubah
bilangan bulat.
3. long, merupakan tipe data dasar untuk menentukan jenis peubah
bilangan bulat.
4. float, merupakan tipe data dasar untuk menentukan jenis peubah
bilangan pecahan.
5. double, merupakan tipe data dasar untuk menentukan jenis peubah
bilangan pecahan.
6. long double, merupakan tipe data dasar untuk menentukan jenis
peubah bilangan pecahan.
2) Tipe Bentukan
Merupakan bentukan dari tipe data dasar dengan nama lain. Misal
didefinisikan sebuah peubah x bertipe int, maka peubah x tersebut dapat
menjadi sebuah tipe data baru untuk mendefinisikan nama peubah lain.
Dalam C++ untuk membentuk sebuah tipe bentukan dibutuhkan kata
kunci typedef dengan bentuk sebagai berikut :
typedef int x;
x saya;
Pada contoh di atas didefinisikan sebuah peubah x bertipe int, kemudian
peubah tersebut menjadi tipe data baru untuk mendefinisikan variabel
“saya”. Sehingga variabel “saya” secara deklarasi mempunyai tipe data
yang sama, yaitu int. ( Dibahas lebih lanjut pada bab struktur )
c. Konstanta
Merupakan sebuah penamaan yang nilainya tidak dapat diubah selama
pelaksanaan program. Sebuah kostanta dideklarasikan sebagai berikut :
const tipe_data nama_variabel = nilai;
Berbeda dengan variabel, sebuah konstanta harus diisikan nilainya
langsung pada saat pendeklarasian.
ASB/AK
C++ Programming 4
ASB/AK
C++ Programming 5
2) Fungsi main()
Program C++ memang tidak pernah lepas dari fungsi. Sebab fungsi
adalah salah satu dasar penyusun blok pada C++. Sebuah program C++
minimal mengandung sebuah fungsi, yaitu fungsi main() .
Fungsi ini menjadi awal dan akhir eksekusi program C++. Setelah
mengenal struktur program C++, sekarang kita coba untuk membuat
program sederhana pada C++ yang menampilkan pesan “Selamat
Datang”. Perhatikan contoh program dibawah ini :
//program tampil pesan Selamat Datang
#include<iostream.h>
void main( )
{
cout<<”Selamat Datang”<<endl;
}
ASB/AK
C++ Programming 6
void main( ) , merupakan fungsi main( ) yang merupakan awal dan akhir
dari pembuatan program.
Semua yang terletak di dalam tanda { } disebut blok. Tanda { pada
fungsi main (awal tubuh fungsi) menyatakan awal eksekusi program.
Sedangkan tanda } pada fungsi main( ) merupakan akhir eksekusi
program. Kata void yang mendahului main( ) dipakai untuk menyatakan
bahwa fungsi ini tidak memiliki nilai balik.
Di dalam tanda { } terkandung sejumlah unit yang disebut pernyataan
(statement). Pada contoh di atas :
cout<<”Selamat Datang”<<endl;
merupakan contoh sebuah pernyataan. Pada contoh di atas,
pernyataan tersebut digunakan untuk menampilkan tulisan yang
terletak pada sepasang tanda petik ganda. Dalam hal ini, tulisan yang
terletak pada sepasang tanda petik ganda di atas disebut konstanta
string.
Setiap pernyataan harus diakhiri dengan tanda titik koma ( ; ).
Perintah endl (end line) digunakan untuk mengakhiri baris pernyataan
dan akan berpindah baris baru dan bukan tersambung ke kanan.
Contoh : cout<<”Selamat Datang”<<endl;
cout<<”Saya suka C++”<<endl;
Hasil output dari program di atas adalah :
Selamat Datang
Saya suka C++
Berbeda bila kita membuat pernyataan string sebagai berikut :
cout<<”Selamat Datang”
<<” Saya suka C++”<<endl;
Pada tampilan hasil program akan menjadi :
Selamat Datang Saya suka C++
TUGAS 1
1. Apakah hasil tampilan dari program dibawah ini
Simpan dengan nama : tugas11.cpp
//program jumlah
#include<iostream.h>
ASB/AK
C++ Programming 7
Hasil :
BAB 2
OPERATOR
2.1. Operator
ASB/AK
C++ Programming 8
ASB/AK
C++ Programming 9
b. Operator Penugasan
ASB/AK
C++ Programming 10
ASB/AK
C++ Programming 11
ASB/AK
C++ Programming 12
cout<<” x = “<<x<<endl;
cout<<” y = “<<y<<endl;
}
Hasil :
ASB/AK
C++ Programming 13
x+=8;
cout<<” Nilai x menjadi = “<<x<<endl;
x/=2;
cout<<” Nilai x menjadi = “<<x<<endl;
}
Hasil :
ASB/AK
C++ Programming 14
int a, b, c, d, e, f;
clrscr( ) ;
a=100, b=200, z=150;
c=a==b;
d=a!=b;
e=(z>=a) && (z<=b);
cout<<” a sama dengan b : “<<c<<endl;
cout<<” a tidak sama dengan b : “<<d<<endl;
cout<<” z>=a AND z<=b : “<<e<<endl;
}
Hasil :
ASB/AK
C++ Programming 15
Hasil :
TUGAS 2
1. Apakah hasil tampilan dari program dibawah ini
Simpan dengan nama : tugas21.cpp
ASB/AK
C++ Programming 16
//program jumlah
#include<iostream.h>
#include<conio.h>
{
clrscr( ) ;
int x,y,z;
x=1;
cout<<”Nilai Awal x adalah : “<<x<<endl;
x=x<<1;
cout<<”Nilai x : “<<x<<endl;
y=x + 5;
cout<<”Nilai y : “<<y<<endl;
z=x+ ++y;
z+=x;
cout<<”Nilai z : “<<z<<endl;
}
Hasil :
…………………………………………………………………………………………
…………………………………………
b. Tanda operator && pada operator logik mempunyai arti :
…………………………………
c. Berapakah nilai untuk 100+50-10*2/2*4 = ……………………… ( buktikan
dengan membuat program tersebut ) simpan dengan nama file :
tugas22.cpp
BAB 3
TEKNIK INPUT OUTPUT
ASB/AK
C++ Programming 17
3.1. cout
Pemakaian cout merupakan sebuah obyek untuk meletakkan informasi ke
standar output (monitor).
3.2. Manipulator
Manipulator umumnya digunakan untuk mengatur format tampilan data.
Misalnya untuk mengatur agar suatu nilai ditampilkan dengan lebar 10 karakter
rata kanan, dan sebagainya.
Tabel 3.2 Manipulator
Manipulator Keterangan
endl Menyisipkan newline dan mengirimkan isi ke
penyangga
ends Menyisipkan karakter null
ASB/AK
C++ Programming 18
a. endl
b. setw()
void main( )
{
int nilai1 = 1210,
nilai2 = 250,
nilai3 = 23;
clsrcr( ) ;
cout<<”Nilai 1 = “<<setw(4)<<nilai1<<endl;
cout<<”Nilai 2 = “<<setw(4)<<nilai2<<endl;
cout<<”Nilai 3 = “<<setw(4)<<nilai3<<endl;
}
Hasil :
ASB/AK
C++ Programming 19
cout<<setw(0)<<bil<<endl;
cout<<setw(1)<<bil<<endl;
cout<<setw(2)<<bil<<endl;
cout<<setw(3)<<bil<<endl;
cout<<setw(4)<<bil<<endl;
cout<<setw(5)<<bil<<endl;
}
Hasil :
c. setfill()
cout<<setfill(‘*’)<<setw(8)<<harga<<endl;
cout<<setw(8)<<harga<<endl;
}
Hasil :
ASB/AK
C++ Programming 20
d. ends
e. setiosflags()
void main( )
{
int harga1=475000;
int harga2= 35000;
ASB/AK
C++ Programming 21
cout<<setw(3)<<”Rp.”<<setiosflags(ios::left)<<setw(7) <<harga1<<endl;
cout<<setw(3)<<”Rp.”<<setiosflags(ios::left)<<setw(7) <<harga2<<endl;
cout<<setw(3)<<”Rp.”<<setiosflags(ios::left)<<setw(7) <<harga3<<endl;
}
Hasil :
R p . 4 7 5 0 0 0
R p . 3 5 0 0 0
R p . 7 5 0 0
R p . 4 7 5 0 0 0
R p . 3 5 0 0 0
R p . 7 5 0 0
ASB/AK
C++ Programming 22
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
float harga=225.20;
clrscr();
cout<<setw(3)<<"U$."<<setiosflags(ios::right)<<setw(7)<<setiosflags(ios::
fixed)<<setprecision(2)<<harga
<<endl;
cout<<setw(3)<<"U$."<<setiosflags(ios::right)<<setw(7)<<setiosflags(ios::
fixed)<<setprecision(1)<<harga
<<endl;
cout<<setw(3)<<"U$."<<setiosflags(ios::right)<<setw(7)<<setiosflags(ios::
fixed)<<setprecision(0)<<harga
<<endl;
cout<<setw(3)<<"U$."<<setiosflags(ios::right)<<setw(7)<<setiosflags(ios::
scientific)<<setprecision(2)<<harga<<endl;
}
Hasil :
3.3. cin
C++ menyediakan suatu obyek bernama cin (baca: C in) yang bermanfaat
untuk membaca data dari standar input (keyboard).
Bentuk pernyataan cin untuk membaca data dari keyboard dan meletakkan
ke sebuah variabel. Bentuk pemakaian cin adalah :
cin >> var ;
Tanda >> menunjukkan “pengambilan data dari” piranti masukan, normalnya
adalah keyboard.
Simpan dengan nama file : lat37.cpp
//membaca data bertipe float dan int dari keyboard
#include<iostream.h>
#include<conio.h>
ASB/AK
C++ Programming 23
void main( )
{
const float harga=250000;
int jumlah;
float total;
clrscr( ) ;
total=jumlah*harga;
ASB/AK
C++ Programming 24
strcpy(nama,C);
harga=475000;
total=jumlah*harga;
}
else
exit(0);
cout<<"============================================="<<endl;
cout<<"Kode"<<setw(10)<<"Nama Brg"<<setw(10)<<"Qty"
<<setw(8)<<"Harga"<<setw(11)<<"Jumlah"<<endl;
cout<<"============================================="<<endl;
cout<<setiosflags(ios::left)<<setw(6)<<kode
<<setiosflags(ios::left)<<setw(13)<<nama
<<setiosflags(ios::right)<<setw(4)<<jumlah
<<setiosflags(ios::right)<<setw(10)<<harga
<<setiosflags(ios::right)<<setw(10)<<total<<endl;
cout<<"============================================="<<endl;
}
Hasil :
ASB/AK
C++ Programming 25
#include<iostream.h>
#include<conio.h>
void main()
{
char karakter;
clrscr();
Hasil :
TUGAS 3
Buatlah Program seperti tampilan dibawah ini.
Simpan dengan nama : tugas31.cpp
Ketentuan soal :
a. Gunakan cin,getch(),setw(),setiosflags(ios::fixed) dan (ios::right)
b. Gunakan identifier : jmlbrg, hrgbrg, bayar, nildisc, disc, total
c. Bayar=jmlbrg*hrgbrg, disc=(nildisc/100)*bayar, total=bayar-disc
Program :
BAB 4
PERNYATAAN (STATEMENT)
Seperti telah dijelaskan sebelumnya bahwa ungkapan/ pernyataan atau
yang disebut statement berupa instruksi yang menyuruh komputer untuk
melakukan sesuatu. Di dalam bahasa C++ terdapat banyak jenis statement, yaitu
:
4.1 . Statement Kosong
ASB/AK
C++ Programming 27
a. Statement Pemilihan IF
Statement penyeleksian kondisi (pemilihan) dinyatakan oleh pernyataan
if, pernyataan ini dipakai untuk mengambil keputusan berdasarkan suatu
kondisi. Bentuk pernyataan if mempunyai beberapa kondisi :
Satu kasus atau dua kasus atau lebih (if – else)
Statement kendali penyeleksian kondisi satu kasus digambarkan oleh
notasi algoritma di bawah ini :
Simpan dengan nama file : lat41.cpp :
ASB/AK
C++ Programming 28
Hasil :
ASB/AK
C++ Programming 29
#include<conio.h>
void main( )
{
float nilai;
char indeks;
clrscr( ) ;
cout<<”Nilai ujian ? “;cin>>nilai;
if(nilai > 80)
indeks = ‘A’;
else
if(nilai > 69)
indeks = ‘B’;
else
if(nilai > 59)
indeks = ‘C’;
else
if(nilai > 49)
indeks = ‘D’;
else //nilai 49
indeks = ‘E’;
cout<<”Indeks = “<<indeks<<endl;
}
Hasil :
IF Tersarang
If tersarang (nested if) merupakan bentuk dari suatu statement if yang
berada di dalam lingkungan statement if lainnya. Bentuk notasi algoritma
statement if tersarang adalah sebagai berikut:
ASB/AK
C++ Programming 30
if(A>B)
if(A>C)
cout<<"Bilangan terbesar adalah "<<A<<endl;
else //(C >= A)
cout<<"Bilangan terbesar adalah "<<C<<endl;
else //(B >= A)
if(B>C)
cout<<"Bilangan terbesar adalah "<<B<<endl;
else //(C >= B)
cout<<"Bilangan terbesar adalah "<<C<<endl;
}
Hasil :
cout<<"Umur ? ";cin>>usia;
if(usia > 17)
if(usia < 30)
cout<<"Diterima"<<endl;
else //(usia >= 30)
cout<<"Ditolak"<<endl;
else //(usia <= 17)
cout<<"Ditolak"<<endl;
}
Hasil :
ASB/AK
C++ Programming 31
#include<conio.h>
void main()
{
int rating;
clrscr();
cout<<"Rating ? ";cin>>rating;
if(rating >= 12)
if(rating < 18)
{
cout<<"Remaja"<<endl;
cout<<"Bimbingan orang tua"<<endl;
}
else //(usia >= 18)
cout<<"Dewasa"<<endl;
else //(usia < 12)
cout<<"Semua umur"<<endl;
}
Hasil :
switch
{
case ungkapan1;
pernyataan_1;
break;
case ungkapan2;
pernyataan_2;
ASB/AK
C++ Programming 32
break;
....
default /* optional */
pernyataan_x; /* optional * /
}
cout<<"============================="<<endl;
cout<<setw(5)<<""<<"MENU UTAMA"<< endl;
cout<<"============================="<<endl;
cout<<"1. Hitung Luas "<<endl;
cout<<"2. Hitung Keliling "<<endl;
cout<<"3. Hitung Diagonal "<<endl;
cout<<"4. Keluar Program "<<endl;
cout<<"============================="<<endl;
cout<<"Pilih nomor menu (1/2/3/4): ";
cin >> pil;
cout<<"============================="<<endl;
switch(pil)
{
case 1:
{
cout<<"Panjang ? ";cin >> panjang;
cout<<"Lebar ? ";cin >> lebar;
luas = panjang*lebar;
cout<<"Luas segiempat = " <<luas<<endl;
break;
}
case 2:
{
cout<<"Panjang ? ";cin >> panjang;
cout<<"Lebar ? ";cin >> lebar;
kel = 2*panjang*lebar;
cout<<"Keliling segiempat = " <<kel<<endl;
ASB/AK
C++ Programming 33
break;
}
case 3:
{
cout<<"Panjang ? ";cin >> panjang;
cout<<"Lebar ? ";cin >> lebar;
diag = sqrt((panjang*panjang)+(lebar*lebar));
cout<<"Diagonal segiempat = " <<diag<<endl;
break;
}
case 4:
cout<<"Keluar program...bye2" << endl;
break;
default:
cout<<"Anda salah memilih nomor menu..!!!"
<< endl;
break;
}
}
Hasil :
4.4. Pengulangan
Statement kendali pengulangan merupakan sebuah statement dimana
sejumlah instruksi dapat dilaksanakan berulangkali sesuai keinginan. Di dalam
algoritma pengulangan atau yang sering disebut repetition (loop) dapat dilakukan
sejumlah kali atau sampai kondisi pengulangan tercapai.
Secara konsep algoritma, struktur pengulangan terdiri dari dua, yaitu
pengulangan tanpa kondisi (unconditional looping) dan pengulangan dengan
kondisi (conditional looping).
Bagian struktur pengulangan secara umum terdiri atas dua bagian :
kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk
melaksanakan pengulangan.
badan (body) pengulangan, yaitu bagian algoritma yang diulang.
Di bawan ini diberikan notasi algoritma untuk struktur pengulangan :
<inisialisasi>
awal pengulangan
ASB/AK
C++ Programming 34
badan pengulangan
akhir pengulangan
<terminasi>
Di dalam bahasa C++ ada tiga jenis struktur pengulangan, yaitu : for, while dan
do-while
a. Pengulangan FOR
Pengulangan for adalah struktur pengulangan tanpa kondisi
(unconditional looping) artinya instruksi-instruksi di dalam badan pengulangan
diulang sejumlah kali yang dispesifikasikan. Dalam hal ini, jumlah
pengulangan sudah diketahui sebelum eksekusi program.
Notasi algoritma dari struktur pernyataan for adalah :
for (ungkapan1;ungkapan2;ungkapan3)
pernyataan;
Keterangan:
Ungkapan1 adalah nilai pencacah awal
Ungkapan2 adalah nilai pencacah akhir
Ungkapan3 adalah operator penaikan/penurunan untuk menentukan
banyaknya pengulangan
Pencacah haruslah dari tipe data yang memiliki predecessor atau
successor, yaitu integer atau karakter. Pada dasarnya for terdiri dari dua
jenis, yaitu for menaik dan for menurun.
For menaik merupakan bentuk pengulangan dimana nilai pencacah
awal harus lebih kecil dari nilai pencacah akhir dengan ungkapan3 adalah
operator penaikan, sedangkan for menurun adalah sebaliknya dengan
ungkapan3 adalah operator penurunan.
Simpan dengan nama file : lat47.cpp :
//mencetak huruf abjad dari A s/d Z
#include<iostream.h>
#include<conio.h>
void main( )
{
char abjad;
clrscr( ) ;
ASB/AK
C++ Programming 35
cout<<abjad<<endl;
nilai akhir
}
Hasil :
jumlah=0;
cout<<”Jumlah data : “;cin>>N;
clrscr( ) ;
for(k=1;k<=N;k++)
{
cout<<”Nilai “<<k<<” : “;cin>>nilai;
jumlah=jumlah+nilai;
}
clrscr( ) ;
rata2=jumlah/N;
cout<<”Rata-rata nilai = “<<rata2<<endl;
}
Hasil :
ASB/AK
C++ Programming 36
dahulu sampai waktu habis, kemudian perulangan for yang lebih luar baru
akan bertambah, mengerjakan perulangan for yang lebih dalam lagi.
Notasi algoritma untuk for tersarang adalah sebagai berikut:
ASB/AK
C++ Programming 37
for(baris=1;baris<=tinggi;baris++);
{
for(kolom=1;kolom<=baris;kolom++)
cout<< ‘ * ‘;
cout<<endl; /* pindah baris dari bintang
pertama ke bintang berikutnya */
}
}
Hasil :
c. Pengulangan While
Pengulangan while termasuk ke dalam pengulangan dengan kondisi
(conditional looping), merupakan salah satu bentuk pengulangan yang
berguna untuk memproses suatu pernyataan atau beberapa pernyataan
beberapa kali.
Bentuk pernyataan ini :
While (ungkapan)
{
pernyataan1;
pernyataan2;
...
pernyataanN;
}
Aksi atau runtunan akan dilaksanakn selama kondisi bernilai true. Jika
kondisi bernilai false badan pengulangan tidak akan dilaksanakan, yang
berarti pengulangan selesai. Agar kondisi suatu saat bernilai false, maka di
ASB/AK
C++ Programming 38
dalam badan pengulangan harus ada instruksi yang mengubah nilai peubah
kondisi.
Simpan dengan nama file : lat49b.cpp :
#include<iostream.h>
#include<conio.h>
void main( )
{
int k; //variabel pencacah
clrscr( ) ;
k = 0; //inisialisasi
while(k < 5)
{
cout<<”Welcome to Information Technology”<<endl;
k++;
} //peubah kondisi yang menyebabkan kondisi bernilai false
}
Hasil :
Keterangan :
Badan pengulangan berisi dua instruksi, yaitu:
cout<<”Welcome to Information Technology”<<endl; dan
k++;
Kondisi pengulangan adalah k< 5, artinya selama k masih < 5, maka
badan pengulangan boleh dimasuki.
k harus terdefinisi nilainya sebelum pengulangan dilaksanakan pertama
kali.
Instruksi yang mengubah nilai peubah kondisi adalah k++; dimana
instruksi ini mencacah jumlah pengulangan, sehingga jika k 5,
pengulangan dihentikan.
Pada akhir pengulangan, nilai k 5.
ASB/AK
C++ Programming 39
int k,N;
float x,rata2;
clrscr( ) ;
cout<<”Jumlah data : “;cin >> N;
clrscr( ) ;
jumlah=0;
k=1;
while(k<N)
{
cout<<”Nilai “<<k<<” : “;cin>>x;
jumlah=jumlah+x;
} // k 5
clrscr( ) ;
rata2=jumlah/N;
cout<<”Rata-rata nilai = “<<rata2<<endl;
}
Hasil :
ASB/AK
C++ Programming 40
d. Pengulangan Do-While
Pernyataan do-while juga berguna untuk mengulang proses. Bentuk dari
pernyataan do-while ini adalah sebagai berikut:
do
{
ASB/AK
C++ Programming 41
pernyataan1;
pernyataan2;
...
pernyataanN;
} while(ungkapan);
ASB/AK
C++ Programming 42
Celcius+=10;
} while(Celcius<100);
cout<<”================================”<<endl;
}
Hasil :
ASB/AK
C++ Programming 43
ASB/AK
C++ Programming 44
void main()
{
int k,N,x,jumlah;
clrscr();
jumlah=jumlah+x;
}
clrscr();
cout<<"Jumlah = "<<jumlah<<endl;
}
Hasil :
Program hanya menjumlahkan jika hanya jika nilai x yang dimasukkan adalah
ganjil, bila nilai x yang dimasukkan adalah genap, maka program akan
mengulang kembali ke iterasi for dan nilai genap tersebut tidak akan
ditampung sampai dimasukkan kembali nilai x yang ganjil.
Di bawah ini diberikan contoh efek continue pada struktur while untuk
menjumlahkan jika hanya nilai genap saja.
Simpan dengan nama file : lat49k.cpp :
//hitung jumlah nilai jika hanya genap
#include<iostream.h>
#include<conio.h>
void main()
{
int k,N,x,jumlah;
clrscr();
ASB/AK
C++ Programming 45
k=1;
jumlah=0;
while(k<=N)
{
cout<<"Nilai "<<k<<" : ";cin>>x;
if(x%2!=0){
cout<<"Masukkan hanya bilangan genap..!! \a"<<endl;
continue; /* kembali ke struktur while bila nilai x yang
dimasukkan adalah ganjil */
}
jumlah=jumlah+x;
k++;
}
cout<<"Jumlah = "<<jumlah<<endl;
}
Hasil :
selesai:
cout<<"Selesai...."<<endl;
}
ASB/AK
C++ Programming 46
Hasil :
Hasil :
ASB/AK
C++ Programming 47
cout<<setw(10)<<"================================"<<endl;
cout<<setw(20)<<"MENU UTAMA"<<endl;
cout<<setw(10)<<"================================"<<endl;
cout<<setw(10)<<"1. Entry Data"<<endl;
cout<<setw(10)<<"2. Customer Report"<<endl;
cout<<setw(10)<<"3. Add Data"<<endl;
cout<<setw(10)<<"4. Find Data"<<endl;
cout<<setw(10)<<"5. Accounting Report"<<endl;
cout<<setw(10)<<"6. Keluar program"<<endl;
cout<<setw(10)<<"================================"<<endl;
cout<<setw(10)<<"Pilih nomor menu (1/2/3/4/5/6): ";
cin >>pil;
if(pil==6)
break;
clrscr();
switch(pil)
{
case 1 :
cout<<"Anda memilih menu Input Data"<<endl;
cout<<"Tekan Enter untuk kembali ke MENU"<<endl;
getch();
clrscr();
continue;
case 2 :
clrscr();
cout<<"Anda memilih menu Melihat Laporan Pelanggan"
<<endl;
cout<<"Tekan Enter untuk kembali ke MENU"<<endl;
getch();
clrscr();
continue;
case 3 :
cout<<"Anda memilih menu Menambah Data"<<endl;
cout<<"Tekan Enter untuk kembali ke MENU";
getch();
clrscr();
continue;
case 4 :
cout<<"Anda memilih menu Mencari data"<<endl;
ASB/AK
C++ Programming 48
case 5 :
cout<<"Maaf data ini sangat rahasia....!!!"<<endl;
goto selesai;
}
}
selesai:
cout<<"Anda tidak diperkenankan membacanya...terima kasih"
<<endl;
}
Hasil :
if(bil>=0)
cout<<"Positif"<<endl;
else
exit(0);
}
Hasil :
ASB/AK
C++ Programming 49
TUGAS 4
Buatlah Program seperti tampilan dibawah ini.
Simpan dengan nama : tugas41.cpp
Pilihan
----------------
[1] Penjumlahan
[2] Pengurangan
[3] Keluar
----------------
Pilihan [1..3] :
Ketentuan Soal
Jika pilihan 1 maka : Jika Pilihan 2 maka :
Penjumlahan Pengurangan
---------------------- ---------------------
Masukkan Nilai A = 40 Masukkan Nilai A = 40
Masukkan Nilai B = 30 Masukkan Nilai B = 30
Hasil A + B = 70 Hasil A - B = 10
Coba Lagi [Y/T] : Coba Lagi [Y/T] :
Program :
ASB/AK
C++ Programming 50
BAB 5
PROSEDUR
ASB/AK
C++ Programming 51
peubah yang bertipe sama dengan tipe prosedur (lihat diagram pemanggilan
prosedur).
void main( )
{ void nama_prosedur( )
……………. {
prosedur( ) ; ………………………
……………. ………………………
……………. ………………………
prosedur( ) ; }
…………….
}
Hasil :
ASB/AK
C++ Programming 52
int k,N;
float x,jumlah,rata2;
Hasil :
ASB/AK
C++ Programming 53
clrscr();
void angka()
{
int x = 55;
float y = 5.63;
Hasil :
b. Nama Global
Nama global adalah nama yang didefinisikan di luar prosedur manapun.
Nama ini dikenal di semua prosedur. Tinjau contoh program di bawah ini :
Simpan dengan nama file : lat53.cpp :
//prosedur dengan nama global
#include<iostream.h>
#include<conio.h>
int x=20; int y=23;
void angka( ) ;
void main( )
{
clrscr();
cout<<"Pada program utama nilai x = "<<x
<<" nilai y = "<<y<<endl;
cout<<"Begitu juga pada prosedur "<<endl;
angka();
}
ASB/AK
C++ Programming 54
void angka( )
{
cout<<"Nilai x = "<<x
<<" nilai y = "<<y<<endl;
}
Hasil :
ASB/AK
C++ Programming 55
}
void CariMin() // prosedur cari nilai minimum
{
min=nilai[1];
for(k=2;k<=N;k++)
{
if(nilai[k]<min)
min=nilai[k];
}
cout<<"Nilai minimum = "<<min<<endl;
}
Hasil :
ASB/AK
C++ Programming 56
angka();
angka();
angka();
cout<<"Pada program utama nilai A = "<<A<<endl;
}
void angka()
{
static int A=100;
A++;
cout<<"Pada prosedur nilai A = "<<A<<endl;
}
Hasil :
ASB/AK
C++ Programming 57
#include<conio.h>
int x=20; //variabel eksternal
void main()
{
float x;
clrscr();
Hasil :
ASB/AK
C++ Programming 58
{
cout<<setiosflags(ios::right)<<setw(2)<<i<< ' ';
cout<<"C++"<<endl;
}
cout<<"Selesai";
}
Hasil :
ASB/AK
C++ Programming 59
cout<<"Selesai";
}
Hasil :
Hasil :
5.6. Referensi
Pada C++ referensi digunakan untuk memberikan nama alias dari variabel.
Bentuk pendeklarasiannya :
ASB/AK
C++ Programming 60
i=10;
cout<<"i = "<<i<<endl;
cout<<"r = "<<r<<endl;
r=55;
cout<<"i = "<<i<<endl;
cout<<"r = "<<r<<endl;
}
Hasil :
Terlihat bahwa nilai i dan r adalah sama, hal ini disebabkan karena kata kunci
&, yang membuat nilai yang diisikan kepada variabel i dikirim ke variabel r.
5.7. Parameter
Pada hakekatnya, prosedur dengan referensi merupakan suatu teknik
pemrograman modular dimana terjadi pertukaran informasi antar modul dan titik
dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme
pertukaran informasi. Tiap item data ditransfer antara parameter aktual (nyata)
dan parameter formal yang bersesuaian.
Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan
dengan kata lain ia dikirimkan dari modul utama ke modul pada prosedur lain,
ASB/AK
C++ Programming 61
ASB/AK
C++ Programming 62
Penjelasan:
Prosedur dimulai dengan deklarasi judul:
void hitung(int x, int y);
Tipe parameter
Parameter formal
Parameter formal Tipe parameter
Variabel lokal yang hanya digunakan pada prosedur dan tidak termasuk
sebagai parameter formal (parameter nilai), harus didefinisikan sendiri
sebagai berikut:
int z;
Hubungan antara parameter formal di prosedur dengan parameter aktual
di prosedur utama adalah sebagai berikut:
void hitung(int x, int y);
hitung(a,b);
ASB/AK
C++ Programming 63
{
z=x+y;
cout<<"x = "<<x<<" y = "<<y<<" z = "<<z<<endl;
}
Hasil :
hitung(a,b,c);
Parameter formal x akan diisi nilai parameter aktual a, yaitu 20
Parameter formal y akan diisi nilai parameter aktual b, yaitu 12
Parameter formal z akan diisi nilai parameter aktual c, yaitu 0
Pada modul prosedur, parameter formal z kemudian berganti nilai sebesar
x+y, sehingga parameter formal z berubah menjadi sebesar 20+12=32.
Nilai akhir dari parameter x,y,z adalah:
x = 20 y = 12 z = 32
Karena parameter formal dengan pengiriman parameter secara nilai
sifatnya lokal, maka perubahan-perubahan nilai parameter di prosedur
tidak akan mempengaruhi nilai parameter aktual di modul utama, dengan
demikian nilai parameter c tetap tidak terpengaruh oleh perubahan
parameter z, jadi masih 0 karena pengiriman ini bersifat searah.
ASB/AK
C++ Programming 64
int a,b,c;
a=20;b=12;c=0;
hitung(a,b,c);
cout<<"a = "<<a<<" b = "<<b<<" c = "<<c<<endl;
}
Hasil :
hitung(a,b,c);
Terlihat bahwa pengiriman parameter by reference merupakan pengiriman
dua arah (bolak-balik), sehingga perubahan nilai di parameter formal akan
mempengaruhi nilai parameter aktual juga. Pada contoh di atas, nilai
parameter aktual c akan mengikuti perubahan dari parameter formal Z.
Sehingga setelah titik pemanggilan nilai parameter aktual yang tadinya 0 akan
ASB/AK
C++ Programming 65
temp=a;
a=b;
b=temp;
}
Hasil :
ASB/AK
C++ Programming 66
Hasil :
faktorial( N, F );
ASB/AK
C++ Programming 67
TUGAS 5
Buatlah Program seperti tampilan dibawah ini.
Simpan dengan nama : tugas51.cpp
Pilihan
----------------
[1] Perkalian
[2] Pembagian
[3] Keluar
----------------
Pilihan [1..3] :
Ketentuan Soal
Jika pilihan 1 maka : Jika Pilihan 2 maka :
Perkalian Pembagian
---------------------- ---------------------
Masukkan Nilai A = 100 Masukkan Nilai A = 100
Masukkan Nilai B = 20 Masukkan Nilai B = 20
Hasil A x B = 2000 Hasil A / B = 5
Coba Lagi [Y/T] : Coba Lagi [Y/T] :
ASB/AK
C++ Programming 68
Program :
BAB 6
FUNGSI
ASB/AK
C++ Programming 69
ASB/AK
C++ Programming 70
Nama fugsi
Argumen
void main()
{ Parameter masukan (by value)
clrscr();
for(int k=1;k<=10;k++)
cout<<setw(2)<<k
<<setw(4)<<kuadrat(k)<<endl;
}
int kuadrat(int I)
Panggil fungsi kuadrat disertai
{ daftar parameter aktualnya
return(I * I);
}
Hasil :
ASB/AK
C++ Programming 71
{
clrscr();
for(int k=1;k<=10;k++)
cout<<setw(2)<<k
<<setw(2)<<" f "<<"("<<k<<")= "<<f(k)<<endl;
}
int f(int x)
{
return(2*x*x+5*x-8);
}
Hasil :
ASB/AK
C++ Programming 72
cout<<"Nilai x : ";cin>>x;
cout<<"Nilai y : ";cin>>y;
cout<<"Nilai z : ";cin>>z;
cout<<"Bilangan terbesar = "<<maks3(x,y,z)<<endl;
}
int maks3(int a, int b, int c)
{
int temp=a;
if (b>temp) Hasil :
temp=b;
if (c>temp)
temp=c;
return(temp);
}
void tampilkan_judul()
{
cout<<"U & I Love C++"<<endl;
cout<<"Please Contact Us"<<endl;
cout<<"ARDI Information Technology"<<endl;
ASB/AK
C++ Programming 73
Hasil :
TUGAS 6
Buatlah Program seperti tampilan dibawah ini.
Simpan dengan nama : tugas61.cpp
Program untuk mencari bilangan terbesar dan terkecil :
Masukkan Jumlah Bilangan : 3
Bilangan ke 1 : 50
Bilangan ke 2 : 60
Bilangan ke 3 : 20
----------------------------
Bilangan Terbesar : 60
Bilangan Terkecil : 20
Program :
ASB/AK
C++ Programming 74
BAB 7
LARIK
7.1. PENDAHULUAN
Sebuah peubah hanya menyimpan sebuah nilai dari tipe tertentu. Ia tidak
dapat menyimpan beberapa buah nilai yang bertipe sejenis. Seringkali kita
perlu mengolah sekumpulan data yang bertipe sama, misalnya hasil ujian 100
orang mahasiswa, tabel harga barang di pasar swalayan, daftar kode wilayah
dalam percakapan interlokal, dan sebagainya.
Secara umum memang larik (array) didefinisikan sebagai struktur data
yang menyimpan elemen yang bertipe sama. Namun pada
pengembangannya larik banyak digunakan untuk mengolah data yang
mempunyai nama dan tipe yang berbeda, seperti hasil ujian mahasiswa
dengan field-field misal NIM, NAMA, NILAI, INDEKS, dsb sehingga
ASB/AK
C++ Programming 75
mempunyai tipe yang kompleks. Untuk larik dangan kasus ini kita harus
menggunakan tipe bentukan Record (Structure), agar suatu kumpulan field
dengan tipe data yang berbeda dapat diolah. Tipe larik yang tersusun atas
field-field dengan nama dan tipe yang berbeda disebut sebagai “Larik
Terstruktur”.
Gambaran lojik sebuah larik dapat dijelaskan sebagai berikut:
A
1
2
3
4
5
6
7
8
ASB/AK
C++ Programming 76
int L[5];
char Nama[5] [25];
float Nilai[20];
ASB/AK
C++ Programming 77
Elemen larik juga dapat diacu melalui isi nilai dari indeks larik tersebut:
L[4] { mengacu elemen ke-empat dari larik L }
void main()
{
int Nilai[5];
int k; // indeks larik
clrscr();
for (k=1; k<=5; k++)
{
cout<<”Nilai “ <<k<< “ = “;
cin >> Nilai[k];
}
clrscr();
cout<<”===============================”<<endl;
cout<<”Data Nilai Ujian Akhir Semester”<<endl;
cout<<”===============================”<<endl;
for(k=1; k<=5; k++)
cout<< setiosflags(ios::right)<<setw(6)<<Nilai[k]<< endl;
cout<<”===============================”<<endl;
}
Hasil :
ASB/AK
C++ Programming 78
int k;
clrscr();
for(k=0;k<5;k++)
{
cout<<"Nama " <<k<<" = ";
cin >> Nama[k];
}
clrscr();
cout<<”===============”<<endl;
cout<<"Data Nama Mhs" << endl;
cout<<”===============”<<endl;
for(k=0;k<5;k++)
cout<<Nama[k]<<endl;
cout<<”===============”<<endl;
}
Hasil :
void main()
{
float Nilai[N]; //larik dengan data nilai 5 orang mhs
int k;
float jumlah,Rata2;
clrscr();
jumlah=0;
cout<<"Data Nilai Ujian" << endl;
for(k=1;k<=N;k++)
{
cout<<"Nilai " <<k<<" = ";
cin >> Nilai[k];
jumlah=jumlah+Nilai[k];
}
clrscr();
Rata2=jumlah/N;
cout<<"Rata-rata = "<<Rata2<<endl;
ASB/AK
C++ Programming 79
Hasil :
void main()
{
const Nmaks=100; //elemen larik dengan jumlah maksimum 100
float Nilai[Nmaks];
int k,N;
float jumlah,Rata2;
clrscr();
jumlah=0;
cout<<"Jumlah data ? ";
cin >> N;
for(k=1;k<=N;k++)
{
cout<<"Nilai " <<k<<" = ";
cin >> Nilai[k];
jumlah=jumlah+Nilai[k];
}
clrscr();
Rata2=jumlah/N;
cout<<"Data Nilai Ujian" << endl;
for(k=1;k<=N;k++)
cout<<Nilai[k]<<endl;
cout<<"Rata-rata = "<<Rata2<<endl;
}
ASB/AK
C++ Programming 80
Hasil :
Bila program dijalankan, maka akan menanyakan jumlah data yang ingin
dimasukkan, yang tidak lain adalah jumlah elemen efektif larik yang ingin
dipakai dari jumlah 100 elemen yang didefinisikan.
int jum_hari[12] =
{
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
merupakan contoh pendefinisian larik bernama jum_hari yang terdiri dari 12
elemen bertipe integer dan secara berurutan (dimulai dari indeks 0) diberi nilai
31, 28 dan seterusnya.
31 28 31 30 31 30 31 31 30 31 30 31
0 1 2 3 4 5 6 7 8 9 10 11
C++ secara otomatis akan memberi nilai awal nol terhadap larik yang bersifat
global. Tidak demikian bila larik didefinisikan secara lokal (diatur sendiri oleh
pemrogram).
Simpan dengan nama file : lat74.cpp :
ASB/AK
C++ Programming 81
a.Versi 1 :
Algoritma ini mengasumsikan nilai mula-mula (maks) adalah nilai yang
sangat kecil, misalnya dari kumpulan nilai ujian kita definisikan bahwa nilai
maksimum mula-mula adalah –999.
Teknik dari versi 1 ini dapat dijabarkan sebagai berikut:
Larik dikunjungi mulai dari elemen pertama.
ASB/AK
C++ Programming 82
ASB/AK
C++ Programming 83
maks=-999;
for (k=1;k<=5;k++)
{
cout<<"Nilai " <<k<<" = "; cin >> nilai[k];
if(nilai[k] > maks)
maks=nilai[k];
}
clrscr();
cout<<"================" << endl;
cout<<"Data Nilai Ujian" << endl;
cout<<"================" << endl;
for (k=1;k<=5;k++)
cout<<setiosflags(ios::right)<<setw(5)<<nilai[k]<<endl;
cout<<"================" << endl;
cout<<"Nilai ujian tertinggi = "<<maks<<endl;
}
Hasil :
b.Versi 2 :
Pada algoritma versi dua ini, nilai maksimum sementara diinisialisasi
dengan elemen pertama larik. Selanjutnya, larik dikunjungi mulai dari
elemen kedua. Setiap kali mengunjungi elemen larik, bandingkan elemen
tersebut dengan nilai maksimum sementara. Jika elemen larik yang sedang
dibandingkan lebih besar dari nilai maksimum sementara, maka elemen
tersebut menjadi maksimum sementara sekarang. Pada akhir kunjungan
(yaitu setelah seluruh elemen larik dikunjungi), nilai maksimum sementara
menjadi nilai maksimum dari seluruh elemen larik.
Sebagai ilustrasi, tinjau kembali contoh larik pada Gambar di bawah ini:
ASB/AK
C++ Programming 84
A
1 80
2 75
3 60
4 82
5 59
6 76
7 87
8 71
for (k=1;k<=5;k++)
{
cout<<"Nilai " <<k<<" = ";
cin >> nilai[k];
}
maks=nilai[1];
for (k=2;k<=5;k++)
{
if (nilai[k] > maks)
maks=nilai[k];
}
cout<<"Nilai terbesar = "<<maks<<endl;
}
ASB/AK
C++ Programming 85
Hasil :
Algoritma versi 2 lebih umum dan pasti benar untuk nilai larik apapun (baik
bernilai positif ataupun negatif). Algoritma tetap benar meskipun larik
hanya berukuran 1 elemen A (yaitu N = 1).
ASB/AK
C++ Programming 86
}
Hasil :
b.Versi 2 :
Simpan dengan nama file : lat78.cpp :
//program cari nilai minimum larik dengan
//elemen pertama dianggap nilai minimum sementara
#include<iostream.h>
#include<conio.h>
void main()
{
int nilai[5]; //larik dengan data nilai 5 orang mhs
int k,min;
clrscr();
for(k=1;k<=5;k++)
{
cout<<"Nilai " <<k<<" = ";
cin >> nilai[k];
}
min=nilai[1];
for(k=2;k<=5;k++)
{
if (nilai[k] < min)
min=nilai[k];
}
cout<<"Nilai terkecil = "<<min<<endl;
}
Hasil :
ASB/AK
C++ Programming 88
ASB/AK
C++ Programming 89
Pada versi ini, jika X ditemukan di dalam larik, maka sebuah peubah
boolean yang bernama ketemu diisi dengan nilai true, dan jika X tidak
ditemukan, maka ketemu bernilai false. Nilai yang dikembalikan adalah
indeks larik (ix) tempat X ditemukan. Jika X tidak ditemukan maka ix diisi
0. Algoritma versi 2 ini lebih elegan daripada algoritma versi 1.
Simpan dengan nama file : lat79.cpp :
//Program cari nilai tertentu di dalam larik
//menggunakan peubah boolean
#include<iostream.h>
#include<conio.h>
void main()
{
const Nmaks=100;
int nilai[Nmaks],k,N,x,ix,ketemu;
clrscr();
Hasil :
ASB/AK
C++ Programming 90
#include<iostream.h>
#include<conio.h>
void main()
{
const Nmaks=100;
int nilai[Nmaks],k,N,x,ix,ketemu;
char pil;
clrscr();
if(ketemu)
ix=k;
else
ix=0;
cout<<"==================================="<<endl;
cout<<"Data ditemukan pada indeks ke "<<ix<<endl;
cout<<"==================================="<<endl;
cout<<"Cari lagi ( y / t ) ? ";cin>>pil;
} //pil bukan 'y'
}
Hasil :
ASB/AK
C++ Programming 91
Data yang diurut dapat berupa data bertipe dasar atau tipe rekaman. Jika
data bertipe rekaman, maka harus dijelaskan berdasarkan field apa data
tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai
field kunci.
Metode pengurutan data sesungguhnya terdiri dari banyak jenis, namun yang
paling banyak digunakan adalah:
1. Algoritma Pengurutan Gelembung ( Bubble Sort )
2. Algoritma Pengurutan Pilih ( Selection Sort )
ASB/AK
C++ Programming 92
{
int nilai[5]; //larik dengan data nilai 5 orang mhs
int temp; //peubah bantu untuk pertukaran
int i; //pengurutan untuk jumlah langkah
int k; //pencacah untuk pengapungan pada setiap elemen
int N; //jumlah elemen efektif larik
clrscr();
Hasil :
ASB/AK
C++ Programming 93
selanjutnya. Proses yang sama diulang untuk elemen larik yang tersisa, yaitu
memilih elemen maksimum/minimum berikutnya dan mempertukarkannya
dengan elemen terujung larik sisa. Sebagaimana halnya pada algoritma
pengurutan gelembung, proses memilih nilai maksimum/minimum dilakukan
pada setiap pass. Jika larik berukuran N, maka jumlah pass adalah N-1.
for(k=5;k>=2;k--)
{
imaks=1;
for(j=2;j<=k;j++)
{
if(nilai[j]>nilai[imaks])
{
imaks=j;
}
temp=nilai[imaks];
nilai[imaks]=nilai[k];
nilai[k]=temp;
}
}
cout<<endl;
cout<<"Nilai sesudah terurut menaik = ";
for(k=1;k<=5;k++)
cout<<nilai[k]<< ' ';
}
Hasil :
ASB/AK
C++ Programming 94
TUGAS 7
Buatlah Program seperti tampilan dibawah ini.
Simpan dengan nama : tugas71.cpp
Masukkan Jumlah Data : 4
Bilangan ke 1 : 50
Bilangan ke 2 : 60
Bilangan ke 3 : 20
Bilangan ke 4 : 40
----------------------------
Diurutkan besar ke kecil : 60 50 40 20
Diurutkan kecil ke besar : 20 40 50 60
Program :
ASB/AK
C++ Programming 95
BAB 8
OPERASI STRING
8.1. Pengantar String
Nilai suatu string adalah kumpulan dari nilai-nilai karakter yang berurutan
dalam bentuk larik dimensi satu. Nilai suatu string ditulis di dalam tanda petik
dua ( “ ). Suatu nilai string disimpan di memori dengan diakhiri oleh nilai ‘\0’
(null). Misalnya nilai suatu string “ABC” akan disimpan di memori dengan
bentuk :
‘ \0‘
ASB/AK
C++ Programming 96
Sebagai suatu larik karakter, karakter pertama dari nilai string mempunyai
indeks ke nol, karakter kedua mempunyai indeks ke satu dan seterusnya.
Dengan mengetahui bahwa suatu nilai string diakhiri dengan nilai ‘\0’, maka
akhir nilai dari suatu string dapat dideteksi.
Program berikut ini akan menampilkan nilai suatu string dalam bentuk
karakter demi karakter dimulai dari karakter pada indeks ke-0 sampai akhir dari
nilai stringnya. Penampilannya karakter demi karakter ini tampak di statement
for yang menggunakan peningkatan I++. Nilai I=0 di statement for menunjukkan
karakter pertama di nilai string. Penampilan karakter ini akan dilakukan terus
selama karakter yang ditampilkan bukan akhir dari nilai string, yang ditunjukkan
oleh kondisi String[ I ] != ‘\0’ di statement for.
#include<iostream.h>
#include<conio.h>
void main()
{
char Nilai_String[20]="aBcdE";
int I;
for(I=0;Nilai_String[I]!=0;I++)
cout<<Nilai_String[I]<<' \n';
}
ASB/AK
C++ Programming 97
void main()
{
char teks[13]; //string dengan panjang maksimal 12 karakter
clrscr();
cout<<"Masukkan sebuah teks : ";
cin >>teks;
cout<<"Teks yang Anda masukkan adalah "<<teks<<endl;
}
ASB/AK
C++ Programming 98
{
char teks1[13]; //string dengan panjang maksimal 12 karakter
char teks2[13];
clrscr();
cout<<"NAMA = "<<nama<<endl;
cout<<"ALAMAT = "<<alamat<<endl;
}
c. Menyalin String
Menyalin string berbeda dengan menyalin bilangan. Misalnya teks1 dan teks2
adalah variabel string, untuk menyalinnya kita tidak bisa memberikan pernyataan:
teks1 = teks2
untuk menyalin string teks1 ke teks2 kita harus memberikan trik seperti
pada contoh program di bawah ini:
//menyalin string
#include<iostream.h>
ASB/AK
C++ Programming 99
#include<conio.h>
void main()
{
char teks[ ]="C++ Emang Handal";
char data[25];
int i;
clrscr();
for(i=0;teks[i];i++)
data[i]=teks[i];
data[i]=' \0';
cout<<"Isi data = "<<data<<endl;
}
Berbeda dengan struktur pengulangan bilangan, pada struktur pengulangan
di atas sebuah string diulang sebanyak inisialisasi pada variabel string.
Namun untuk string berspasi harus ada pengakhiran karakter ber-ASCII nol
agar tidak muncul karakter diluar keinginan.
Selain cara di atas, untuk menyalin suatu string dapat digunakan fungsi
bernama strcpy. Bentuk notasinya adalah :
strcpy(string_target, string_asal)
Prototipe fungsi di atas ada dalam file header string.h.
//program salin string pake strcpy
#include<iostream.h>
#include<conio.h>
void main()
{
char teks[ ]="C++ Memang Handal";
char data[20];
clrscr();
strcpy(data,teks);
cout<<"Isi data : "<<data<<endl;
}
ASB/AK
C++ Programming 100
cout<<endl;
cout<<"Jumlah kapital = "<<jum_kapital<<endl;
cout<<"Jumlah huruf kecil = "<<jum_kecil<<endl;
cout<<"Jumlah digit = "<<jum_digit<<endl;
cout<<"Jumlah punctuasi = "<<jum_punctuasi<<endl;
}
ASB/AK
C++ Programming 101
hasil=strchr(teks,'B');
cout<<hasil<<endl;
}
Hasil program diatas : BCDE
ASB/AK
C++ Programming 102
letak=cari_kar(teks,'D');
cout<<"Huruf 'D' ada di urutan ke "<<letak<<endl;
}
int cari_kar(char *S, char D)
{
int i;
for(i=0;S[i];i++)
if(S[i]==D)
return(i+1);
return(0);
}
clrscr( ) ;
ASB/AK
C++ Programming 103
int hasil=strcmp(str1,str2);
if(hasil==0)
cout<<str1<<" = "<<str2<<endl;
else
if(hasil<0)
cout<<str1<<" < "<<str2<<endl;
else //(hasil > 0)
cout<<str1<<" > "<<str2<<endl;
}
Bila program dijalankan:
String pertama : a
String kedua : A
a>A
Pada operasi string dalam C++, huruf kecil mempunyai nilai yang lebih besar
dari huruf kapital. Besar suatu string juga diukur dari banyaknya karakter yang
dimiliki oleh string tersebut, contoh:
ASB/AK
C++ Programming 104
#include<stdlib.h>
void main()
{
char str[10];
int hasil;
clrscr( ) ;
/* program kode barang dengan inputan berupa string kemudian dikonversikan ke bilangan
bertipe int */
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<iomanip.h>
void main()
{
char kd_brg1[10]="2A2.310",
kd_brg2[10]="40ATA100",
kd_brg3[10]="753SM";
char kode[8];
char nama[25];
int hasil,jumlah;
long harga,total;
clrscr();
clrscr();
if(hasil==atoi(kd_brg1))
{
strcpy(nama,A);
harga=375000;
total=jumlah*harga;
}
else
if(hasil==atoi(kd_brg2))
{
strcpy(nama,B);
harga=560000;
total=jumlah*harga;
}
else
if(hasil==atoi(kd_brg3))
ASB/AK
C++ Programming 105
{
strcpy(nama,C);
harga=1200000;
total=jumlah*harga;
}
else
exit(0);
cout<<setw(17)<<""<<"Kuitansi Pembelian"<<endl;
cout<<setw(15)<<""<<"PT. GlobalNet Computer"<<endl;
cout<<endl;
cout<<"======================================================="<<endl;
cout<<"Kode brg"<<setw(12)<<"Nama Brg"<<setw(15)<<"Qty"
<<setw(8)<<"Harga"<<setw(10)<<"Jumlah"<<endl;
cout<<"======================================================="<<endl;
cout<<setiosflags(ios::left)<<setw(12)<<kode
<<setiosflags(ios::left)<<setw(18)<<nama
<<setiosflags(ios::right)<<setw(4)<<jumlah
<<setiosflags(ios::right)<<setw(10)<<harga
<<setiosflags(ios::right)<<setw(10)<<total<<endl;
cout<<"======================================================="<<endl;
}
BAB 9
STRUKTUR (RECORD)
ASB/AK
C++ Programming 106
Gambar 9.1
Gambaran Lojik Struktur dengan N Buah Field
tahun
bulan
tanggal
nama tipe struktur merupakan sebuah nama tipe bentukan yang
didefinisikan sendiri oleh pemrogram.
ASB/AK
C++ Programming 107
data_tanggal tanggal_lahir;
merupakan pendefinisian variabel struktur bertipe struktur tanggal lahir.
Dengan demikian tanggal_lahir merupakan variabel (nama) bentukan dari
sebuah struktur data_tanggal. Dengan adanya pendefinisian ini, tanggal_lahir
memiliki tiga buah anggota yaitu:
tahun
bulan
tanggal
Sehingga bentuk dari pendefinisian variabel struktur di atas dengan deklarasi
struktur yang telah dibuat adalah:
struc data_tanggal //pendeklarasian struktur
{
int tahun;
int bulan;
int tanggal;
};
data_tanggal tanggal_lahir; //pendefinisian variabel struktur
ASB/AK
C++ Programming 108
ASB/AK
C++ Programming 109
struct tanggal_lahir
{
int tanggal;
ASB/AK
C++ Programming 110
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
const Nmaks=100;
struct data_pegawai
{
char nip[11];
char nama[26];
long gaji;
};
data_pegawai data[Nmaks]; /*pendefinisian struktur data yang
merupakan tipe bentukan variabel
data_pegawai */
int k,N;
clrscr();
ASB/AK
C++ Programming 111
for(k=0;k<N;k++)
{
cout<<"Data karyawan "<<(k+1)<<endl;
cout<<"Nama : ";cin>>data[k].nama;
cout<<"NIP : ";cin>>data[k].nip;
cout<<"Gaji : ";cin>>data[k].gaji;
clrscr();
}
clrscr();
cout<<" DAFTAR GAJI"<<endl;
cout<<" KARYAWAN PT.ELANG PERSADA"<<endl;
cout<<endl;
cout<<"================================================"<<endl;
cout<<setw(3)<<"No.";
cout<<setw(5)<<"NIP";
cout<<setw(13)<<"NAMA";
cout<<setw(20)<<"GAJI"<<endl;
cout<<"================================================"<<endl;
for(k=0;k<N;k++)
{
cout<<setiosflags(ios::left)<<setw(5)<<k;
cout<<setiosflags(ios::left)<<setw(12)<<data[k].nip;
cout<<setiosflags(ios::left)<<setw(20)<<data[k].nama;
cout<<setw(4)<<"Rp.";
cout<<setiosflags(ios::right)<<setw(7)<<data[k].gaji<<endl;
}
cout<<"================================================"<<endl;
}
Bila digambarkan struktur lojik larik data ditunjukkan pada tabel di bawah ini:
NIP NAMA GAJI
1 031.02.004 Heru Dwi Wahyono Rp. 2500000
031.02.005 Diah Marliani Rp. 1500000
2
……….. ………………. …………….
. ……….. ………………. …………….
. 031.02.103 Wina Nurmaulina Rp. 900000
100
5Larik data dengan 100 elemen. Setiap elemen larik bertipe tersrtuktur (record).
Tiap record terdiri atas field NIP, NAMA dan GAJI
struct tanggal_lahir
{
int tanggal;
struct data_pegawai int bulan;
{ int tahun;
ASB/AK
C++ Programming 112
char nip[11]; };
char nama[26];
long gaji;
tanggal_lahir tgl;
};
data_pegawai data[Nmaks];
ASB/AK
C++ Programming 113
<<setiosflags(ios::left)<<setw(12)<<data[k].nip
<<setiosflags(ios::left)<<setw(20)<<data[k].nama
<<data[k].tgl.tanggal<<"-"<<data[k].tgl.bulan<<”-“
<<setw(8)<<data[k].tgl.tahun
<<setw(4)<<"Rp."
<<setiosflags(ios::right)<<setw(7)<<data[k].gaji<<endl;
}
cout<<"========================================================="<<endl;
}
Selain bertipe terstruktur, elemen larik juga dapat bertipe larik lain. Contoh
berikut menyajikan struktur tipe bentukan yang cukup kompleks. Misalkan kita
ingin menyimpan data nilai-nilai mata kuliah yang diambil setiap mahasiswa pada
sebuah larik bernama LarikMhs. Pada suatu semester, setiap mahasiswa
mengambil 4 buah mata kuliah. Hal tersebut dapat ditangani dengan
menggunakan struktur di dalam struktur namun dengan tipe larik yang berlainan.
Data yang disimpan dalam larik adalah sebagai berikut:
1. NIM (Nomor Induk Mahasiswa)
2. NamaMhs (Nama Mahasiswa)
3. Mata kuliah (MK) yang diambil mahasiswa tersebut (4 buah), berupa larik:
a. Kode mata kuliah ke-1 d. Kode mata kuliah ke-4
Nama mata kuliah ke-1 Nama mata kuliah ke-4
Nilai mata kuliah ke-1 Nilai mata kuliah ke-4
b. Kode mata kuliah ke-2
Nama mata kuliah ke-2
Nilai mata kuliah ke-2
c. Kode mata kuliah ke-3
Nama mata kuliah ke-3
Nilai mata kuliah ke-3
struct mata_kuliah
{
const Nmaks=100; char KodeMK[7];
struct data_mhs char NamaMK[20];
{ int nilai;
int nim; };
char nama[26];
mata_kuliah MK[4];
};
data_mhs data[Nmaks];
ASB/AK
C++ Programming 114
// program larik struktur yang mengandung struktur lain bertipe larik lain
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
void main( )
{
const Nmaks=100;
struct mata_kuliah
{
char KodeMK[7];
char NamaMK[15];
int nilai;
};
struct data_mhs
{
int nim;
char nama[26];
mata_kuliah MK[4];
};
data_mhs data[Nmaks];
int k,i,N;
clrscr();
cout<<"Jumlah Mahasiswa : ";cin>>N;
clrscr();
for(k=0;k<N;k++)
{
cout<<"Data Mahasiswa "<<(k+1)<<endl;
cout<<"Nama : ";cin>>data[k].nama;
cout<<"NIM : ";cin>>data[k].nim;
clrscr();
for(i=0;i<4;i++)
{
cout<<"Kode MK "<<(i+1)<<” : ";cin>>data[k].MK[i].KodeMK;
cout<<"Nama MK "<<(i+1)<<" : ";cin>>data[k].MK[i].NamaMK;
cout<<"Nilai "<<(i+1)<<" : ";cin>>data[k].MK[i].nilai;
clrscr();
}
}
clrscr( ) ;
cout<<setw(10)<<” “<<”DAFTAR NILAI MAHASISWA"<<endl;
cout<<setw(13)<<” “<<”SEMESTER GENAP"<<endl;
cout<<endl;
cout<<"======================================================"<<endl;
cout<<"NIM";
cout<<setw(13)<<"NAMA";
cout<<setw(25)<<"Kode MK";
cout<<setw(9)<<"Nama MK";
cout<<setw(13)<<"Nilai"<<endl;
cout<<"======================================================"<<endl;
for(k=0;k<N;k++)
{
cout<<setiosflags(ios::left)<<setw(12)<<data[k].nim
ASB/AK
C++ Programming 115
<<setiosflags(ios::left)<<setw(22)<<data[k].nama;
for(i=0;i<4;i++)
{
if(i == 0){
cout<<setiosflags(ios::left)<<setw(9)<<data[k].MK[i].KodeMK
<<setiosflags(ios::left)<<setw(15)<<data[k].MK[i].NamaMK
<<setiosflags(ios::right)<<setw(5)<<data[k].MK[i].nilai<<endl;
}
else // i>0
{
cout<<setw(34)<<" "
<<setiosflags(ios::left)<<setw(9)<<data[k].MK[i].KodeMK
<<setiosflags(ios::left)<<setw(15)<<data[k].MK[i].NamaMK
<<setiosflags(ios::right)<<setw(5)<<data[k].MK[i].nilai<<endl;
}
}
}
cout<<"========================================================="<<endl;
}
Contoh output dari program di atas :
=================================================================
NIM NAMA Kode MK Nama MK Nilai
=================================================================
113980031 Diah_Marliani TI3021 Ekonomi_Teknik 81
DU2053 Kewiraan 78
TE3073 Teori_Medan 64
TE4072 Jar.Kabel 73
113950035 Eko_Prasetyo TE2035 Teknik_Digital 72
TE3502 Sist.Transmisi 76
DU2037 Pancasila 85
TI3025 Kewirausahaan 69
311980037 Wida_Sukmawati IF4052 Struktur_Data 74
IF4053 Kom.Data 76
TI3021 Ekonomi_Teknik 69
IF3057 BPTR 71
=================================================================
NIM
data[Nmaks] Nama
Kode MK
MK[4] Nama MK
Nilai
ASB/AK
C++ Programming 116
clrscr();
ASB/AK
C++ Programming 117
strcpy(A[k-1].city,temporary);
}
}
}
cout<<setw(26)<<""<<"DAFTAR CUSTOMER"<<endl;
cout<<setw(24)<<""<<"PT. Global Industry"<<endl;
cout<<endl;
cout<<setw(10)<<""<<"============================================="<<endl;
cout<<setw(10)<<""<<"No."
<<setw(2)<<""<<"Cust.ID"
<<setw(3)<<""<<"Nama"
<<setw(8)<<""<<"Telp."
<<setw(5)<<""<<"City"<<endl;
cout<<setw(10)<<""<<"==========================================="<<endl;
for(k=0;k<N;k++){
cout<<setw(10)<<""
<<setiosflags(ios::left)<<setw(5)<<(k+1)
<<setiosflags(ios::left)<<setw(10)<<A[k].no
<<setiosflags(ios::left)<<setw(12)<<A[k].nama
<<setiosflags(ios::left)<<setw(10)<<A[k].tlp
<<setiosflags(ios::left)<<setw(12)<<A[k].city<<endl;
}
cout<<setw(10)<<""<<"==========================================="<<endl;
}
9.10 UNION
Union menyerupai struktur (termasuk dalam hal pengaksesannya), namun
mempunyai perbedaan yang nyata. Union biasa dipakai untuk menyatakan
suatu memori dengan nama lebih dari satu. Sebagai contoh diberikan
program di bawah ini:
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
union{
float kel;
double luas;
}Lingkaran;
float jari2;
cout<<"Masukkan jari-jari : ";cin>>jari2;
Lingkaran.kel=2*3.14*jari2;
cout<<"Keliling lingkaran = "<<Lingkaran.kel<<endl;
Lingkaran.luas=3.14*jari2*jari2;
cout<<"Luas lingkaran = "<<Lingkaran.luas<<endl;
}
Pada contoh di atas, variabel Lingkaran dideklarasikan sebagai suatu union
sebagai berikut:
union{
float kel;
double luas;
}Lingkaran;
ASB/AK
C++ Programming 118
Berarti elemen keliling dan luas akan menempati lokasi memori yang sama
secara bergantian. Besarnya lokasi memori yang akan digunakan adalah
sebesar 8 byte yang merupakan ukuran elemen terbesar (tipe double untuk
elemen luas). Jika digambarkan bentuk penggunaan bersama memori ini
akan tampak sebagai berikut:
Luas
Keliling
ASB/AK
C++ Programming 119
cout<<"Jari-jari ? ";cin>>jari2;
adhi=3.14*jari2*jari2;
Dibaca dua buah titik P1(x1,y1) dan P2(x2,y2) dari piranti masukkan, dimana
x1 dan y1 adalah anggota dari P1 dan x2 dan y2 adalah anggota dari P2.
Buatlah program untuk menghitung titik tengah dari P1 dan P2.
Titik tengah dari dua titik P1 dan P2 adalah P3(x3,y3) yang dihitung dengan
rumus :
x1 x 2 y y2
x3 dan y 3 1
2 2
clrscr();
cout<<"Titik P1 : "<<endl;
cout<<"x1 : ";cin>>P1.x;
cout<<"y1 : ";cin>>P1.y;
clrscr();
cout<<"Titik P2 : "<<endl;
cout<<"x2 : ";cin>>P2.x;
cout<<"y2 : ";cin>>P2.y;
clrscr();
P3.x=(P1.x+P2.x)/2;
P3.y=(P1.y+P2.y)/2;
cout<<"Titik tengah adalah : "<<"P3("<<P3.x<<","<<P3.y<<")"<<endl;
ASB/AK
C++ Programming 120
}
Bila program di atas dijalankan:
Titik P1 :
x1 : 4
y1 : 8
Titik P2 :
x2 : 2
y2 : 6
Titik tengah adalah : P3(3,7)
BAB 10
POINTER
10.1. Konsep Pointer
Pointer adalah tipe dasar yang rentang nilainya adalah alamat di memori
komputer. Suatu pointer di dalam program dimaksudkan untuk menunjuk ke
suatu alamat memori. Misal diberikan sebuah variabel X berisi harga bertipe
integer dan PX adalah variabel pointer yang akan menunjuk ke variabel X,
maka gambaran lojiknya adalah sebagai berikut :
ASB/AK
C++ Programming 121
0xff4
........
0xff2 PX
80 X 0xff2
........
#include<iostream.h>
#include<conio.h>
void main()
{
int X=80; //variabel bukan pointer
int *PX; //variabel pointer
clrscr();
PX=&X; //mengisi variabel pointer dengan variabel alamat X
cout<<“Alamat X = “<<&X<<endl;
cout<<“PX = “<<PX<<endl;
}
ASB/AK
C++ Programming 122
........
3001h 80 X
3003h 3001h PX
........
ASB/AK
C++ Programming 123
#include<iostream.h>
#include<conio.h>
void main()
{
int X=80; //variabel bukan pointer
int *PX; //variabel pointer
clrscr();
Dapat menunjuk ke
sebarang tipe data
int
float
Pointer void
char
Contoh: …
void *Ptr
#include<iostream.h>
#include<conio.h>
ASB/AK
C++ Programming 124
void main()
{
void *Ptr; //pointer tak bertipe
clrscr();
int X=60;
float Y=37.5;
Ptr=&X;
cout<<"Nilai integer yang ditunjuk oleh Ptr : "
<<*(int *)Ptr<<endl;
Ptr=&Y;
cout<<"Nilai pecahan yang ditunjuk oleh Ptr : "
<<*(float *)Ptr<<endl;
}
Hasil dari program di atas :
Nilai integer yang ditunjuk oleh Ptr : 60
Nilai pecahan yang ditunjuk oleh Ptr : 37.5
Bila sebuah pointer didefinisikan sebagai pointer tak bertipe, maka pada saat
pengaksesan nilai yang ditunjuk oleh pointer haruslah sebagai berikut :
*(tipe_data variabel yang ditunjuk oleh pointer *) variabel pointer
Pengaksesan ini bukan hanya berlaku untuk mengambil nilai yang ditunjuk
oleh pointer, melainkan juga mengubahnya.
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
void *ptr;
int x=80;
float y = 72.3;
ptr=&x;
cout<<"Nilai integer mula-mula : "
<<x<<endl;
*(int *)ptr=77;
cout<<"Nilai integer sekarang : "<<x<<endl;
ptr=&y;
cout<<"Nilai pecahan mula-mula : "
<<y<<endl;
*(float *)ptr=51.7;
cout<<"Nilai pecahan sekarang : "
<<y<<endl;
}
Hasil program di atas :
Nilai integer mula-mula : 80
Nilai integer sekarang : 77
Nilai pecahan mula-mula : 72.3
Nilai pecahan sekarang : 51.7
ASB/AK
C++ Programming 125
void main()
{
clrscr();
char *namahari[]={"Senin","Selasa","Rabu","Kamis","Jum'at",
"Sabtu","Minggu"};
for(int i=0;i<7;i++)
cout<<namahari[i]<<endl;
}
Pada contoh di atas, masing-masing nilai yang ditunjuk oleh elemen pointer dari array namahari dapat
diakses melalui indeksnya ( namahari[ i ] ).
Pointer
menunjuk ke
pointer
ASB/AK
C++ Programming 126
int X;
int *ptr1; //satu tanda * di depan ptr1
int **ptr2; //dua tanda ** di depan ptr2
Pada pendefinisian di atas :
X adalah variabel bertipe int.
ptr1 adalah variabel pointer yang menunjuk ke data bertipe int.
ptr2 adalah variabel pointer yang menunjuk ke pointer int.
Agar ptr1 menunjuk ke variabel X, diperlukan perintah berupa :
ptr1 = &X;
Sedangkan supaya ptr2 menunjuk ke variabel pointer ptr1, diperlukan
perintah :
ptr2 = &ptr1;
ASB/AK
C++ Programming 127
int a=168;
clrscr();
ubah_nilai(&a)
ASB/AK
C++ Programming 128
BAB 11
KELAS & OBYEK
11.1. Pendahuluan
Ide dasar pada bahasa berorientasi obyek (OOP) adalah
mengkombinasikan data-data dan fungsi untuk mengakses data menjadi
sebuah kesatuan unit. Unit ini dikenal dengan nama obyek (obyek). Obyek
sebenarnya mencerminkan pola kerja manusia dalam kehidupan sehari-
sehari. Sebuah obyek dapat diibaratkan sebagai departemen-departemen di
dalam sebuah perusahaan bisnis. Contoh departemen:
Penjualan
Akunting
ASB/AK
C++ Programming 129
Inventory
Obyek
Data
Fungsi Anggota
Fungsi Anggota
Gambar 11.1 Data dan fungsi pemanipulasi data pada suatu obyek
ASB/AK
C++ Programming 130
Obyek 1 Dept.
Data Penjualan
Data
Penjualan
Dept.
Obyek 2 Inventory
Data Data
Inventory
Pada bahasa berorientasi obyek, data yang melekat dalam suatu obyek
biasa disebut variabel instans. Pada C++, istilah yang digunakan adalah data
atau anggota data. Adapun fungsi yang melekat pada suatu obyek disebut
fungsi anggota (member function). Fungsi ini merupakan satu-satunya cara
untuk mengakses terhadap anggota dari obyek. Untuk membaca suatu
anggota data, kita harus memanggil fungsi anggota. Dengan kata lain, data
bersifat tersembunyi bagi fungsi-fungsi di luar fungsi anggota.
Istilah umum untuk fungsi anggota pada bahasa pemrograman
berorientasi obyek yaitu metode. Adapun pemanggilan fungsi anggota sering
disebut pengiriman pesan ke obyek.
ASB/AK
C++ Programming 131
ASB/AK
C++ Programming 132
cout<<Novel.judul<<endl;
cout<<Novel.pengarang<<endl;
cout<<Novel.jumlah<<endl;
}
Sebuah kelas (class) yang menyerupai struktur di atas dapat dibuat dengan
menggantikan kata struct dengan class, namun pada penggunaan class
perlu ditambahkan kata kunci public disertai tanda titik dua ( : ). Untuk lebih
jelasnya dapat dilihat pada program contoh 2 di bawah ini:
#include<iostream.h>
#include<conio.h>
#include<string.h>
class Buku
{
public: //penambahan kata kunci
char judul[35];
char pengarang[25];
int jumlah;
};
void main()
{
clrscr();
ASB/AK
C++ Programming 133
ASB/AK
C++ Programming 134
Konsep obyek ini tentu berbeda jauh dengan cara yang ditempuh pada
program konvensional (bukan berorientasi obyek), yang memisahkan data
dan fungsi yang mengaksesnya. Pada program konvensional, data hanya
diperlakukan sebagai komponen kelas kedua. Fungsi justru berkedudukan
sebagai komponen utama. Pada pemrograman berorientasi obyek, data dan
fungsi harus dirancang secara bersamaan.
void info()
{
cout<<"Judul : "<<judul<<endl;
cout<<"Pengarang : "<<pengarang<<endl;
ASB/AK
C++ Programming 135
void main()
{
clrscr();
Buku novel;
novel.inisialisasi("Gun Of The Navarone","Alistair MacLean",12);
novel.info();
}
Pada program di atas, kelas Buku memiliki tiga buah anggota data (judul,
pengarang dan jumlah) dan dua buah anggota fungsi anggota
(inisialisasi()dan info()). Ketiga data anggota dinyatakan sebagai private.
Oleh karena itu, ketiga data ini tidak dapat diakses di luar kelas. Namun data
ini dapat diakes oleh kedua fungsi anggota dan semua fungsi anggota dapat
diakses di luar kelas, mengingat dinyatakan sebagai publik. Melalui kedua
fungsi inilah data kelas dapat diakses, misalnya pada fungsi main() .
class Buku
{
private:
char judul[35];
.....
public: anggota data
void inisialisasi(...)
{
.......
}
void info()
{ fungsi anggota
....... fungsi anggota
}
};
ASB/AK
C++ Programming 136
nama_obyek.nama_fungsi(argumen)
ASB/AK
C++ Programming 137
jumlah=Jumlah;
}
void info()
{
cout<<"Judul : "<<judul<<endl;
cout<<"Pengarang : "<<pengarang<<endl;
cout<<"Jumlah buku : "<<jumlah<<endl;
}
};
void main()
{
clrscr();
Buku novel,fiksi; //pendefinisian obyek
//memberi nilai terhadap dua obyek
kelas sama
judul judul
pengarang pengarang
jumlah jumlah
ASB/AK
C++ Programming 138
fiksi = novel
#include<iostream.h>
#include<conio.h>
#include<string.h>
class Buku
{
private:
char judul[35];
char pengarang[25];
int jumlah;
public:
void inisialisasi(char *Judul, char *Pengarang, int Jumlah)
{
strcpy(judul,Judul);
strcpy(pengarang,Pengarang);
jumlah=Jumlah;
}
void info()
{
cout<<"Judul : "<<judul<<endl;
cout<<"Pengarang : "<<pengarang<<endl;
cout<<"Jumlah buku : "<<jumlah<<endl;
}
};
void main()
{
clrscr();
Buku novel,fiksi; //pendefinisian obyek
//memberi nilai terhadap dua obyek
fiksi=novel;
fiksi.info();
}
ASB/AK
C++ Programming 139
int jumlah;
public:
void inisialisasi(char *Judul, char *Pengarang, int Jumlah)
{
strcpy(judul,Judul);
strcpy(pengarang,Pengarang);
jumlah=Jumlah;
}
void info()
{
.....
}
};
Bentuk kedua, pada kelas hanya terdapat deklarasi fungsi anggota
(prototype), sehingga bentuknya menjadi semacam berikut:
class Buku
{
private:
char judul[35];
char pengarang[25];
int jumlah;
public:
void inisialisasi(char *Judul, char *Pengarang, int Jumlah);
void info();
};
Definisi fungsi anggota ditempatkan di luar kelas.
Definisi untuk kedua fungsi anggota pada kelas Buku ditulis menjadi :
void Buku::inisialisasi(char *Judul, char *Pengarang, int Jumlah)
{
strcpy(judul,Judul);
strcpy(pengarang,Pengarang);
jumlah=Jumlah;
}
void Buku::info()
{
cout<<”Judul : “<<judul<<endl;
cout<<”Pengarang : “<<pengarang<<endl;
cout<<”Jumlah Buku : “<<jumlah<<endl;
} Nama kelas
Nama fungsi
anggota
void Buku::info()
{
cout<<”Judul : “<<judul<<endl;
Operator resolusi
Nama anggota data
lingkup
kelas Buku
ASB/AK
C++ Programming 140
Cara kedua ini lebih umum digunakan. Perlu diketahui pada penulisan
Buku::inisialisasi(), dengan sendirinya anggota data kelas Buku dikenali pada
fungsi tersebut.
Di bawah ini diberikan contoh yang menggunakan bentuk penulisan alternatif
fungsi anggota:
//alternatif lain penulisan fungsi anggota
#include<iostream.h>
#include<conio.h>
#include<string.h>
class Buku
{
private:
char judul[35];
char pengarang[25];
int jumlah;
public:
void inisialisasi(char *Judul, char *Pengarang, int Jumlah);
void info();
};
void main()
{
clrscr();
Buku novel;
novel.inisialisasi("Gun of The Navarone","Alistair MacLean",12);
novel.info();
}
void Buku::inisialisasi(char *Judul, char *Pengarang, int Jumlah)
{
strcpy(judul,Judul);
strcpy(pengarang,Pengarang);
jumlah=Jumlah;
}
void Buku::info()
{
cout<<"Judul : "<<judul<<endl;
cout<<"Pengarang : "<<pengarang<<endl;
cout<<"Jumlah buku : "<<jumlah<<endl;
}
Catatan: Jika fungsi anggota mengandung sedikit pernyataan (satu atau dua pernyataan), definisi fungsi
anggota ditulis di dalam deklarasi kelas (contoh sebelum 11.6.1). Tetapi untuk fungsi anggota
yang kompleks, definisinya diletakkan di luar kelas.
#include<iostream.h>
#include<conio.h>
#include<string.h>
class Movie
{
private:
char judul[20];
char cast[40];
char genre[30];
ASB/AK
C++ Programming 141
public:
void inisialisasi(char *judul, char *cast, char *genre);
void info();
};
void main()
{
clrscr();
void Movie::info()
{
cout<<"Judul : "<<judul<<endl;
cout<<"Pemain : "<<cast<<endl;
cout<<"Rating : "<<genre<<endl;
}
Pada pernyataan :
void Movie::inisialisasi(char *judul, char *cast, char *genre)
{
strcpy(Movie::judul,judul);
} nama anggota
nama kelas
ASB/AK