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