Modul Kuliah
UNIVERSITAS GUNADARMA
2012
DAFTAR ISI
Nani Mintarsih
HAL
Page 1
26
........
41
46
58
REFERENSI ..
64
.................
Nani Mintarsih
Page 2
Encapsulation (pengkapsulan)
Pengemasan data dan fungsi dalam wadah bernama obyek dikenal dengan sebutan
Encapsulation (pengkapsulan). Data tidak lagi di perlakukan sebagai komponen
kedua setelah fungsi, melainkan mempunyai kedudukan yng sama dengan fungsi.
Inheritance (pewarisan)
Nani Mintarsih
Page 3
Page 4
}
// Bagian implementasi dari fungsi set_X
void CONTOH::set_X(int XX) {
X = XX;
}
// Bagian implementasi dari fungsi get_X
int CONTOH::get_X() {
return X;
}
// Fungsi utama
int main() {
// Membuat instance dari kelas CONTOH dengan nama ob
CONTOH ob;
// Mengakses fungsi set_X yang terdapat pada kelas CONTOH
ob.set_X(100);
Nani Mintarsih
Page 5
Contoh :
Program 11-2
#include <iostream>
using namespace std;
// Membuat kelas dengan nama CONTOH
class CONTOH {
int X;
public:
// Membuat constructor
CONTOH() {
X = 10; // Melakukan inisialisasi nilai X dengan nilai 10
}
// Membuat member function
void ShowX() {
cout<<"Nilai X : "<<X<<endl;
}
Nani Mintarsih
Page 6
//...
};
int main() {
// Melakukan instansiasi terhadap kelas CONTOH
// dengan nama instance O
CONTOH O;
// Memanggil fungsi ShowX
O.ShowX();
return 0;
}
Hasil
Nilai X : 10
Program 11-3
#include <iostream>
using namespace std;
// Membuat kelas dengan nama CONTOH
class CONTOH {
int X;
public:
// Membuat constructor tanpa parameter
CONTOH() {
X = 10; // Melakukan inisialisasi nilai X dengan nilai 10
}
// Membuat constructor dengan menggunakan satu parameter
CONTOH(int XX) {
X = XX;
}
// Membuat member function
Nani Mintarsih
Page 7
void ShowX() {
cout<<"Nilai X : "<<X<<endl;
}
//...
};
int main() {
// Melakukan instansiasi terhadap kelas CONTOH
// dengan nama instance O
CONTOH O;
// Melakukan instansiasi terhadap kelas CONTOH
// dengan nama instance P
CONTOH P(200);
// Memanggil fungsi ShowX
O.ShowX();
P.ShowX();
return 0;
}
Hasil :
Nilai X : 10
Nilai X : 200
Tingkat Akses
1. Private
Berguna untuk hak akses data hanya kepada kelas yang
bersangkutan saja.
Contoh :
Program 11-6
#include <iostream>
Nani Mintarsih
Page 8
// X bersifat private
public:
void SetX(int XX) {
X = XX;
}
void ShowX() {
cout<<"Nilai X : "<<X<<endl;
}
};
// Fungsi utama
int main() {
CONTOH O;
O.SetX(100);
O.ShowX()
return 0;
Hasil:
Nilai X : 100
2. PUBLIC
Berguna untuk memberikan hak akses
Page 9
int X;
public:
void SetX(int XX) {
X = XX;
}
int KuadratX() {
return X * X;
}
//
};
// Fungsi utama
int main() {
CONTOH O;
int hasil;
// Melakukan pemanggilan terhadap fungsi-fungsi di dalam
// kelas CONTOH
O.SetX(10);
hasil = O.KuadratX();
cout<<"Hasil : "<<hasil;
return 0;
}
Hasil
Hasil : 100
3.
Protected
Digunakan untuk memberikan hak akses terhadap data dalam suatu kelas
sehingga data tersebut dapat diakses oleh kelas turunannya, namn
lingkungan luar di dalam program tetap tidak di beri hak untuk
mengaksesnya.
Contoh ;\
Program 11-8
Nani Mintarsih
Page 10
#include <iostream>
using namespace std;
// Membuat kelas DASAR yang didalamnya terdapat data
// dalam bagian protected
class DASAR {
protected:
int X;
public:
DASAR() { X = 10; } // Inisialisasi nilai X dengan nilai 10
//...
};
// Membuat kelas TURUNAN sebagai hasil turunan dari kelas DASAR
class TURUNAN: public DASAR {
int Y, hasil;
public:
void SetY(int YY) {
Y = YY;
}
void KaliXY() {
hasil = X * Y; // Menggunakan nilai X dari kelas DASAR
}
int GetHasil() {
return hasil;
}
};
// Fungsi utama
int main() {
DASAR A;
TURUNAN B;
Nani Mintarsih
Page 11
B.SetY(5);
B.KaliXY();
cout<<"\nHasil X kali Y : "<<B.GetHasil();
return 0;
}
Hasil
Hasil X kali Y : 50
Page 12
cout<<"No Polisi
: "<<nopolisi<<endl;
cout<<"Warna
: "<<warna<<endl;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas MOTOR
MOTOR M;
M.SetMotor();
M.ShowInfoMotor();
return 0;
}
Page 13
warna = "Hitam";
}
void ShowInfoMotor() {
cout<<"Merk : "<<merk<<endl;
cout<<"Tahun: "<<tahun<<endl;
cout<<"No Polisi
: "<<nopolisi<<endl;
cout<<"Warna
: "<<warna<<endl;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas MOTOR
MOTOR M;
M.SetMotor();
M.ShowInfoMotor();
return 0;
}
Hasil
Merk
Tahun
No. Polisi
Warna
Page 14
// variabel statik
int Y;
// variabel non-statik
public:
// Constructor kelas CONTOH
CONTOH(int XX, int YY) {
X = XX;
Y = YY;
}
// Fungsi untuk menampilkan nilai X dan Y
void ShowXY() {
cout<<"Nilai X : "<<X<<endl;
cout<<"Nilai Y : "<<Y<<endl;
cout<<endl;
}
};
// Mendefinisikan X
int CONTOH::X;
// Fungsi utama
int main() {
// Membuat instance A dengan X=10 dan Y=10
CONTOH A(10, 10);
// Menampilkan nilai X dan Y dari instance A
cout<<"Di dalam objek A"<<endl;
A.ShowXY();
// Membuat instance B dengan X=50 dan Y=50
Nani Mintarsih
Page 15
2. Fungsi Statis
Yang harus diperhatikan :
Fungsi statis yang terdapat di dalam sebuah kelas tersebut tidak
memiliki pointer this
Fungsi statis tidak boleh bersifat virtual
Tidak boleh terdapat dua fungsi yang sama, walaupun yang satu
bersifat statik dan yang lainnya non-staik
Program 11-12
Nani Mintarsih
Page 16
#include <iostream>
using namespace std;
class CONTOH {
static int X;
public:
static void Inisialisasi(int XX) {
X = XX;
}
void ShowX() {
cout<<"Nilai X : "<<X<<endl;
}
};
// Mendefinisikan X
int CONTOH::X;
// Fungsi utama
int main() {
// Memanggil fungsi Inisialisasi sebelum
Page 17
Nilai X : 25
Pointer ke Objek
Menggunakan ->
Program 11-13
#include <iostream>
using namespace std;
// Membuat kelas
class CONTOH {
int X;
public:
void SetX(int XX) {
X = XX;
}
void ShowX() {
cout<<"Nilai X : "<<X<<endl;
}
};
// Fungsi utama
int main() {
// Mendeklarasikan pointer yang menunjuk ke kelas CONTOH
CONTOH *P;
// Mengalokasikan memori untuk kelas CONTOH
P = new CONTOH;
// P menunjuk ke alamat
Page 18
P->SetX(100);
Hasil
Nilai X: 100
Pointer this
Adalah pointer otomatis yang dilewatkan setiap kali objek dibuat di
dalam memori dan akan mewakili nama kelas yang bersangkutan.
Program 11-14
#include <iostream>
using namespace std;
class KUBUS {
int S;
public:
void SetS(int SS);
int GetVolume();
void ShowVolume();
};
void KUBUS::SetS(int SS) {
this->S = SS;
}
int KUBUS::GetVolume() {
return (this->S * this->S * this->S);
}
Nani Mintarsih
Page 19
void KUBUS::ShowVolume() {
cout<<"Volume Kubus : "<<this->GetVolume()<<endl;
}
// Fungsi utama
int main() {
KUBUS K;
K.SetS(5);
K.ShowVolume();
return 0;
}
Hasil
Volume Kubus : 125
Page 20
Hasil
Kuadrat dari 10 adalah : 100
Objek Sebagai Nilai Kembalian dalam Sebuah Fungsi
Program 11-16
#include <iostream>
using namespace std;
class CONTOH {
int X;
public:
void SetX(int XX) {
X = XX;
}
int GetX() {
return X;
}
};
Nani Mintarsih
Page 21
CONTOH MyFunc() {
CONTOH A;
A.SetX(30);
return A; // Mengembalikan nilai yag berupa objek
}
int main() {
CONTOH O;
// Memanggil fungsi Kali2 dan nilainya dimasukkan
// ke dalam objek O
O = MyFunc();
cout<<"Nilai X di dalam O adalah : "<<O.GetX();
return 0;
}
Hasil
Nilai X di dalam O adalah : 30
Friend Function
Program 11-17
#include <iostream>
using namespace std;
class CONTOH{
int X, Y;
public:
void SetXY(int XX, int YY) {
Nani Mintarsih
Page 22
X = XX;
Y = YY;
}
friend int KALI(CONTOH A);
};
// Mendefinisikan fungsi KALI yang bukan termasuk member function
// dari kelas CONTOH
int KALI(CONTOH A) {
// Mengakses bagian private secara langsung dari kelas CONTOH
return (A.X * A.Y);
}
// Fungsi utama
int main() {
// Melakukan instansiasi kelas CONTOH
CONTOH O;
O.SetXY(20, 3);// Mengeset nilai X=20 dan Y=3
cout<<"Hasil kali : "<<KALI(O);
return 0;
}
Hasil
Hasil kali : 60
Friend Class
Program 11-18
#include <iostream>
using namespace std;
Nani Mintarsih
Page 23
class KESATU {
int X, Y;
public:
KESATU(int XX, int YY) {
X = XX;
Y = YY;
}
friend class KEDUA;
};
// Definisi dari kelas KEDUA
class KEDUA {
//
public:
int Kali(KESATU A);
//
};
int KEDUA::Kali(KESATU A) {
return (A.X * A.Y);
};
int main() {
// Melakukan instansiasi dari kelas KESATU
KESATU O(40, 3);
// Melakukan instansiasi dari kelas KEDUA
KEDUA P;
// Memanggil fungsi Kali yang terdapat pada kelas KEDUA
cout<<"Hasil kali : "<<P.Kali(O);
return 0;
}
Nani Mintarsih
Page 24
Hasil
Hasil Kali : 120
Page 25
public:
void SetY(int YY) {
Y = YY;
}
int GetY() {
return Y;
}
};
// Fungsi utama
int main() {
rrt78h7huhninnnn9h99j
// Melakukan instansiasi terhadap kelas INDUK
INDUK A;
U000pfjjjjjiyyyhjj
// Memanggil fungsi-fungsi milik kelas INDUK dari kelas INDUK
A.SetX(12);
cout<<"Nilai X yang dipanggil dari kelas INDUK : ";
cout<<A.GetX()<<endl;
cout<<'\n';
// Melakukan instansiasi terhadap kelas TURUNAN
TURUNAN B;
// Melakukan pemanggilan fungsi-fungsi
// yang terdapat pada kelas TURUNAN
B.SetY(40);
cout<<"Nilai Y yang terdapat pada kelas TURUNAN : ";
cout<<B.GetY()<<endl;
cout<<'\n';
// Memanggil fungsi-fungsi milik kelas INDUK dari kelas TURUNAN
B.SetX(35);
Nani Mintarsih
Page 26
: 12
: 40
: 35
Program 12-2
#include <iostream>
using namespace std;
// Membuat kelas dasar dengan nama INDUK
class INDUK {
int X;
public:
void SetX(int XX) {
X = XX;
}
int GetX() {
return X;
}
};
// Membuat kelas turunan dari kelas INDUK dengan nama
TURUNAN1
class TURUNAN1: public INDUK {
int Y;
public:
void SetY(int YY) {
Y = YY;
Nani Mintarsih
Page 27
}
int GetY() {
return Y;
}
};
// Membuat kelas turunan dari kelas TURUNAN1 dengan nama
TURUNAN2
class TURUNAN2: public TURUNAN1 {
int Z;
public:
void SetZ(int ZZ) {
Z = ZZ;
}
int GetZ() {
return Z;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas TURUNAN2
TURUNAN2 A;
// Melakukan pengesetan nilai X, Y dan Z melalui kelas TURUNAN2
A.SetX(20);
A.SetY(30);
A.SetZ(40);
// Menampilkan nilai X, Y dan Z melalui kelas TURUNAN2
cout<<"Nilai X yang dipanggil dari kelas TURUNAN2 : ";
cout<<A.GetX()<<endl;
cout<<"Nilai Y yang dipanggil dari kelas TURUNAN2 : ";
cout<<A.GetY()<<endl;
Nani Mintarsih
Page 28
:: 20
:: 30
:: 40
Page 29
}
int GetX() {
return X;
}
};
// Membuat kelas TURUNAN1 yang diturunkan sebagai public
// dari kelas INDUK
class TURUNAN1: public INDUK {
int Y;
public:
void SetY(int YY) {
Y = YY;
}
int GetY() {
return Y;
}
};
// Membuat kelas TURUNAN2 yang diturunkan sebagai public
// dari kelas TURUNAN1
class TURUNAN2: public TURUNAN1 {
int Z;
public:
void SetZ(int ZZ) {
Z = ZZ;
}
int GetZ() {
return Z;
}
};
// Fungsi utama
int main() {
Nani Mintarsih
Page 30
#include <iostream>
using namespace std;
// Membuat kelas dasar dengan nama INDUK
class INDUK {
int X;
public:
void SetX(int XX) {
X = XX;
}
int GetX() {
return X;
}
Nani Mintarsih
Page 31
};
// Membuat kelas TURUNAN1 yang diturunkan sebagai private
// dari kelas INDUK
class TURUNAN1: private INDUK {
int Y;
public:
void SetY(int YY) {
Y = YY;
}
int GetY() {
return Y;
}
};
// Membuat kelas TURUNAN2 yang diturunkan sebagai private
// dari kelas TURUNAN1
class TURUNAN2: private TURUNAN1 {
int Z;
public:
void SetZ(int ZZ) {
Z = ZZ;
}
int GetZ() {
return Z;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas TURUNAN2
TURUNAN2 A;
Nani Mintarsih
Page 32
A.SetY(30);
A.SetZ(40);
Page 33
#include <iostream>
using namespace std;
// Membuat kelas dengan nama INDUK1
class INDUK1 {
int X;
public:
void SetX(int XX) {
X = XX;
}
int GetX() {
return X;
}
};
// Membuat kelas dengan nama INDUK2 yang tidak berkaitan
// dengan kelas INDUK1
class INDUK2 {
int Y;
public:
void SetY(int YY) {
Y = YY;
}
int GetY() {
return Y;
}
};
// Membuat kelas TURUNAN yang merupakan turunan
// dari kelas INDUK1 dan INDUK2
class TURUNAN: public INDUK1, public INDUK2 {
int Z;
public:
void SetZ(int ZZ) {
Z = ZZ;
}
Nani Mintarsih
Page 34
int GetZ() {
return ZZ;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas TURUNAN
TURUNAN A;
// Memanggil fungsi-fungsi yang terdapat pada kelas TURUNAN
A.SetX(100);
A.SetY(200);
A.SetZ(300);
// Menampikan nilai yang telah diset
cout<<"Nilai X : "<<A.GetX()<<endl;
cout<<"Nilai Y : "<<A.GetY()<<endl;
cout<<"Nilai Z : "<<A.GetZ();
return 0;
}
Hasil
Nilai X
Nilai Y
Nilai Z
:100
: 200
: 300
Nani Mintarsih
Page 35
class INDUK {
int X;
public:
// Constructor pada kelas INDUK
INDUK(int XX) {
X = XX;
cout<<"Constructor kelas INDUK"<<endl;
}
// Membuat fungsi GetX
int GetX() {
return X;
}
};
class TURUNAN: public INDUK {
int Y;
public:
// Constructor pada kelas TURUNAN
TURUNAN(int XX, int YY): INDUK(XX) {
Y = YY;
cout<<"Constructor kelas TURUNAN"<<endl;
}
// Membuat fungsi GetY
int GetY() {
return Y;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas TURUNAN
TURUNAN A(10, 20);
// Melakukan pemanggilan fungsi melalui objek A
Nani Mintarsih
Page 36
cout<<"Nilai X : "<<A.GetX()<<endl;
cout<<"Nilai Y : "<<A.GetY();
return 0;
}
Hasil
Construktor kelas INDUK
Construktor kelas TURUNAN
Nilai X : 10
Nilai Y : 20
Cntoh Program 12-7
#include <iostream>
using namespace std;
// Membuat kelas INDUK1
class INDUK1 {
int X;
public:
// Constructor pada kelas INDUK1
INDUK1(int XX) {
X = XX;
cout<<"Constructor kelas INDUK1"<<endl;
}
// Membuat fungsi GetX
int GetX() {
return X;
}
};
// Membuat kelas INDUK2
class INDUK2 {
int Y;
public:
// Constructor pada kelas INDUK2
Nani Mintarsih
Page 37
INDUK2(int YY) {
Y = YY;
cout<<"Constructor kelas INDUK2"<<endl;
}
// Membuat fungsi GetY
int GetY() {
return Y;
}
};
// Membuat kelas TURUNAN
// yang diturunkan dri kelas INDUK1 dan INDUK2
class TURUNAN: public INDUK1, public INDUK2 {
int Z;
public:
// Constructor pada kelas TURUNAN
TURUNAN(int XX, int YY, int ZZ): INDUK1(XX), INDUK2(YY) {
Z = ZZ;
cout<<"Constructor kelas TURUNAN"<<endl;
}
// Membuat fungsi GetZ
int GetZ() {
return Z;
}
};
// Fungsi utama
int main() {
// Melakukan instansiasi terhadap kelas TURUNAN
TURUNAN A(10, 20, 30);
// Melakukan pemanggilan fungsi melalui objek A
Nani Mintarsih
Page 38
cout<<"Nilai X : "<<A.GetX()<<endl;
cout<<"Nilai Y : "<<A.GetY()<<endl;
cout<<"Nilai Z : "<<A.GetZ();
return 0;
}
Hasil :
Construktor kelas INDUK1
Construktor kelas INDUK2
Construktor Kelas TURUNAN
Nilai X : 10
Nilai Y : 20
Nilai Z : 30
VIRTUAL
DAN
POLIMORFISME
Fungsi Virtual
Adalah fungsi yang mendukung adanya polymorphic function, artinya fungsi tersebut
daat di definisikan ulang kelas-kelas turunannya,
Contoh program
class MANUSIA {
char* nama;
int tinggi;
int berat;
public:
Nani Mintarsih
Page 39
void SetNama(char* N) {
nama = N;
}
void SetTinggi(int T) {
tinggi = T;
}
void SetBerat(int B) {
berat = B;
}
char* GetNama() {
return nama;
}
int GetTinggi() {
return tinggi;
}
int GetBerat() {
return berat;
}
// Membuat fungsi virtual
virtual void Berjalan() {
cout<<"Berjalan"<<endl;
}
virtual void Berpakaian() {
cout<<"Berpakaian"<<endl;
}
};
Ket : fungsi Berjalan() dan Berpakaian() adalah fungsi virtual
Override
#include <iostream>
using namespace std;
Nani Mintarsih
Page 40
class MANUSIA {
char* nama;
int tinggi;
int berat;
public:
void SetNama(char* N) {
nama = N;
}
void SetTinggi(int T) {
tinggi = T;
}
void SetBerat(int B) {
berat = B;
}
char* GetNama() {
return nama;
}
int GetTinggi() {
return tinggi;
}
int GetBerat() {
return berat;
}
// Membuat fungsi virtual
virtual void Berjalan() {
cout<<"Berjalan"<<endl;
}
virtual void Berpakaian() {
cout<<"Berpakaian"<<endl;
}
};
class MAHASISWA: public MANUSIA {
char* universitas;
Nani Mintarsih
Page 41
char* jurusan;
int semester;
public:
void SetUniversitas(char* U) {
universitas = U;
}
void SetJurusan(char* J) {
jurusan = J;
}
void SetSemester(int smt) {
semester = smt;
}
char* GetUniversitas() {
return universitas;
}
char* GetJurusan() {
return jurusan;
}
int GetSemester() {
return semester;
}
// Melakukan override terhadap fungsi Berjalan
void Berjalan() {
cout<<"Berjalan dengan cara SANTAI"<<endl;
}
// Melakukan override terhadap fungsi Berpakaian
void Berpakaian() {
cout<<"Berpakaian dengan baju BEBAS"<<endl;
}
};
class TENTARA: public MANUSIA {
char* pangkat;
char* kesatuan;
public:
Nani Mintarsih
Page 42
Page 43
M.Berjalan();
MHS.Berjalan();
TTR.Berjalan();
cout<<'\n';
// Memanggil fungsi Berpakaian dari masing-masing kelas
M.Berpakaian();
MHS. Berpakaian ();
TTR. Berpakaian ();
return 0;
}
Hasil
Berjalan
Berjalan dengan cara SANTAI
Berjalan dengan cara TEGAP
Berpakaian
Berpakaian dengan baju BEBAS
Berpakaian dengan baju SERAGAM
Nani Mintarsih
Page 44
PREPROCESSOR DIRECTIVE
Dalam C++, terdapat berbagai macam perintah ke compiler melalui preprocessor
directive , yaitu perintah yang diawali dengan tanda pound (#). Perlu diperhatikan
bahwa sebuah perintah yang memggunakan preprocessor directive harus diletakkan
dalam satu baris tersendiri.Adapaun beberapa directive ysng terdapat dalam C+
+adalah sebagai berikut :
Directive #include
Digunakan untuk memasukkan file header ke dalam kode program yang kita
tuliskan.
Contoh :
#include <iostream>
#include <cstdlib>
Directive #define
Digunakan untuk mendifinisikan sebuah makro indentifier ke dalam sebuah
program. Prinsip dasar dari cara kerja #define ini menggantikan makro identifier
tersebut dengan sebuah nilai yang kita definisikan di belakangnya.
Contoh:
Nani Mintarsih
Page 45
#define TEST 10
Contoh Program 15.1
#include <iostream>
#define TEST 10
using namespace std;
int main() {
// berarti hasil = (10 * 10) + 10
int hasil = (TEST * TEST) + TEST;
cout<<"Hasilnya : "<<hasil;
return 0;
}
Hasilnya : 110
Contoh Program 15.2
#include <iostream>
#define TEKS "Saya sangat menyukai C++"
using namespace std;
int main() {
cout<<TEKS;
return 0;
}
Hasil
Saya sangat menyukai C++
Nani Mintarsih
Page 46
Sebuah makro fungsi hanya terdiri dari satu baris perintah dan cara kerjanya sama
dengan sebuah fungsi inline, yaitu melakukan penyalinan perintah yang terdapat
pada baris tersebut ke dalam baris tertentu di dalam kode program
Contoh :
#define F(x) ( (x*x) + (2*x) + 1
#define ABS(y) (y)<0 ? (y) : (y)
Contoh Program 15.3
#include <iostream>
// Mendefinsikan fungsi F(x) = x2 + 2x + 1
#define F(x) ((x*x) + (2*x) + 1)
// Mendefinsikan fungsi untuk menentukan harga mutlak
// dari sebuah bilangan
#define ABS(y) (y)<0 ? -(y) : (y)
using namespace std;
int main() {
// Mendeklarasikan varaibel a dan b yang bertipe int
int a = 10, b = 5;
// Mendeklarasikan variabel c yang bertipe double
double c = -4.56;
// Memanggil fungsi makro dan menampilkan hasilnya ke layar
cout<<"F("<<a<<")
: "<<F(a)<<endl;
cout<<"ABS("<<b<<")
: "<<ABS(b)<<endl;
cout<<"ABS("<<c<<")
: "<<ABS(c)<<endl;
return 0;
F(10)
ABS(5)
ABS
:121
:5
:4.56
Page 47
#include <iostream>
// Mendefinsikan fungsi untuk menghitung x3
#define F(x) x * x * x
using namespace std;
int main() {
cout<<F(5);
return 0;
}
Hasil :
125
Contoh Program 15.5
#include <iostream>
// Mendefinsikan fungsi untuk menghitung x3
#define F(x) (x) * (x) * (x)
using namespace std;
int main() {
cout<<F(5);
return 0;
Hasil :
5*5*5
Nani Mintarsih
Page 48
Page 49
// Melakukan pengecekan
#if X > 100
cout<<X<<" lebih besar dari 100";
#else
cout<<X<<" lebih kecil dari 100";
#endif
return 0;
Hasil:
80 lebih kecil dari 100
3.
#elif kondisi2
Statement2;
#elif kondisiN
Statement3;
#else
Statement_terakhir;
#endif
Contoh Program 15.8
#include <iostream>
#define X 100
using namespace std;
// Fungsi utama
int main() {
// Melakukan pengecekan
Nani Mintarsih
Page 50
return 0;
Page 51
#define X 200
using namespace std;
int main() {
// Melakukan pengecekan dengan #if defined
#if defined X
cout<<"X telah didefinsikan"<<endl;
#else
cout<<"X belum didefinsikan"<<endl;
#endif
return 0;
Hasil :
X telah didefinikan
Nani Mintarsih
Page 52
Hasil:
X belum didefinisikan
Contoh Program 15.12
#include <iostream>
using namespace std;
int main() {
#ifdef X
cout<<"X telah didefinsikan"<<endl;
#else
cout<<"Mendefinisikan X"<<endl;
#define X 500
#endif
cout<<"X = ";
return 0;
}
Hasil :
Mendefinisikan X
X = 50
Page 53
#else
cout<<"X telah didefinisikan"<<endl;
#endif
return 0;
Hasil :
Xbelum didefinisikan
Contoh Program 15.14
#include <iostream>
using namespace std;
int main() {
#ifndef X
cout<<"X belum didefinisikan"<<endl;
#define X 32 // Mendefinisikan X
cout<<"Sekarang X telah didefinisikan"<<endl;
#else
cout<<"X telah didefinisikan"<<endl;
#endif
cout<<"X = "<<X<<endl;
return 0;
}
Hasil:
X belum didefinisikan
Sekarang X telah didefinisikan
X=32
Directive #undef
Berguna umtuk menghapus makro yang telah didefinisikan sebelumnya. Ini berguna
jika ingin melakukan perubahan nilai dari makro tersebut. #undef kebalikan dai
#define.
Contoh Program 15.5
Nani Mintarsih
Page 54
#include <iostream>
#define X 154
using namespace std;
int main() {
cout<<X<<endl;
#undef X
cout<<X<<endl;
lagi
return 0;
}
Contoh Program 15.16
#include <iostream>
#define X 154
using namespace std;
int main() {
#ifdef X
cout<<"X telah didefinisikan"<<endl;
cout<<"X = "<<X<<endl;
#else
cout<<"X belum didefinisikan"<<endl;
#endif
#undef X// Mengapus definisi makro X
#ifndef X
cout<<"Sekarang X tidak didefinisikan lagi"<<endl;
#else
Nani Mintarsih
Page 55
Directive #error
Digunakan untuk menghentikan proses kompilasi dan selanjutnya menampilkan
pesan kesalahan
BU :
#error pesan_kesalahan
Contoh Program 15.17
#include <iostream>
#define X -10
using namespace std;
int main()
#if X == -10
#error X tidak boleh bernilai negatif
#endif
return 0;
}
Hasil :
X tidak boleh bernilai negatif
Nani Mintarsih
Page 56
Latihan Soal :
1.
2.
c. .c
d. cpp
b. 5
c. 5
d. 5.00
b. 5
c. 5
d. 5.00
b. 5
c. 5
d. 5.00
b. 5
c. 5
d. 5.00
b. float
c. benar semua
d. salah semua
b. float
c. benar semua
d. salah semua
Memberikan nilai awal dari terhadap suatu dari variabel adalah pengertian dari :
a. pointer
12.
b.. turbo
Untuk pembagian campuran, yaitu bila pembilang atau penyebut atau kedua duanya merupakan float,
maka hasilnya akan menjadi .
a. integer
11.
d. link
Untuk pembagian integer, yaitu bila pembilang dan penyebut kedua duanya berbentuk integer maka
hasilnya akan :
a. integer
10.
c. paste
9.
b. running
8.
d. semua benar
7.
c. double precision
6..
b. floating point
5..
d. sesuai kebutuhan
Proses menterjemahkan C++ hingga menjadi bahasa yang dikenal oleh mesin di sebut :
a. compiler
4.
c. diawali angka
Variabel numeric yang terdapat pada C++, adalah yang di bawah ini, kecuali
a. integer
3.
b. looping
c. inisialisasi
d. salah semua
Nani Mintarsih
Page 57
c. :=
d. +=
b. if..else
c. else ..if
d. do while
b. ke2
c. dua#2
d. salah semua
b. @nilai
c. $nilai
d.&nilai
b. ke_2
c. nilai+tugas
d. salah semua
c. tgl22
d. semua benar
c. start()
d. end
20.
b. ==
19.
d. \r
18..
c. \n
17.
b. \f
16.
d. semua benar
Pemberian nial awal pada program C++ ,maka operator yang di guanakan adalah :
a. =
15
c. variabel statis
14.
b. variabel lokal
b. fungsi_printf
b. main()
Page 58
float b1 =1.5 ;
a2= a1/b1+2.75;
a3=45/a1+3;
a4=45.0/a1+3;
22..
b. 7
c. 8
d. 10
c. 8
d. 10
c. 8
d. 10
23.
b. 7
b. 7
Program untuk no 24 sd 28
Include <iostream.h>
main()
{
int bil =5;
cout << ++bil <<endl; ..(a)
cout << bil <<endl; ...(b)
bil+=2;
cout << ++bil <<endl; ..(c)
cout << ++bil <<endl; ..(d)
bil*=2;
Nani Mintarsih
Page 59
bil-=6;
cout << --bil <<endl; ..(e)}
24..
Output variabel bil pada abjad (a) pada program diatas adalah :
a. 6
25.
d. 14
b. 9
c. 10
d. 14
b. for
c. if
d. salah semua
b. if..else
c. else..if
d. salah semua
b. >=
c. !
d. salah semua
b. +=
c. &&
d. salah semua
b. else if
c. semua salah
d. semua benar
b.while(0)
c. while( )
d. semua benar
Pernyataan yang berfungsi untuk menghentikan dan keluar dari loop adalah :
a. break
36
c. 10
35
b. 9
34.
d. 14
33..
c. 10
32.
b. 9
Bila pada proses percabangan ada lebih dari 2 kondisi bersyarat di guna kan :
a. if
31..
d. 14
30.
c. 10
Output variabel bil pada abjad (e) pada program diatas adalah :
a. 6
29..
b. 9
Output variabel bil pada abjad (d) pada program diatas adalah :
a. 6
28.
d. 14
Output variabel bil pada abjad (c) pada program diatas adalah :
a. 6
27..
c. 10
Output variabel bil pada abjad (b) pada program diatas adalah :
a. 6
26.
b. 9
b. continue
c. quit
d. close
Nani Mintarsih
Page 60
a. \n
37.
b. pointer
c. alamat memori
d. var konstanta
b. *p=x
c. p=&x
d. semua benar
Sebuah variable yang terdiri atas beberapa elemen yang memiliki jenis data yang sama disebut
a. Record
40.
d. benar semua
39.
c. salah semua
Suatu variabel yang menyimpan alamat memori (variabel yang di tunjuk). Definisi tersebut adalah
pengertian:
a. reference
38..
b. endl
b. string
c. array
d. salah semua
b. overload memory
c. memory leak
d. read memory
Referensi
Abdul Kadir, Pemrograman C++ Membahas Pemrograman Berorientasi Objek
Menggunakan Turbo C++ dan Borland C++, Andi Yogyakarta ,2003
Budi Raharjo, Pemrograman C++, INFORMATIKA 2007
Nani Mintarsih
Page 61