LAPORAN AKHIR PRAKTIKUM ALGORITMA DAN PEMPROGRAMAN II
NAMA
: SUPRIYANDI
NIM
: DBC 113 170
KELAS
:D
MODUL
: V (Operator Overloading dan Exception Handling)
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2014
BAB I TUJUAN DAN LANDASAN TEORI
I. Tujuan Setelah menyelesaikan modul ini, mahasiswa diharapkan mampu : Mengimplementasikan Exception Handling Mengimplementasikn operator overloading
II. Landasan Teori Jarang sekali sebuah program dibuat dapat berjalan dengan sukses pada saat pertama sekali di jalankan.kesalahan sering terjadi pada saat perancangan atau pemprograman. Kesalahan tersebut dikategorikan menjadi tiga bagian, yaitu : Syntac errors-mengakibatkan kesalahan kompilasi. Semantic errors-program menghasilkan keluaran yang tidak sesuaidengan harapan. Runtime errors –kebanyakan mengakibatkan terminasi program secara tidak normal atau bahkan sistem crash Berikut ini merupakan contoh runtime error. Pembagian bilangan dengan nol. Akses elemen yang berada di luar indeks array Menggunakan nilai negatif untuk ukuran array Setiap program dalam berada dapat suatu kondisi yang tidak normal-error Conditions. Program yang ‘baik’ harus dapat menangani kondisi ini. Exception merupakan suatu keadaan yang disebabkan oleh runtime error dalam program. Memungkinkan kesalahan ditangani tanpa harus ‘mengotori’ program (dengan runtin yang menagani kesalahan). Memungkinkan pemisahan penanganan kesalahan dengan program utama (main business logic). Suatu fungsi dapat memberi tanda suatu kesalahan dengan melempar suatu exception - throw. Fungsi pemangil dapat menyerahkan kendali ke exception handler dengan menangkap (chating) exception - try, catch. Berikut ini merupakan blok try-chatch.
try{ intruksi yang berpotensi menghailkan exception } Catch (type_exception e){ Intruksi untuk menangani exception }
Seperti bahasa tingkat yang lain,c++ memiliki beberapa operator +,,\,*,<<,>>,&,[],=, dll. Operator ini telah didefinisikan (pre-defined) dan digunakan untuk tipe tertentu. Misal: operator ‘+’ hanya dapat untuk tipe dasar seperti integer, float, dll. Kadang-kadang diperlukan untuk meredefenisi operator ini untuk tipe bentukan. Misalnya Kelas Complex a dan b, apakah bisa dilakukan a+b?
Manipulasi
bilangan
kompleks
lebih
mudah
apabila
dapat
memperlakukannya seperti pada tipe dasar. Sehingga dapat dilakukan, hal-hal seperti Complex a (2,4); Complex b (4,5); . . . Complex c = a + b;
Bukannya Complex a(2,4); Complex b(4,5); . . . Complex c = a.tambah(b);
Operator yang digunakan pada kelas dalam C++ dinyatakan dalam pemanggilan fungsi. Jenis operator ada dua yaitu operator uner operator biner. Operator uner hanya membutuhkan satu argumen, misalnya ++, --, ~ . Operator biner membutuhkan dua argument,misalnya +,-,/,*. Operator dalam C++ diimplementasikan dengan pemanggilan fungsi. User dapat meredefinisikan arti suatu operator pada suatu kelas dengan melakukan redefinisi method yang berkaitan dengan operator tersebut. Tidak semua operator
bisa di- overload.Ada Batasan-batasan
yang bisa dilakukan dalam operator
overloading. Berikut ini merupakan daftar operator yang dapat di – overload dan yang tidak dapat di – overload. Operator yang dapat di-overload +
-
*
/
%
^
&
~
!
=
<
>
+=
-
/=
%=
^=
&=
I=
<<
>>
>>=
<<=
===
!=
<=
>=
&&
I I
++
--
->*
,
->
[ ]
new
delete
new[]
delete[]
( )
I =
*=
Operator yang tidak dapat di-overload .
.*
: :
? :
Sizeof
BAB II LANGKAH KERJA
III. Langkah Kerja Buatlah program seperti dibawah ini! Compelx.cpp #include #include Class complex { double real; double imaginer; public: complex(double re=0, double im=0) { real = re; imaginer = im; } Complex operator-( ) { Complex result; result.real = -real; result.imaginer = -imaginer; return result; } Complex operator+(complex c) { Complex result; result.real = real + c.real;
result.imaginer = imaginer + c.imaginer; return result; } Complex operator-(complex c) { Complex result; result.real = real - c.real; result.imaginer = imaginer - c.imaginer; return result; } Void display () { Cout << ‘( << real << ‘,’ <<
imaginer << ‘)’ << endl;
} }; int main ( ) { complex z (1,2), w(3,4), b); complex a = z + w; a.display ( ); a = z – w; a.display ( ); b=-a; b.display ( ); }
Buatlah sebuah program kalkulator sederhana dengan dua operand dan operator yang digunakan adalah : + , - , * , / , > , dan <
BAB III PEMBAHASAN
Berikut ini adalah pembahasan program pertama (complex.cpp), dan program kedua yang merupakan tugas praktikum (kalkulator.cpp). Berikut penjelasannya : Program Pertama (complex.cpp)
Tujuan dari program ini adalah menampilkan sebuah matriks. Pada listing program pertama ini terdapat kesalahan pada #include , itulah yang membuat program pertama ini tidak dapat dijalankan. Untuk memperbaiki kesalahan atau errors pada listing program adalah hanya menambahkan (.h) saja pada belakang kata iostream. Listing program pertama ini adalah sebagai berikut : #include #include class complex { double real; double imaginer; public: complex(double re= 0, double im=0) { real = re; imaginer = im; } complex operator-() { complex result; result.real =-real; result.imaginer = -imaginer;
return result; } complex operator+(complex c) { complex result; result.real = real + c.real; result.imaginer = imaginer + c.imaginer; return result; } complex operator-(complex c) { complex result; result.real = real - c.real; result.imaginer = imaginer - c.imaginer; return result; } void display() { cout << '(' << real << ',' << imaginer << ')' << endl; } }; int main() { complex z(1,2), w(3,4), b;
complex a = z + w; a.display(); a = z - w; a.display(); b=-a; b.display(); }
Maksudnya ditambahkan (.h) itu adalah untuk menjelaskan bahwa iosteram itu adalah bagian dari header program. Jika, iostream tidak ditambahkan (.h), maka yang terjadi adalah pada listing void display akan terdapat atau ditemukan errors pada cout dan seterusnya. complex operator-() { complex result; result.real =-real; result.imaginer = -imaginer; return result; }
Listing di atas adalah untuk membuat operator negatif (-), yang menyatakan bahwa angka atau nilai matriks itu adalah negatif. complex operator+(complex c) { complex result; result.real = real + c.real; result.imaginer = imaginer + c.imaginer; return result; }
Listing di atas adalah untuk membuat operator tambah (+), yang menjumlahkan antara kedua angka atau nilai matriks, sehingga mendapatkan hasil dari penjumlahan kedua angka atau nilai tersebut.
complex operator-(complex c) { complex result; result.real = real - c.real; result.imaginer = imaginer - c.imaginer; return result; }
Listing di atas adalah untuk membuat operator kurang (-), yang mengurangkan kedua angka atau nilai matriks, sehingga mendapatkan hasil dari pengurangan kedua angka atau nilai matriks tersebut. void display() { cout << '(' << real << ',' << imaginer << ')' << endl; }
Listing di atas adalah untuk menampilkan tanda kurung buka, koma dan kurung tutup untuk angka atau nilai matriks tersebut. int main() { complex z(1,2), w(3,4), b; complex a = z + w; a.display(); a = z - w; a.display(); b=-a; b.display(); }
Listing di atas merupakan proses pemanggilan data dan menentukan data tersebut untuk ditampilkan pada outputnya, sedikit saja terdapat kesalahan pada operatornya sangat berpengaruh pada main() untuk menampilkan datanya atau bisa juga akan terjadi errors pada listing programnya. Demikianlah penjelasan tentang listing program pertama ini. Program Kedua (TUGAS !)
Pada Program yang kedua ini kita diminta untuk membuat program kalkulator kalkulator sederhana dengan dua operand dan operator yang digunakan adalah : + , - , * , / , > , dan <. Program kalkulator dibawah menggunakan include stdlib ,iostream dan math yang merupakan satu jenis pengarah preprocessor yang digunakan untuk membaca file yang dinamakan file judul (header file).
merupakan suatu class dengan nama class kalkulator yang merupakan kelas induk Dimana didalam kelas ini terdapat public dan menu pilihannya.
Merupakan suatu variabel nilai1, nilai2 dan jumlah yang bertipe float.
Pada program dibawah menggunakan void kalkulator dan cout merupakan sebuah objek di dalam C++, yang digunakan untuk mengarahkan data ke dalam standar output dengan menu pilihan penjumlahan ,pengurangan, pembagian, perkalian, kurangdari dan lebih dari. Fungsi Tanda <<, yang diketahui sebagai operator pemasukan (insertion operators). Tanda tersebut mengatakan kepada kompiler agar segera menghasilkan output sesuai dengan input yang dimasukkan.
Merupakan suatu proses dalam program yang mana void kalkulator tambah dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan hasil tambah.
Merupakan suatu proses dalam program yang mana void kalkulator kurang dari dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan hasil kurang dari
Merupakan suatu proses dalam program yang mana void kalkulator lebih dari dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan hasil lebih dari.
Merupakan suatu proses dalam program yang mana void kalkulator kurang dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan hasil kurang.
Merupakan suatu proses dalam program yang mana void kalkulator bagi dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan bagi.
Merupakan suatu proses dalam program yang mana void kalkulator kali dengan menggunakan cout dengan perintah masukkan operand 1 dan 2 dan nilai1 dan nilai2 dimasukkan maka akan mehasilkan kali.
Merupakan suatu proses untuk memasukan pilihan dengan menggunakan cin>> , Dan program dibawah menggunakan int main. Fungsi ini merupakan awal program utama. Tulisan main() merupakan nama fungsi, sedangkan bagian yang diapit dengan { dan } disebut blok (tubuh fungsi). Dalam hal ini { merupakan tanda awal blok dan } adalah tanda akhir blok.
Program dibawah menggunakan case 1 sampai dengan 6 yaitu, penjumlahan, perkurangan ,perkalian, pembagian, kurangdari dan lebihdari dan menggunakan printah cout yaitu, tekan Y untuk kembali dan tekan T untuk keluar dan menggunakan break apabila program belum berakhir dan menggunakan if dan else returnnya exit success.Dan diakhiri dengan return sebagai penutup program tersebut
Untuk kompilasi tekan ctrl+F7 dan untuk menjalankan program tekan ctrl+F5 atau gunakan fasilitas compile dan run pada menu Build.Hasilnya akan tampak seperti gambar dibawah ini:
BAB IV KESIMPULAN
Exception handling adalah penanganan kesalahan pada program yang diakibatkan oleh runtime error. Exception handling melakukan penjebakan pada setiap error yang terdapat pada program sehingga dapat ditangani dengan mudah. Sebuah program mempunyai exception handling ditandai dengan adanya fungsi catch.
Operator over-loading adalah jenis operator yang dapat di-overload. Contohnya adalah operator+ setelah melakukan overload operator ini dapat berlaku untk menjumlah tipe bilangan integer. Konsep dasar yang harus dimiliki untuk dapat melakukan overload adalah dengan mendefinisikan suatu fungsi operator.
BAB V DAFTAR PUSTAKA
2014.Modul Algoritma dan Pemrograman II . Palangkaraya:Universitas Palangkaraya.
BAB VI LAMPIRAN 1) Program Complex.cpp : Input :
Output :
2) Program kalkulator.cpp : Input :
Output :