POINTER DAN REFERENSI
Soal & Penyelesaian
1.
Tulislah sebuah program C++ yang mendemonstrasikan
penggunaan operator alamat &.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
//OperatorAlamat.cpp
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
unsigned
short shortVar=5;
unsigned
long longVar=65535;
long
sVar = -65535;
cout << "shortVar:\t" << shortVar;
cout << "\tAlamat dari shortVar:\t";
cout << &shortVar <<
endl;
cout << "longVar:\t" << longVar;
cout << "\tAlamat dari longVar:\t"
;
cout << &longVar << endl;
cout << "sVar:\t\t" << sVar;
cout << "\tAlamat dari sVar:\t" ;
cout << &sVar << endl;
getch();
return
0;
}
|
shortVar:
5 Alamat dari shortVar: 0032F91C
longVar:
65535 Alamat dari longVar: 0032F910
sVar:
-65535 Alamat dari sVar: 0032F904
2.
Tulislah sebuah program C++ untuk mendemonstrasikan pointer
dan variabel dinamis.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//pointerDanVariabelDinamis.cpp
#include <iostream>
#include <conio.h>
using namespace std;
int main( )
{
int
*p1, *p2;
p1 = new
int;
*p1 = 42;
p2 = p1;
cout << "*p1 == " << *p1 << endl;
cout << "*p2 == " << *p2 << endl;
*p2 = 53;
cout << "*p1 == " <<
*p1 << endl;
cout << "*p2 == " <<
*p2 << endl;
p1 = new
int;
*p1 = 88;
cout << "*p1 == " << *p1 << endl;
cout << "*p2 == " << *p2 << endl;
cout << "Semoga Anda mengerti contoh ini!\n";
getch();
return
0;
}
|
*p1 == 42
*p2 == 42
*p1 == 53
*p2 == 53
*p1 == 88
*p2 == 53
Semoga Anda mengerti contoh ini!
Penjelasan
dari contoh ini diberikan secara visual sebagai berikut:
3.
Tulislah sebuah program C++ untuk mendemonstrasikan
pemakaian pointer dalam memanipulasi data.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//pointerManipulasiData.cpp
#include <iostream>
#include <conio.h>
typedef unsigned short int USHORT;
int main()
{
using
namespace std;
USHORT umurKu; // sebuah variable
USHORT * pUmur = 0; // sebuah pointer
umurKu = 5;
cout << "umurKu: " << umurKu << endl;
pUmur = &umurKu; // menugaskan alamat
dari umurKu kepada pUmur
cout << "*pUmur: " << *pUmur << endl << endl;
cout << "Menetapkan *pUmur = 7...
" << endl;
*pUmur = 7; // menetapkan umurKu menjadi
7
cout << "*pUmur: " << *pUmur << endl;
cout << "umurKu: " << umurKu << endl << endl;
cout << "Menetapkan umurKu = 9... " << endl;
umurKu = 9;
cout << "umurKu: " << umurKu << endl;
cout << "*pUmur: " << *pUmur << endl;
getch();
return
0;
}
|
umurKu: 5
*pUmur: 5
Menetapkan *pUmur = 7...
*pUmur: 7
umurKu: 7
Menetapkan umurKu = 9...
umurKu: 9
*pUmur: 9
4. Tulislah sebuah
program C++ untuk mengetahui apa yang tersimpan dalam sebuah pointer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
//isiPointer.cpp
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
unsigned
short int umurKu = 5, umurMu = 10;
// sebuah pointer
unsigned
short int * pUmur = &umurKu;
cout << "umurKu:\t" << umurKu
<< "\t\tumurMu:\t" << umurMu
<< endl;
cout << "&umurKu:\t" << &umurKu
<< "\t&umurMu:\t" << &umurMu
<< endl;
cout << "pUmur:\t" << pUmur << endl;
cout << "*pUmur:\t" << *pUmur << endl;
cout << "\nMenugaskan-ulang: pUmur = &umurMu..."
<< endl << endl;
pUmur = &umurMu; // menugaskan-ulang
pointer
cout << "umurKu:\t" << umurKu <<
"\t\tumurMu:\t" << umurMu << endl;
cout << "&umurKu:\t" << &umurKu
<< "\t&umurMu:\t" << &umurMu
<< endl;
cout << "pUmur:\t" << pUmur << endl;
cout << "*pUmur:\t" << *pUmur << endl;
cout << "\n&pUmur:\t" << &pUmur
<< endl;
getch();
return
0;
}
|
umurKu: 5 umurMu: 10
&umurKu:004DFB18 &umurMu:004DFB0C
pUmur:
004DFB18
*pUmur: 5
Menugaskan-ulang: pUmur = &umurMu...
umurKu: 5 umurMu: 10
&umurKu:004DFB18 &umurMu:004DFB0C
pUmur:
004DFB0C
*pUmur: 10
&pUmur: 004DFB00
5. Demonstrasikanlah
pengalokasian, penggunaan, dan penghapusan sebuah pointer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//alokasiPointer.cpp
//mengalokasikan dan
menghapus sebuah pointer
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
int
variabelLokal = 5;
int
* pLokal= &variabelLokal;
int
* pHeap = new int;
*pHeap = 7;
cout << "variabelLokal: " << variabelLokal << endl;
cout << "*pLokal: "
<< *pLokal << endl;
cout << "*pHeap: "
<< *pHeap << endl;
delete
pHeap;
pHeap = new int;
*pHeap = 9;
cout << "*pHeap: " << *pHeap << endl;
delete
pHeap;
getch();
return
0;
}
|
variabelLokal: 5
*pLokal: 5
*pHeap: 7
*pHeap: 9
6. Demonstrasikanlah
penciptaan dan penghapus objek menggunakan new
dan delete.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
//newDanDelete.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class KucingSederhana
{
public:
KucingSederhana();
~KucingSederhana();
private:
int
umurNya;
};
KucingSederhana::KucingSederhana()
{
cout << "Konstruktor dipanggil.
" << endl;
umurNya = 1;
}
KucingSederhana::~KucingSederhana()
{
cout << "Destruktor dipanggil.
" << endl;
}
int main()
{
cout << "KucingSederhana Meonk...
" << endl;
KucingSederhana Meonk;
cout << "KucingSederhana *pKucing = new KucingSederhana..."
<< endl;
KucingSederhana *pKucing = new KucingSederhana;
cout << "delete pKucing...
" << endl;
delete
pKucing;
cout << "Keluar dan biarkan Meonk
pergi... " << endl;
getch();
return
0;
}
|
KucingSederhana Meonk...
Konstruktor dipanggil.
KucingSederhana *pKucing = new
KucingSederhana...
Konstruktor dipanggil.
delete pKucing...
Destruktor dipanggil.
Keluar dan biarkan Meonk pergi...
7. Demonstrasikanlah
operator -> untuk mengakses data anggota dari sebuah objek.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
//operatorAksesAnggota.cpp
#include <iostream>
#include <conio.h>
class KucingSederhana
{
public:
KucingSederhana() {umurNya = 2; }
~KucingSederhana() {}
int
GetUmur() const { return umurNya; }
void
SetUmur(int umur) { umurNya =
umur; }
private:
int
umurNya;
};
int main()
{
using
namespace std;
KucingSederhana * Meonk = new KucingSederhana;
cout << "Meonk berumur "
<< Meonk->GetUmur() << " tahun " << endl;
Meonk->SetUmur(5);
cout << "Meonk berumur "
<< Meonk->GetUmur() << " tahun " << endl;
delete
Meonk;
getch();
return
0;
}
|
Meonk berumur 2 tahun
Meonk berumur 5 tahun
8. Demonstrasikanlah
operator -> untuk menciptakan data anggota dari sebuah objek.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
//operatorCiptaAnggota.cpp
#include <iostream>
#include <conio.h>
class KucingSederhana
{
public:
KucingSederhana();
~KucingSederhana();
int
GetUmur() const { return *umurNya; }
void
SetUmur(int umur) { *umurNya =
umur; }
int
GetBerat() const { return *beratNya; }
void
setBerat (int berat) { *beratNya =
berat; }
private:
int
* umurNya;
int
* beratNya;
};
KucingSederhana::KucingSederhana()
{
umurNya = new int(2);
beratNya = new int(5);
}
KucingSederhana::~KucingSederhana()
{
delete
umurNya;
delete
beratNya;
}
int main()
{
using
namespace std;
KucingSederhana * Meonk = new KucingSederhana;
cout << "Meonk berumur "
<< Meonk->GetUmur() << " tahun " << endl;
Meonk->SetUmur(5);
cout << "Meonk berumur "
<< Meonk->GetUmur() << " tahun " << endl;
delete
Meonk;
getch();
return
0;
}
|
Meonk berumur 2 tahun
Meonk berumur 5 tahun
9. Demonstrasikanlah
penggunaan pointer this dalam sebuah
program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
//pointerThis.cpp
#include <iostream>
#include <conio.h>
class PersegiPanjang
{
public:
PersegiPanjang();
~PersegiPanjang();
void
SetPanjang(int panjang)
{ this->panjangNya
= panjang; }
int
GetPanjang() const
{ return
this->panjangNya; }
void
SetLebar(int lebar)
{ lebarNya = lebar; }
int
GetLebar() const
{ return
lebarNya; }
private:
int
panjangNya;
int
lebarNya;
};
PersegiPanjang::PersegiPanjang()
{
lebarNya = 5;
panjangNya = 10;
}
PersegiPanjang::~PersegiPanjang()
{}
int main()
{
using
namespace std;
PersegiPanjang persegiPanjang;
cout << "persegiPanjang berukuran " << persegiPanjang.GetPanjang()
<< " meter panjang."
<< endl;
cout << "persegiPanjang berukuran "
<< persegiPanjang.GetLebar()
<< " meter lebar."
<< endl;
persegiPanjang.SetPanjang(20);
persegiPanjang.SetLebar(10);
cout << "persegiPanjang berukuran "
<< persegiPanjang.GetPanjang()
<< " meter panjang."
<< endl;
cout << "persegiPanjang berukuran "
<< persegiPanjang.GetLebar()
<< " meter lebar. "
<< endl;
getch();
return
0;
}
|
persegiPanjang berukuran 10 meter panjang.
persegiPanjang berukuran 5 meter lebar.
persegiPanjang berukuran 20 meter panjang.
persegiPanjang berukuran 10 meter lebar.
10. Demonstrasikanlah
penggunaan pointer const pada objek const dalam sebuah program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
//pointerConst.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class PersegiPanjang
{
public:
PersegiPanjang();
~PersegiPanjang();
void
SetPanjang(int panjang)
{ this->panjangNya
= panjang; }
int
GetPanjang() const
{ return
this->panjangNya; }
void
SetLebar(int lebar)
{ lebarNya = lebar; }
int
GetLebar() const
{ return
lebarNya; }
private:
int
panjangNya;
int
lebarNya;
};
PersegiPanjang::PersegiPanjang()
{
lebarNya = 5;
panjangNya = 10;
}
PersegiPanjang::~PersegiPanjang()
{}
int main()
{
PersegiPanjang* pPersegiPanjang = new PersegiPanjang;
const
PersegiPanjang * pPersegiConst = new
PersegiPanjang;
PersegiPanjang * const pPtrConst = new
PersegiPanjang;
cout << "Lebar pPersegiPanjang: "
<< pPersegiPanjang->GetLebar()
<< " meter" << endl;
cout << "Lebar pPersegiConst: "
<< pPersegiConst->GetLebar()
<< " meter" << endl;
cout << "Lebar pPtrConst: "
<< pPtrConst->GetLebar()
<< " meter" << endl;
pPersegiPanjang->SetLebar(10);
// pPersegiConst->SetWidth(10);
pPtrConst->SetLebar(10);
cout << "Lebar pPersegiPanjang: "
<< pPersegiPanjang->GetLebar()
<< " meter\n";
cout << "Lebar pPersegiConst: "
<< pPersegiConst->GetLebar()
<< " meter\n";
cout << "Lebar pPtrConst:
" << pPtrConst->GetLebar()
<< " meter\n";
getch();
return
0;
}
|
Lebar pPersegiPanjang: 5 meter
Lebar pPersegiConst: 5 meter
Lebar pPtrConst: 5 meter
Lebar pPersegiPanjang: 10 meter
Lebar pPersegiConst: 5 meter
Lebar pPtrConst: 10 meter
11. Demonstrasikanlah
penciptaan dan penggunaan referensi dalam sebuah program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//penggunaanReferensi.cpp
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
int
intSatu;
int
&rSuatuRef = intSatu;
intSatu = 5;
cout << "intSatu: " << intSatu << endl;
cout << "rSuatuRef: " << rSuatuRef << endl;
rSuatuRef = 7;
cout << "intSatu: " << intSatu << endl;
cout << "rSuatuRef: " << rSuatuRef << endl;
getch();
return
0;
}
|
intSatu: 5
rSuatuRef: 5
intSatu: 7
rSuatuRef: 7
12. Demonstrasikanlah
penggunaan operator alamat & pada referensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//alamatPadaRef.cpp
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
int
intSatu;
int
&rSuatuRef = intSatu;
intSatu = 5;
cout << "intSatu: " << intSatu << endl;
cout << "rSuatuRef: " << rSuatuRef << endl;
cout << "&intSatu: " << &intSatu
<< endl;
cout << "&rSuatuRef: " <<
&rSuatuRef << endl;
getch();
return
0;
}
|
intSatu: 5
rSuatuRef: 5
&intSatu: 003AF8D8
&rSuatuRef: 003AF8D8
13. Variabel referensi
tidak dapat ditugaskan-ulang. Variabel referensi merupakan nama alias bagi
variabel targetnya. Demonstrasikan hal ini dalam sebuah program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
//PenugasanUlangRef.cpp
#include <iostream>
#include <conio.h>
int main()
{
using
namespace std;
int
intSatu;
int
&rSuatuRef = intSatu;
intSatu = 5;
cout << "intSatu: " << intSatu << endl;
cout << "rSuatuRef: " << rSuatuRef << endl;
cout << "&intSatu: " << &intSatu
<< endl;
cout << "&rSuatuRef: " <<
&rSuatuRef << endl;
int
intDua = 8;
rSuatuRef = intDua;
cout << "\nintSatu: " << intSatu << endl;
cout << "intDua: " << intDua << endl;
cout << "rSuatuRef: " << rSuatuRef << endl;
cout << "&intSatu: " << &intSatu
<< endl;
cout << "&intDua: " << &intDua
<< endl;
cout << "&rSuatuRef: " <<
&rSuatuRef << endl;
getch();
return
0;
}
|
intSatu: 5
rSuatuRef: 5
&intSatu: 0019FC94
&rSuatuRef: 0019FC94
intSatu: 8
intDua: 8
rSuatuRef: 8
&intSatu: 0019FC94
&intDua: 0019FC7C
&rSuatuRef: 0019FC94
14. Demonstrasikanlah
bagaimana mereferensi sebuah objek dalam program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
//ReferensiObjek.cpp
#include <iostream>
#include <conio.h>
class KucingSederhana
{
public:
KucingSederhana(int umur, int berat);
~KucingSederhana(){}
int
GetUmur() const { return umurNya; }
int
GetBerat() const { return beratNya; }
private:
int
umurNya;
int
beratNya;
};
KucingSederhana::KucingSederhana(int umur, int berat)
{
umurNya = umur;
beratNya = berat;
}
int main()
{
KucingSederhana Meonk(5,8);
KucingSederhana & rKucing = Meonk;
std::cout << "Meonk berusia: ";
std::cout << Meonk.GetUmur()
<< " tahun."
<< std::endl;
std::cout << "Dan Meonk memiliki berat: ";
std::cout << rKucing.GetBerat()
<< " kg." <<
std::endl;
getch();
return
0;
}
|
Meonk berusia: 5 tahun.
Dan Meonk memiliki berat: 8 kg.
15. Demonstrasikanlah
pelewatan dengan nilai dalam program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//pelewatanDenganNilai.cpp
#include <iostream>
#include <conio.h>
using namespace std;
void tukar(int x, int y);
int main()
{
int
x = 5, y = 10;
cout << "Main. Sebelum tukar, x: "
<< x << " y: " << y << endl;
tukar(x,y);
cout << "Main. Sesudah tukar, x: "
<< x << " y: " << y << endl;
getch();
return
0;
}
void tukar (int x, int y)
{
int
temp;
cout << "Tukar. Sebelum tukar, x: "
<< x << " y: " << y << endl;
temp = x;
x = y;
y = temp;
cout << "Tukar. Sesudah tukar, x: "
<< x << " y: " << y << endl;
}
|
Main. Sebelum tukar, x: 5 y: 10
Tukar. Sebelum tukar, x: 5 y: 10
Tukar. Sesudah tukar, x: 10 y: 5
Main. Sesudah tukar, x: 5 y: 10
16. Demonstrasikanlah
pelewatan dengan referensi menggunakan pointer dalam program C++.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//pelewatanDenganReferensi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
void tukar(int *x, int *y);
int main()
{
int
x = 5, y = 10;
cout << "Main. Sebelum tukar, x: "
<< x << " y: " << y << endl;
tukar(&x, &y);
cout << "Main. Sesudah tukar, x: "
<< x << " y: " << y << endl;
getch();
return
0;
}
void tukar (int *px,
int *py)
{
int
temp;
cout << "Tukar. sebelum tukar, *px: "
<< *px <<
" *py: " << *py << endl;
temp = *px;
*px = *py;
*py = temp;
cout << "Tukar. Sesudah tukar, *px: "
<< *px <<
" *py: " << *py << endl;
}
|
Main. Sebelum tukar, x: 5 y: 10
Tukar. sebelum tukar, *px: 5 *py: 10
Tukar. Sesudah tukar, *px: 10 *py: 5
Main. Sesudah tukar, x: 10 y: 5
17. Tulis-ulanglah
program pada soal nomor 16 menggunakan referensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
//pelewatanDenganReferensiSaja.cpp
#include <iostream>
#include <conio.h>
using namespace std;
void tukar(int
&x, int &y);
int main()
{
int
x = 5, y = 10;
cout << "Main. Sebelum tukar, x: "
<< x << " y: " << y << endl;
tukar(x, y);
cout << "Main. Sesudah tukar, x: "
<< x << " y: " << y << endl;
getch();
return
0;
}
void tukar (int
&rx, int &ry)
{
int
temp;
cout << "Tukar. sebelum tukar, rx: " << rx <<
" ry: " << ry << endl;
temp = rx;
rx = ry;
ry = temp;
cout << "Tukar. Sesudah tukar, rx: " << rx <<
" ry: " << ry << endl;
}
|
Main. Sebelum tukar, x: 5 y: 10
Tukar. sebelum tukar, rx: 5 ry: 10
Tukar. Sesudah tukar, rx: 10 ry: 5
Main. Sesudah tukar, x: 10 y: 5
18. Demonstrasikanlah
bagaimana menghasilkan nilai balik menggunakan pointer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
//NilaiBalikPointer.cpp
#include <iostream>
#include <conio.h>
using namespace std;
short Faktor(int n, int* pKuadrat, int* pKubik);
int main()
{
int
angka, kuadrat, kubik;
short
error;
cout << "Masukkan sebuah angka (0 - 20): ";
cin >> angka;
error = Faktor(angka, &kuadrat,
&kubik);
if
(!error)
{
cout << "angka: " << angka <<
endl;
cout << "kuadrat: " << kuadrat
<< endl;
cout << "kubik: " << kubik <<
endl;
}
else
cout << "Error ditemukan!!" << endl;
getch();
return
0;
}
short Faktor(int n, int *pKuadrat, int *pKubik)
{
short
Nilai = 0;
if
(n > 20)
Nilai = 1;
else
{
*pKuadrat = n*n;
*pKubik = n*n*n;
Nilai = 0;
}
return
Nilai;
}
|
Masukkan sebuah angka (0 - 20): 17
angka: 17
kuadrat: 289
kubik: 4913
19. Demonstrasikanlah
bagaimana menghasilkan nilai balik menggunakan referensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
//NilaiBalikReferensi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
enum KODE_ERROR { SUKSES, ERROR };
KODE_ERROR Faktor(int, int&, int&);
int main()
{
int
angka, kuadrat, kubik;
KODE_ERROR hasil;
cout << "Masukkan sebuah angka (0 - 20): ";
cin >> angka;
hasil = Faktor(angka, kuadrat, kubik);
if
(hasil == SUKSES)
{
cout << "angka: " << angka <<
endl;
cout << "kuadrat: " << kuadrat
<< endl;
cout << "kubik: " << kubik <<
endl;
}
else
cout << "Error ditemukan!!" <<
endl;
getch();
return
0;
}
KODE_ERROR Faktor(int n, int &rKuadrat, int
&rKubik)
{
if
(n > 20)
return
ERROR;
else
{
rKuadrat = n*n;
rKubik = n*n*n;
return
SUKSES;
}
}
|
Masukkan sebuah angka (0 - 20): 16
angka: 16
kuadrat: 256
kubik: 4096
20. Demonstrasikanlah
pelewatan objek dengan referensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
//PelewatanObjekDenganReferensi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class KucingSederhana
{
public:
KucingSederhana (); // konstruktor
KucingSederhana(KucingSederhana&); //
konstruktor penyalin
~KucingSederhana(); // destruktor
};
KucingSederhana::KucingSederhana()
{
cout << "Konstruktor KucingSederhana..." << endl;
}
KucingSederhana::KucingSederhana(KucingSederhana&)
{
cout << "Konstruktor penyalin KucingSederhana..."
<< endl;
}
KucingSederhana::~KucingSederhana()
{
cout << "Destruktor KucingSederhana..." << endl;
}
KucingSederhana FungsiSatu
(KucingSederhana aKucing);
KucingSederhana* FungsiDua
(KucingSederhana *aKucing);
int main()
{
cout << "Menciptakan sebuah kucing..." << endl;
KucingSederhana Meonk;
cout << "Memanggil FungsiSatu..." << endl;
FungsiSatu(Meonk);
cout << "Memanggil FungsiDua..." << endl;
FungsiDua(&Meonk);
getch();
return
0;
}
// FungsiSatu,pelewatan
dengan nilai
KucingSederhana
FungsiSatu(KucingSederhana aKucing)
{
cout << "FungsiSatu. Memberikan nilai balik... "
<< endl;
return
aKucing;
}
// FungsiDua, pelewatan
dengan referensi
KucingSederhana* FungsiDua
(KucingSederhana *aKucing)
{
cout << "FungsiDua. Memberikan nilai balik... "
<< endl;
return
aKucing;
}
|
Menciptakan sebuah kucing...
Konstruktor KucingSederhana...
Memanggil FungsiSatu...
Konstruktor penyalin KucingSederhana...
FungsiSatu. Memberikan nilai balik...
Konstruktor penyalin KucingSederhana...
Destruktor KucingSederhana...
Destruktor KucingSederhana...
Memanggil FungsiDua...
FungsiDua. Memberikan nilai balik...
21. Demonstrasikanlah
bagaimana melakukan pelewatan sebuah pointer kepada suatu objek konstan.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
//PelewatanPointerKpdObjekKonstan.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class KucingSederhana
{
public:
KucingSederhana (); // konstruktor
KucingSederhana(KucingSederhana&); //
konstruktor penyalin
~KucingSederhana(); // destruktor
int
GetUmur() const { return umurNya; }
void
SetUmur(int umur) { umurNya = umur; }
private:
int
umurNya;
};
KucingSederhana::KucingSederhana()
{
cout << "Konstruktor KucingSederhana..." << endl;
umurNya = 1;
}
KucingSederhana::KucingSederhana(KucingSederhana&)
{
cout << "Konstruktor penyalin KucingSederhana..."
<< endl;
}
KucingSederhana::~KucingSederhana()
{
cout << "Destruktor KucingSederhana..." << endl;
}
const KucingSederhana * const
FungsiDua
(const KucingSederhana * const
aKucing);
int main()
{
cout << "Membuat sebuah kucing..." << endl;
KucingSederhana Meonk;
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
int
umur = 5;
Meonk.SetUmur(umur);
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
cout << "Memanggil FungsiDua..."
<< endl;
FungsiDua(&Meonk);
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
getch();
return
0;
}
// FungsiDua, melewatkan
sebuah pointer konstan
const KucingSederhana * const
FungsiDua
(const KucingSederhana * const
aKucing)
{
cout << "FungsiDua. Menghasilkan
nilai balik..." << endl;
cout << "Meonk sekarang berumur "
<< aKucing->GetUmur();
cout << " tahun " << endl;
return
aKucing;
}
|
Membuat sebuah kucing...
Konstruktor KucingSederhana...
Meonk berumur 1 tahun
Meonk berumur 5 tahun
Memanggil FungsiDua...
FungsiDua. Menghasilkan nilai balik...
Meonk sekarang berumur 5 tahun
Meonk berumur 5 tahun
22. Demonstrasikanlah
bagaimana melakukan pelewatan sebuah referensi kepada suatu objek konstan.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
//PelewatanReferensiKpdObjek.cpp
#include <iostream>
#include <conio.h>
using namespace std;
class KucingSederhana
{
public:
KucingSederhana (); // konstruktor
KucingSederhana(KucingSederhana&); //
konstruktor penyalin
~KucingSederhana(); // destruktor
int
GetUmur() const { return umurNya; }
void
SetUmur(int umur) { umurNya = umur; }
private:
int
umurNya;
};
KucingSederhana::KucingSederhana()
{
cout << "Konstruktor KucingSederhana..."
<< endl;
umurNya = 1;
}
KucingSederhana::KucingSederhana(KucingSederhana&)
{
cout << "Konstruktor penyalin KucingSederhana..." <<
endl;
}
KucingSederhana::~KucingSederhana()
{
cout << "Destruktor KucingSederhana..."
<< endl;
}
const KucingSederhana & FungsiDua (const KucingSederhana & aKucing);
int main()
{
cout << "Membuat sebuah kucing..." << endl;
KucingSederhana Meonk;
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
int
umur = 5;
Meonk.SetUmur(umur);
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
cout << "Memanggil FungsiDua..."
<< endl;
FungsiDua(Meonk);
cout << "Meonk berumur " ;
cout << Meonk.GetUmur();
cout << " tahun" << endl;
getch();
return
0;
}
// FungsiDua, melewatkan
sebuah pointer konstan
const KucingSederhana & FungsiDua (const KucingSederhana &
aKucing)
{
cout << "FungsiDua. Menghasilkan
nilai balik..." << endl;
cout << "Meonk sekarang berumur " <<
aKucing.GetUmur();
cout << " tahun " << endl;
return
aKucing;
}
|
Membuat sebuah kucing...
Konstruktor KucingSederhana...
Meonk berumur 1 tahun
Meonk berumur 5 tahun
Memanggil FungsiDua...
FungsiDua. Menghasilkan nilai balik...
Meonk sekarang berumur 5 tahun
Meonk berumur 5 tahun
23. Tulislah sebuah
program C++ yang mendemonstrasikan bahwa variabel array merupakan variabel
pointer.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
//arrayMerupakanPointer.cpp
#include <iostream>
#include <conio.h>
using namespace std;
typedef int* IntPtr;
int main( )
{
IntPtr p;
int
a[10];
int
indeks;
for
(indeks = 0; indeks < 10; indeks++)
a[indeks] = indeks;
p = a;
for
(indeks = 0; indeks < 10; indeks++)
cout << p[indeks] <<
" ";
cout << endl;
for
(indeks = 0; indeks < 10; indeks++)
p[indeks] = p[indeks] + 1;
for (indeks = 0; indeks < 10;
indeks++)
cout << a[indeks] <<
" ";
cout << endl;
getch();
return
0;
}
|
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
24. Tulislah sebuah
program C++ untuk mendemonstrasikan array dinamis.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
//arrayDinamis.cpp
#include <iostream>
#include <cstdlib>
#include <cstddef>
#include <conio.h>
typedef int*
IntArrayPtr;
void isi_array(int
a[], int ukuran);
int main( )
{
using namespace std;
cout << "Program ini mengisi array melalui keyboard.\n";
int
ukuran_array;
cout << "Berapa besar ukuran array?: ";
cin >> ukuran_array;
IntArrayPtr a;
a = new
int[ukuran_array];
isi_array(a, ukuran_array);
cout << "Elemen-elemen array adalah: \n";
for
(int indeks = 0; indeks <
ukuran_array; indeks++)
cout << a[indeks] <<
" ";
cout << endl;
delete
[] a;
getch();
return
0;
}
void isi_array(int
a[], int ukuran)
{
using namespace std;
cout << "Masukkan sebanyak " << ukuran << " buah integer.\n";
for
(int indeks = 0; indeks <
ukuran; indeks++)
cin >> a[indeks];
}
|
Program ini mengisi array melalui keyboard.
Berapa besar ukuran array?: 5
Masukkan sebanyak 5 buah integer.
12 34 54 43 32
Elemen-elemen array adalah:
12 34 54 43 32
25. Tulislah sebuah
program C++ untuk mendemonstrasikan array dinamis dua-dimensi.
Penyelesaian:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//arrayDinamisDuaDimensi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
typedef int*
IntArrayPtr;
int main( )
{
int
d1, d2;
cout << "Masukkan dimensi baris dan kolom dari array:\n";
cin >> d1 >> d2;
IntArrayPtr *m = new IntArrayPtr[d1];
int
i, j;
for
(i = 0; i < d1; i++)
m[i] = new int[d2];
//m sekarang merupakan array berukuran d1
kali d2.
cout << "Masukkan sejumlah " << d1 << " baris dengan "
<< d2 << " buah integer pada tiap barisnya:\n";
for
(i = 0; i < d1; i++)
for
(j = 0; j < d2; j++)
cin >> m[i][j];
cout << "Array dua-dimensi:\n";
for
(i = 0; i < d1; i++)
{
for
(j = 0; j < d2; j++)
cout << m[i][j] <<
" ";
cout << endl;
}
for
(i = 0; i < d1; i++)
delete[]
m[i];
delete[]
m;
getch();
return
0;
}
|
Masukkan dimensi baris dan kolom dari array:
3 4
Masukkan sejumlah 3 baris dengan 4 buah integer pada tiap barisnya:
32 34 33 32
43 45 65 76
55 76 87 98
Array dua-dimensi:
32 34 33 32
43 45 65 76
55 76 87 98
No comments:
Post a Comment