PENANGANAN EKSEPSI
Soal & Penyelesaian
1.
Tulislah sebuah program C++ untuk mendemonstrasikan
suatu kasus pemrograman tanpa penanganan eksepsi.
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
|
//tanpaPenangananEksepsi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int donut, susu;
double dpg;
cout
<< "Masukkan jumlah donut:\n";
cin
>> donut;
cout
<< "Masukkan jumlah gelas
susu:\n";
cin
>> susu;
if (susu <= 0)
{
cout << donut << " donut, dan tidak ada susu!\n"
<< "Pergi beli susu!.\n";
}
else
{
dpg = donut/static_cast<double>(susu);
cout << donut << " donut.\n"
<< susu << " gelas susu.\n"
<< "Anda memiliki sejumlah " << dpg
<< " donut untuk tiap gelas susu.\n";
}
cout
<< "Akhir program.\n";
getch();
return 0;
}
|
Masukkan jumlah donut:
5
Masukkan jumlah gelas susu:
4
5 donut.
4 gelas susu.
Anda memiliki sejumlah 1.25 donut untuk tiap
gelas susu.
Akhir program.
2.
Tulislah sebuah program C++ untuk mendemonstrasikan
suatu kasus pemrograman dengan penanganan eksepsi.
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
|
//denganPenangananEksepsi.cpp
//tanpaPenangananEksepsi.cpp
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
int
donut, susu;
double
dpg;
try
{
cout << "Masukkan jumlah donut:\n";
cin >> donut;
cout << "Masukkan jumlah gelas susu:\n";
cin >> susu;
if
(susu <= 0)
throw donut;
dpg =
donut/static_cast<double>(susu);
cout << donut << " donut.\n"
<< susu << " gelas susu.\n"
<< "Anda memiliki sejumlah
" << dpg
<< " donut untuk tiap gelas susu.\n";
}
catch(int e)
{
cout << e << " donut, dan tidak ada susu!\n"
<< "Pergi beli susu!.\n";
}
cout << "Akhir program.\n";
getch();
return
0;
}
|
Masukkan jumlah donut:
5
Masukkan jumlah gelas susu:
4
5 donut.
4 gelas susu.
Anda memiliki sejumlah 1.25 donut untuk tiap
gelas susu.
Akhir program.
Masukkan jumlah donut:
12
Masukkan jumlah gelas susu:
0
12 donut, dan tidak ada susu!
Pergi beli susu!.
Akhir program.
3.
Tulislah sebuah program C++ untuk mendefinisikan kelas
eksepsi Anda sendiri.
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
|
//kelasEksepsiSendiri.cpp
#include
<iostream>
#include <conio.h>
using namespace std;
class TdkAdaSusu
{
public:
TdkAdaSusu();
TdkAdaSusu(int brp_banyak);
int baca_donut();
private:
int hitung;
};
int main()
{
int donut, susu;
double dpg;
try
{
cout <<
"Masukkan jumlah donut:\n";
cin >>
donut;
cout <<
"Masukkan jumlah gelas susu:\n";
cin >>
susu;
if (susu <= 0)
throw TdkAdaSusu(donut);
dpg = donut/static_cast<double>(susu);
cout <<
donut << " donut.\n"
<<
susu << " gelas susu.\n"
<<
"Anda memiliki sejumlah
" << dpg
<<
" donut untuk tiap gelas susu.\n";
}
catch(TdkAdaSusu e)
{
cout <<
e.baca_donut() << " donut, dan
tidak ada susu!\n"
<<
"Pergi beli susu!.\n";
}
cout <<
"Akhir program.";
getch();
return 0;
}
TdkAdaSusu::TdkAdaSusu()
{}
TdkAdaSusu::TdkAdaSusu(int
brp_banyak) : hitung(brp_banyak)
{}
int TdkAdaSusu::baca_donut()
{
return hitung;
}
|
Masukkan jumlah donut:
5
Masukkan jumlah gelas susu:
4
5 donut.
4 gelas susu.
Anda memiliki sejumlah 1.25 donut untuk tiap
gelas susu.
Akhir program.
Masukkan jumlah donut:
12
Masukkan jumlah gelas susu:
0
12 donut, dan tidak ada susu!
Pergi beli susu!.
Akhir program.
4.
Tulislah sebuah program C++ untuk mendemonstrasikan
penangkapan beberapa eksepsi.
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
74
75
76
77
|
//penangkapanBeberapaEksepsi.cpp
#include
<iostream>
#include
<string>
#include
<conio.h>
using namespace std;
class AngkaNegatif
{
public:
AngkaNegatif();
AngkaNegatif(string antar_daku_ke_blok_catch);
string baca_pesan();
private:
string pesan;
};
class PembagianNol
{};
int main()
{
int bus, penumpang;
double busPerPenumpang;
try
{
cout <<
"Masukkan jumlah bus:\n";
cin >>
bus;
if (bus < 0)
throw AngkaNegatif("Bus, tidak riil.");
cout <<
"Masukkan jumlah penumpang: \n";
cin >>
penumpang;
if (penumpang < 0)
throw AngkaNegatif("Penumpang, tidak riil.");
if (penumpang != 0)
busPerPenumpang = bus/static_cast<double>(penumpang);
else
throw PembagianNol();
cout <<
"Setiap bus memuat sejumlah
"
<<
busPerPenumpang << " penumpang.\n";
}
catch(AngkaNegatif e)
{
cout <<
"Tidak bisa memiliki nilai
negatif pada "
<<
e.baca_pesan() << endl;
}
catch(PembagianNol)
{
cout <<
"Kirim pertolongan.\n";
}
cout <<
"Akhir program.\n";
getch();
return 0;
}
AngkaNegatif::AngkaNegatif()
{}
AngkaNegatif::AngkaNegatif(string antar_daku_ke_blok_catch)
: pesan(antar_daku_ke_blok_catch)
{}
string AngkaNegatif::baca_pesan()
{
return pesan;
}
|
Masukkan jumlah bus:
12
Masukkan jumlah penumpang:
120
Setiap bus memuat sejumlah 10 penumpang.
Akhir program.
Masukkan jumlah bus:
-1
Tidak bisa memiliki nilai negatif pada Bus,
tidak riil.
Akhir program.
Masukkan jumlah bus:
12
Masukkan jumlah penumpang:
-5
Tidak bisa memiliki nilai negatif pada
Penumpang, tidak riil.
Akhir program.
5.
Tulislah sebuah program C++ untuk mendemonstrasikan
sebuah eksepsi di dalam suatu fungsi.
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
|
//eksepsiDalamFungsi.cpp
#include <iostream>
#include <cstdlib>
#include <conio.h>
using namespace std;
class PembagianNol
{};
double pembagian_aman(int
atas, int bawah) throw (PembagianNol);
int main()
{
int
pembilang;
int
penyebut;
double
hasilBagi;
cout << "Masukkan pembilang:\n";
cin >> pembilang;
cout << "Masukkan penyebut:\n";
cin >> penyebut;
try
{
hasilBagi = pembagian_aman(pembilang,
penyebut);
}
catch(PembagianNol)
{
cout << "Error: Pembagian nol!\n"
<< "Program dibatalkan.\n";
exit(0);
}
cout << pembilang << "/" << penyebut
<< " = " << hasilBagi << endl;
cout << "Akhir program.\n";
getch();
return 0;
}
double pembagian_aman(int
atas, int bawah) throw (PembagianNol)
{
if
(bawah == 0)
throw
PembagianNol();
return
atas/static_cast<double>(bawah);
}
|
Masukkan pembilang:
5
Masukkan penyebut:
20
5/20 = 0.25
Akhir program.
Masukkan pembilang:
12
Masukkan penyebut:
0
Error: Pembagian nol!
Program dibatalkan.
No comments:
Post a Comment