Rabu, 10 Juni 2009

contoh pembahasan laporan alpro II: operator overloading dan exception handling

Dengan pembahasan yang gw bwt ini moga bisa membantu kalian semua dalam mengerjakan laporan.....CAYOOOOOO_<


PEMBAHASAN
complex.cpp
Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class complex
{
double real;
double imaginer;
//merupakan suatu class dengan nama &acirc;��complex&acirc;�� yang merupakan kelas induk Dimana didalam kelas ini terdapat objek real dan imaginer yang sama memiliki tipe data double.

public:
//merupakan mode access public yang nantinya akan didefinisikan anggota-anggota didalamnya dengan fungsinya masing-masing.

complex (double re=0, double im=0)
{
real = re;
imaginer = im;
}
//merupakan suatu fungsi yang terdapat pada kelompok mode access public yang memilki parameter dengan tipe data double dan masing-masing benilai nol (0). Dimana dalam fungsi ini didefinisikan objek pada class complex tadi memiliki parameter.

complex operator- ()
{
complex result;
result.real = -real;
result.imaginer = - imaginer;

return result;
}

//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator pengurangan (-). Yang didalamnya didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

complex operator+ (complex c)
{
complex result;
result.real= real + c.real;
result.imaginer = imaginer + c.imaginer;
return result;
}
//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator penjumlahan(+) dengan parameter dalam fungsi ini &acirc;��complex c&acirc;��. Yang didalamnya didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

complex operator- (complex c)
{
complex result;
result.real = real - c.real;
result.imaginer = imaginer + c.imaginer;
return result;
}
//merupakan suatu pendefinisian fungsi dalam kelompok mode access public dimana dalam fungsi ini dengan operator pengurangan (-) dengan parameter didalamnya ialah &acirc;��complex c&acirc;��. Yang didalam fungsi ini akan didefisikan objek-objeknya dengan akhir nilai objek &acirc;��result&acirc;�� akan dikembalikan ke nilai yang semula.

void display()
{
cout &lt;&lt; '(' &lt;&lt; real &lt;&lt; ', ' &lt;&lt; imaginer &lt;&lt; ')' &lt;&lt; endl;
}
};
//merupakan suatu pendefinisian fungsi dengan nama &acirc;��display&acirc;�� yang mana fungsi ini digunakan untuk mencetakan tampilan nilai dari objek real dan imaginer. Dengan perintah endl akan menyebabkan pebacaan akan di lanjutkan ke baris berikutnya.

int main() //merupakan main class ( kelas utama ) yang akan mengembalikan nilai tipe int (return 0).

{
complex z (1,2), w (3,4), b;
complex a= z+w;
a.display();
//merupakan suatu pendefinisian objek terhadap class complex yang dimana memiliki objek z, w, dan b dam dalam objek a didefinisikan nilai objek z ditambah dengan nilai objek w hingga akhirnya objek a akan melakukan pemanggilan fungsi &acirc;��display&acirc;�� untuk mencetak hasilnya. Ini merupakan untuk pendefinisian operator (+) penambahan.

a=z-w;
a.display();
//merupakan pendefinisian objek a yang akan didapat dari pengurangan nilai dari objek z dikurangi objek w. dan akan dilakukan pencetakan terhadap objek a tersebbut. Ini merupakan untuk pendefinisian operator (-) pegurangan.

b=-a;
b.display();
//merupakan suatu pendefinisian objek b yang mana akan dihasilkan dari nilai minus a yang nantinya dalam pendefinisian ini akan dilakukan pemanggilan fungsi terhadap fungsi &acirc;��displey&acirc;�� untuk mencetak nilai objek b.
} //merupakan suatu penutup dalam suatu program utama (main program)


matriks22.cpp

Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;stdlib.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class Matriks22 {
//merupakan suatu kelas dengan nama class &acirc;��matriks22&acirc;��. Dimana didalamnya nantinya akan didefinisikan kelompok-kelompok mode access.

public:
Matriks22 ();
Matriks22 (int [] [2]);
Matriks22 operator-();
Matriks22 operator+ (Matriks22);
void print();
//merupakan suatu pendefinisian suatu kelompok mode access public dengan terdapatnya defini fungsi-fungsi dalam deklarasi pada mode access public ini. Anggota-angota fungsi mode access public ini ialah fungsi &acirc;��matriks22&acirc;�� tanpa parameter lalu dilanjutkan dengan fungsi &acirc;��matriks22&acirc;�� dengan parameter yang bertipe data int. Selanjutnya fungsi yang dengan nama yang sama dengan penggunaan operator (-) pengurangan dan dilanjutkan lagi dengan fungsi masih dengan nama yang sama yang dengan penggunaan operator (+) penjumlahan. Dan akhir definisi dideklarasikan fungsi dengan nama &acirc;��print&acirc;�� yang nantinya akan digunakan untuk melakukan pencetakkan hasil.

private:
int array [2] [2];
};
//merupakan suatu definisi kelompok mode access private yang didalamnya terdapat anggota pendeklarasian array yang bertipe int dengan objeknya masing-masing 2.

Matriks22::Matriks22()
{
for (int i=0;i&lt;2;i++)
for (int j = 0; j&lt;2; j++)
array[i] [j] = 0;
}
//merupakan suatu pendeklarasian fungsi yang memiliki nama sama dengan nama kelas induk yang juga merupakan suatu kostruktor. Dalam fungsi ini didefinisikan suatu objek yang nantinya objek tersebut dideklarasikan dengan pengulangan for dengan nilai akhir sama dengan nol pada deklarasinya.

Matriks22::Matriks22 (int arr[] [2])
{
for (int i=0; i&lt;2;i++)
for (int j=0; j&lt;2;j++)
array [i] [j] = arr [i] [j];
}
//merupakan suatu pendeklarasian fungsi yang memiliki nama sama dengan nama kelas induk yang memiliki objek yang bertipe arr yang juga merupakan suatu kostruktor. Dalam fungsi ini juga didefinisikan suatu objek yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada akhirnya array dengan dua objek sama dengan yang objek dengan tipe arr.

Matriks22 Matriks22:: operator- ()
{
Matriks22 temp;
for (int i=0; i&lt;2; i++) {
for (int j=0; j&lt;2;j++) {
if (array [i] [j] !=0)
temp.array [i] [j] = -1*array[i] [j];
}
}
return temp;
}
//merupakan suatu pendeklarasian fungsi dengan operator (-) pengurangan dimana objek fungsi memiliki nama yang sama dengan nama kelas induk yang tidak memiliki parameter. Dalam fungsi ini juga didefinisikan suatu objek yang yang bertipe temp yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada akhirnya array memiliki dua objek yaitu &acirc;��i dan j&acirc;�� yang merupakan array dengan pemanggilan objek temp yang dideklarasikan sama dengan objek dengan tipe array. Dan akhir deklarasi akan dilakukan pengembalian nilai terhadap objek temp.

Matriks22 Matriks22::operator+(Matriks22 b)
{
Matriks22 temp;
for (int i=0; i&lt;2;i++)
for(int j = 0; j&lt;2;j++) {
temp.array [i] [j] = array[i] [j]+b.array[i] [j];
}
return temp;
}
//merupakan suatu pendeklarasian fungsi dengan operator (+) penjumlahan dengan parameter &acirc;��matrik2 b&acirc;�� dimana objek fungsi memiliki nama yang sama dengan nama kelas induk yang tidak memiliki parameter. Dalam fungsi ini juga didefinisikan suatu objek yang yang bertipe temp yang nantinya objek tersebut dideklarasikan dengan pengulangan for dimana pada array memiliki dua objek yaitu &acirc;��i dan j&acirc;�� dengan pemanggilan objek &acirc;��temp&acirc;�� yang nantinya merupakan dilakukan penambahan pada array dengan objek b dengan objek dengan tipe array yang juga memiliki dua objek. Dan akhir deklarasi akan dilakukan pengembalian nilai terhadap objek temp.

void Matriks22::print ()
{
for (int i=0; i&lt;2; i++) {
for (int j=0; j&lt;2; j++) {
cout &lt;&lt; array [i] [j] &lt;&lt; &quot; &quot;;
}
cout &lt;&lt; endl;
}
cout &lt;&lt; endl; Matriks22 m1 (data1),m2 (data2),m3;
}
//merupakan suatu pendeklarasian fungsi yang akan dilakukan suatu pencetakan terhadap hasil dari deklarasi fungsi-fungsi yang terdapat pada kelas matrik22. Dalam fungsi ini juga objeknya akan dideklarasikan dengan pengulangan for dimana pada akhirnya akan dilakukan pemanggilan pada fungsi matriks22 dengan objek yang telah dideklarasikan.

main ()
//merupakan main class ( kelas utama ) yang tidak akan mengembalikan nilai apapun.

{
int data1 [2] [2] = { {1,2},{4,5}};
int data2 [2] [2] = { {2,2},{2,2}};
//merupakan suatu pendefinisian objek terhadap parameter &acirc;��data1 dan data2&acirc;�� yang telah didefinisikan pada fungsi di atas dengan nilai bertipe int. dan akan dideklarasikan niai-nilai terhadap objek-objek tersebut.

m3 = -m1;
m3.print();
//merupakan suatu pendefinisian terhadap objek m3 yang akan bernilai sama dengan minus objek. Dan akan dilakukannya pencetakan terhadap nilai objek m3 dengan pemanggilan objek print.

m3 = m1 + m2;
m3.print();
//merupakan suatu pendefinisian terhadap objek m3 yang akan bernilai sama dengan objek m1 ditambah dengan objek m2. Dan akan dilakukannya pencetakan terhadap nilai objek m3 dengan pemanggilan objek print.

} //merupakan suatu penutup dalam suatu program utama (main program)


exception.cpp

Berikut ini akan dibahas dari listing program yang telah didapati outputnya:
#include &lt;iostream.h&gt;
#include &lt;conio.h&gt;
// merupakan pendefisian file header yaitu file yang akan dibaca oleh program yang merupakan file baku yang akan dicari dalam direktori-direktori yang didefinisikan oleh kompilator yang menentukan perintah instruksi yang akan digunakan didalam program utama misalnya perintah-perintah seperti cin, cout, printf, scanf dll yang dipakai oleh masing-masing header tersebut.

class DivideByZeroException {
//merupakan suatu kelas dengan nama &acirc;��class DivideByZeroException&acirc;�� yang merupakan suatu kelas induk.

public:
DivideByZeroException::DivideByZeroException()
: message (&quot;Attempted to divide by zero&quot;){}

char* what() {return message;}
//merupakan suatu pendeklarasian suatu kelompok mode access public yang diadalamnya didefinisikan suatu eksepsi yang digunakan menampilkan suatu pesan yang menyatakan error. Lalu akan dilakukan suatu pengecekan apakah bisa dilakukan manipulasi eksepsi dengan bertipe string dan akhirnya akan dilakukan pengembalian pesan yang didefinisikan tadi.

private:
char* message;
};
//merupakan suatu pendeklarasian suatu kelompok mode access private yang diadalamnya didefinisikan suatu pesan untuk eksepsi yang bertipe data string.

double quotient ( int numerator, int denominator)
{
if (denominator ==0)
throw DivideByZeroException();

return static_cast&lt;double&gt; (numerator)/ denominator;
}
//merupakan suatu pendefinisian fungsi pada eksepsi dengan tipe data double yang mana eksepsi hanya terdapat satu saja yang memiliki parameter &acirc;��numerator dan denominator&acirc;�� yang masing-masing bertipe data int. yang didefinisikan didalam fungsi ini jika nilai denominator benilai 0 maka akan dilakukannya suatu pelemparan ke eksepsi awal. Dan akhir akan dilakukan pengulangan lagi untuk data bertipe data double antara pada objek numerator atau denominator.

int main() //merupakan main class ( kelas utama ) yang akan mengembalikan nilai tipe int (return 0).

{
int a,b;
//merupakan suatu pendefinisian untuk pendeklarasian objek yang bertipe data int.

cout &lt;&lt; &quot; Input a and b : &quot;;
cin &gt;&gt; a &gt;&gt; b;
//merupakan suatu pendeklarasian untuk menampilkan suatu kalimat yan g nantinya akan diinputkan data pada saat output nanti.

try {
cout &lt;&lt; &quot;Result is&quot; &lt;&lt; quotient (a,b) &lt;&lt; endl;
}
catch (DivideByZeroException &amp;e)
{
cout &lt;&lt; &quot; Exception occured : &quot; &lt;&lt; e.what() &lt;&lt; endl;
}
//merupakan suatu definisi pada pendeklarasian blog try-catch, dimana akan dicetak nilai dari suatu eksepsi tadi jika eksepsi dengan objek a dan b pada try. Dan pada catch akan dilakukan pencetakan nilai eksepsi jika suatu inputan pembaginya nol.
getch();
//merupakan akhir dari program utama

} //merupakan suatu penutup dalam suatu program utama (main program)

Struktur Data : coding searching

Ini program struktur data tentang searching bwt temen" yg mo bkin laporan n yang pengen contoh program searching....


program searching;
uses crt;

const
nmax = 50;

type
rdata = record
nip : integer;
nama : string[30];
bagian : string[20];
gaji : longint;
end;
adata = array [1..nmax] of rdata;

var
data : adata;
plh, ch : char;
n : integer;

{prosedur untuk meminta input data}
procedure inputData(var A:adata; var ndata : integer);
var
i : integer;
begin
clrscr;
writeln('--- Input Data ---');
repeat
writeln;
write('Berapa banyak data? ');
readln(ndata);
if ndata>0 then
begin
writeln;
for i:=1 to ndata do
begin
writeln('Pegawai Ke-',i);
write('NIP : '); readln(A[i].nip);
write('Nama : '); readln(A[i].nama);
write('Bagian : '); readln(A[i].bagian);
write('Gaji : '); readln(A[i].gaji);
writeln;
end;
end
else
writeln('Input salah !!!')
until(n>0);
end;

function menu : char;
var
c : char;
begin
clrscr;
writeln('--- Menu Searching ---');
writeln;
writeln('1. Sequential Searching');
writeln('2. Binary Searching');
writeln('3. Keluar Program');
repeat
writeln;
write('Pilih >> ');
c := readkey;
writeln(c);
if not (c in ['1','2','3']) then
writeln('Input Salah !!!');
until(c in ['1','2','3']);
menu := c;
end;

procedure sequential(A : adata; ndata : integer);
var
i : integer;
nonip :integer;
begin
clrscr;
writeln('--- Sequential Searching ---');
writeln;
write('Masukkan NIP pegawai yang ingin dicari : ');
readln(nonip);
writeln;

{rutin kode utama}
i:=1;
while ((A[i].nip<nonip) and (i<=ndata)) do
i := i+1;
if (A[i].nip=nonip) then
begin
writeln('Data ditemukan !!!');
writeln('NIP : ',A[i].nip);
writeln('Nama : ',A[i].nama);
writeln('Bagian : ',A[i].bagian);
writeln('Gaji : ',A[i].gaji);
end
else
writeln('Data tidak ditemukan !!!');
end;

procedure binary(A : adata; ndata : integer);
var
bawah, tengah, atas : integer;
nonip : integer;
found : boolean;
begin
clrscr;
writeln('--- Binary Searching ---');
writeln;
write('Masukkan NIP pegawai yang ingin dicari : ');
readln(nonip);
writeln;

{rutin kode utama}
bawah := 1;
atas := ndata;
found := false;
while ((not found) and (atas>=bawah)) do
begin
tengah := (bawah+atas) div 2;
if (A[tengah].nip=nonip) then
found := true
else
if (A[tengah].nip>nonip) then
atas := tengah-1
else
bawah := tengah+1
end;

if (found) then
begin
writeln('Data ditemukan !!!');
writeln('NIP : ',A[tengah].nip);
writeln('Nama : ',A[tengah].nama);
writeln('Bagian : ',A[tengah].bagian);
writeln('Gaji : ',A[tengah].gaji);
end
else
writeln('Data tidak ditemukan !!!');
end;

{program utama}
begin
inputData(data,n);
ch := '2';
repeat
if (ch='2') then
plh := menu;

case plh of
'1' : sequential(data,n);
'2' : binary(data,n);
'3' : exit;
end;
writeln;
repeat
writeln;
writeln('Tekan >> 1: Cari lagi!, 2: Kembali ke Menu, 3: Keluar Program');
write(' >> ');
ch := readkey;
if not (ch in ['1','2','3']) then
writeln('Input Salah !!!');
until(ch in['1','2','3']);
until(ch='3');
end.


moga membantu n met mencoba...hehe_<

Jumat, 05 Juni 2009

"Anak Ayam Ngacir dari Planet SuakaMargaSatwa_<"

Ini cerita tenteng kehidupan yang dikelilingin ama orang-orang yang pada gokil n g bisa di ucapkan ama kata-kata. Di suatui hari, gw ama temen-temen q\gw yang lain punyaplanning lo kita-kita mau refreshing ke suatu tempat. Saat ide itu muncul sih gw langsung tu nyambar ide tersebut kaya ikan yang lagi kelaparan yaitu langsung mau ikut jalan-jalan...hehe_<
Soalnya rasa-rasa kepala gw yang indah n bau pantene ini (naecizz abiizzz!!!) mo pecah gara-gara hampir kebanyakan sampe gak bisa menampung pelajaran yang diberikan dosen ke gw (emank air pake ditampung-tampung segala lalu disimpan di beskom lalu di lempar..brakk..brikk..brukk..pecah dech tuh ember_hehe_<). Mungkin gak sampe segitunya lagi.
Gw n sohib gw eva sich semangat-semangat azah dengerin tuh planning selagi kami lagi penat jadi butuh refreshing buat refreshing otak bentar(yach..agap az kaya orang yang punya penyakit leukimia yang harus cuci darah gara-gara tu penyakit_hikkzz). Kayanya planning tersebut bener dilaksanain ama temen-temen gw yang ternyata terbukti dengan adanya mereka dengan rasa yang kejam dan jahanam dan juga penuh rasa yang mengguncang jantung hampir copot mereka meniggalkan kami bertiga yaitu gw, eva, dan k'dedi dalam perjalanan menuju kota margasatwa tersebut yaitu kum-kum (marikum_gkgk)tanpa adanya satu pun informasi ataupun message di handphone kami bertiga (sangatlah kejam...hikzz). Dimana kami bertiga harus mengejar ilmu kami setinggi langit lo bisa ampe luar angkasa...mereka telah meniggalkan yang baru saja menyelesaikan misi kami tersebut.haha_<
Akhirnya dengan kompromi astronot yang begitu matang hingga kami dapat menggapai tempat planet yang dituju yaitu "Planet suakamargasatwa" memutuskan untuk lepas landas dari kampus menuju tempat tersebut.
Dan dalam waktu yang hanya 10 menit/km/jam kami mencapai yang namanya tu planet yang lebih dikenal dengan nama Kum-kum.
Disinilah mulainya sutu peristiwa yang buat gokil abiz dimana pertama-tama kami bertiga memanggil tuh induk dari planning untuk keluar menuju parkiran untuk membayar tiket konser menyaksikan aneka ragam marga satwa di planet kum-kum tersebut. Dan setelah inilah akan terjadinya suatu kejadian itu dimana setelah kami hampir menyelesaikan misi penelitian di planet tersebut datanglah kearoganisme-hiperaktifnya seorang dari teman kami yang membuat suatu bencana bagi semua pada saat itu yaitu dengan kelakuannya yang sangat-sangat buruk telah menghacurkan derajat sebagian dari kelompok anak ayam yang telah hampir mati tercekik oleh penjaga alias hansip tuh planet(mank pernah dengar di kum-kum ada hansip yach_??hehe). Tapi dengan keberuntungannya, gerombolan anak ayam yang hampir mati hanya oleh kelakuan satu anak ayam tersebut melakukan aksi....yaitu aksi nyacir dari tu planet SuakaMargaSatwa_<.........hahaha(ketawa setan).
jadi gak ketahuan dech ada bencana yang telah menanti tuh planet...hehehe>_<