About me

My photo
Surabaya
too much to explain in words.. you may think that you know me, but sorry to say, you are WRONG..! i bet you dont know me AT ALL.. my life is amazing..and i love it damn much..

Saturday, December 5, 2009

Tertawa karena masalalu yang menjadi kenangan....

AHHHHHH.......


akhirnyaa... air mata ini ga perlu keluar lagii..
kalo dia udah bahagia,, udah seneng.. aku juga seneng... =)


ada yang bilang " kalo engga rela liat orang yang kita sayang bahagia, itu namanya ego.. bukan sayang "
naah.. mungkin dengan gini aku sukses buktiin ke dia kalo aku beneran sayang..
ga sekedar suka ato ego aku doang buat dapetin dia..


aku gapapa kok kalopun dia gak sama aku..
im deal with that..
yang penting samasama seneng.. =))




ahhhh... lega rasanya...
sedih tapi aku lega...
aku bisa lewatin semua ini... 




* somewhere only we (both) know *
by keane



I walked across an empty land
I knew the pathway like the back of my hand
I felt the earth beneath my feet
Sat by the river and it made me complete 


Oh simple thing where have you gone
I'm getting old and I need something to rely on
So tell me when you're gonna let me in
I'm getting tired and I need somewhere to begin 


I came across a fallen tree
I felt the branches of it looking at me
Is this the place we used to love?
Is this the place that I've been dreaming of? 


Oh simple thing where have you gone
I'm getting old and I need something to rely on
So tell me when you're gonna let me in
I'm getting tired and I need somewhere to begin 


And if you have a minute why don't we go
Talk about it somewhere only we know?
This could be the end of everything
So why don't we go
Somewhere only we know? 


Oh simple thing where have you gone
I'm getting old and I need something to rely on
So tell me when you're gonna let me in
I'm getting tired and I need somewhere to begin 


And if you have a minute why don't we go
Talk about it somewhere only we know?
This could be the end of everything
So why don't we go
Somewhere only we know? 


This could be the end of everything
So why don't we go
Somewhere only we know?

tega by Glen Fredly

ditengah rasa rinduku yang menggebu,
kau bersama dia..
disaat - saat ku menunggu dirimu,
kau bersama dia..


bila kau cinta aku mengapa kau tipu diriku tuk bersama dia...


kau bunuh hatiku saat ku bernafas untukmu..
kau kebanggaanku yang tega menipuku..
yang tega menipuku.....




batapa sedihnya....
dan dia gak akan pernah tau,,

Friday, December 4, 2009

song for you.....

As I look into your eyes
I see all the reasons why
My life’s worth a thousand skies
You’re the simplest love I’ve known
And the purest one I’ll own
Know you’ll never be alone

Chorus:

My baby you
Are the reason I could fly
And 'cause of you
I don’t have to wonder why
Baby you
There’s no more just getting by
You’re the reason I feel so alive.

Though these words I sing are true
They still fail to capture you
As mere words can only do
How do I explain that smile?
And how it turns my world around
Keeping my feet on the ground

Repeat Chorus

I will soothe you if you fall
I’l be right there if you call
You’re my greatest love of all

Chorus
you are the reason I could fly
and 'cause of you
I don't have to wonder why
My baby you
there's no more just getting by
'cause you're the reason I feel so alive
Arianna I feel so alive


Thursday, December 3, 2009

ARRRRRRRRGGGGGHHHHHHHHH............syerem!

masaa yahh..
tadi kan pulang dari kampus jalan kaki nih..
terus tibatiba kayak ngedenger suara ada yang jalan gitu dibelakang aku..
naaahh gatau kenapa perasaan langsung 'gaenak'..

teuusss pas noleh nih yaa,,gak ada sapasapa....!!!
awaaahhh.... malas bangedd kan??!
mana isu setan lagi santer sanasini.. ada tuyul item lah.. ada pocong lah..
huuuhhhhh.... mao jugaa masuk tipi.. =(

tolong ajah,tann..
saya anak baikbaik..
tolong jangan digodainn... =((((((


mana yahh,,dikosan aku juga kemaren sempet heboh gambar syur gitu...
jadi pas anak sebelah potoan,,di sebrang kamarnya ada gambar embaemba tembus pandang yang.... waaahh.. gaenak lah kalu dijelasin disini..
errrrrrrr.... SYERAAMMM!!!!!

Wednesday, November 18, 2009

since i dont have you

uhh ohh..
sooo damn bored!!!


ginigini ajahh..
nothing special happen.. =((((



Monday, November 16, 2009

algoritma warshall

Algoritma Floyd Warshall


Code:

void fwarsh(int nn, double *cmat, double **dist_mat, int **pred_mat)

{

double *dist;

int *pred;

int i,j,k; //loop counters



//inisialisasi struktur data

dist = (double *)malloc(sizeof(double) * nn * nn);

pred = (int *)malloc(sizeof(int) * nn * nn);

memset(dist, 0, sizeof(double)*nn*nn);

memset(pred, 0, sizeof(int)*nn*nn);



//inisialisasi algoritma

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++) {

if (cmat[i*nn+j] != 0.0)

dist[i*nn+j] = cmat[i*nn + j];

else

dist[i*nn+j] = HUGE_VAL;



if (i==j) //diagonal case

dist[i*nn+j] = 0;



if ((dist[i*nn + j] > 0.0) && (dist[i*nn+j] < HUGE_VAL))

pred[i*nn+j] = i;

}

}



//Pengulangan Utama

for (k=0; k < nn; k++) {

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++) {

if (dist[i*nn+j] > (dist[i*nn+k] + dist[k*nn+j])) {

dist[i*nn+j] = dist[i*nn+k] + dist[k*nn+j];

pred[i*nn+j] = pred[k*nn+j];

//printf("updated entry %d,%d with %d\n", i,j, dist[i*nn+j]);

}

}

}

}



/* //Cetak Hasil

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++)

printf("%g ", dist[i*nn+j]);

printf("\n");

} */



if (dist_mat)

*dist_mat = dist;

else

free(dist);



if (pred_mat)

*pred_mat = pred;

else

free(pred);



return;

} //end of fwarsh()









Joined: Mon Mar 31, 2008 6:50 pm

Posts: 840

Re: Algoritma Floyd Warshall



dulugondrong wrote:



Code:

void fwarsh(int nn, double *cmat, double **dist_mat, int **pred_mat)

{

double *dist;

int *pred;

int i,j,k; //loop counters



//inisialisasi struktur data

dist = (double *)malloc(sizeof(double) * nn * nn);

pred = (int *)malloc(sizeof(int) * nn * nn);

memset(dist, 0, sizeof(double)*nn*nn);

memset(pred, 0, sizeof(int)*nn*nn);



//inisialisasi algoritma

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++) {

if (cmat[i*nn+j] != 0.0)

dist[i*nn+j] = cmat[i*nn + j];

else

dist[i*nn+j] = HUGE_VAL;



if (i==j) //diagonal case

dist[i*nn+j] = 0;



if ((dist[i*nn + j] > 0.0) && (dist[i*nn+j] < HUGE_VAL))

pred[i*nn+j] = i;

}

}



//Pengulangan Utama

for (k=0; k < nn; k++) {

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++) {

if (dist[i*nn+j] > (dist[i*nn+k] + dist[k*nn+j])) {

dist[i*nn+j] = dist[i*nn+k] + dist[k*nn+j];

pred[i*nn+j] = pred[k*nn+j];

//printf("updated entry %d,%d with %d\n", i,j, dist[i*nn+j]);

}

}

}

}



/* //Cetak Hasil

for (i=0; i < nn; i++) {

for (j=0; j < nn; j++)

printf("%g ", dist[i*nn+j]);

printf("\n");

} */



if (dist_mat)

*dist_mat = dist;

else

free(dist);



if (pred_mat)

*pred_mat = pred;

else

free(pred);



return;

} //end of fwarsh()

Friday, October 2, 2009

Hari yang menakjubkan..

sat , Oct 3rd 2009
@Jogja


hari ini tidak seperti hari biasanya..
jelasnya, karna skarang saya ini lagi tidak berada di tempat dimana seharusnya saya sedang berada..


engga jelas juga apa maksud dan tujuan dateng kesini..
tibatiba aja..


tapi semuanya jadi memburuk dan makin memburuk..


gyahahahaaaa.....
nulis apaann seehhh...

Saturday, September 26, 2009

Polimorfisme di C++

Polimorfisme sederhana dalam c++


Polymorphism adalah pemikiran bahwa objek dinamis suatu class dasar dapat berperilaku seperti class turunan. Jika objek menunjuk class dasar maka ia perilaku seperti class dasar, dan jika ia menunjuk class turunan ia akan berperilaku seperti class turunan.
Dalam hal ini obkjek memiliki beberapa bentuk, tergantung ia menunjuk kemana. Dalam hal ini suatu objek atau class dan perubahan perilakunya adalah dari kelas dasar ke kelas turunan, tidak bisa objek kelas turunan menunjuk ke kelas dasar. Polimorfisme dimungkinkan karena adanya mekanisme ikatan dinamis, ikatan ini adalah ikatan yang terjadi ketika program dijalankan (run-time), ikatan yang terjadi pada saat compiling disebut ikatan dinamis. Ikatan dinamis hanya akan terjadi antara suatu objek dinamis dengan metode yang dinamis juga, dalam hal ini metode virtual (maya)


#include
#include

class Tbujursangkar
{
protected:
double panjang;

Membuat class dengan nama class Tbujursangkar dengan variable panjang dengan tipe data double dengan sifat protected, class ini akan menjadi class dasar.


public:
Tbujursangkar(double pj){panjang=pj;}

Konstruktor dengan sifat public Tbujursangkar(double pj){panjang=pj;} yang mendefinisikan variable pj sama dengan panjang,


double Panjang(){return panjang;}

fungsi Panjang dengan return value double yang mengembalikan nilai kembali ke variable panjang

virtual double Lebar(){return panjang;}

Lalu fungsi Lebar dengan penambahan syntax virtual di depan nama fungsi menandakan fungsi tersebut bersifat polimorfisme, syntax virtual akan menciptakan ikatan dinamis, ikatan ini adalah ikatan yang terjadi ketika program dijalankan (ru-time), Ikatan dinamis ini hanya akan terjadi antara suatu objek dinamis dengan metode yang dinamis juga, dalam hal ini metode virtual (maya)


double Luas(){return Panjang() *Lebar() ;}};

fungsi double Luas dengan parameter mengalikan antara fungsi Panjang dengan fungsi Lebar, yang akan menghasilkan Luas persegi panjang.


class Tpersegipanjang:public Tbujursangkar
{
Deklarasi Class diatas merupakan class Tpersegipanjang yang merupakan turunan dari class Tbujursangkar,

protected:
double lebar;

deklarasi variable lebar, variable lebar merupakan variable tambahan yang diperlukan untuk menghitung suatu persegi panjang, karena variable panjang telah ada dalam class induknya sehingga tidak perlu ditampilkan lagi.

public:
Tpersegipanjang(double pj, double lb):Tbujursangkar(pj){lebar=lb;}

Pada bagian public terdapat konstruktor Tpersegipanjang, yang mendeklarasikan variable pj dan lb dimana pj sama dengan panjang dan lb sama dengan lebar.


virtual double Lebar(){return lebar;}

deklarasi virtual fungsi Lebar yang menandakan bersifat polimorfisme ini diketahui dengan penambahan kode virtual didepan nama fungsi.

void main()//program utama
{
Tpersegipanjang *pp=new Tpersegipanjang(8,6);

Memanggil konstruktor Tpersegipanjang dalam variable pointer pp, variable pp ini di inisialiasi dengan nilai dari dari Tpersegipanjang yaitu 8 dan 6.


cout<<"panjang = "<<<"lebar = "<<<"luas = "<

Menampilkan nilai dari panjang() dengan fungsi yang dipanggil pada kelas Tbujursangkar, lebar() dipanggil dengan fungsi dari kelas Tpersegipanajng yang bersifat polymorfisme sehingga akan terbentuk ikatan dinamis antara variable panjang dengan fungsi lebar() dan luas() dengan fungsi yang dipanggil dari kelas Tbujursangkar.


delete pp;
getch();
}

menghapus nilai dari variable pp agar tidak membebani memori. Dari dua kelas diatas, pada kelas TBujursangkar pada saat pendefinisian fungsi lebar, return ditujukan ke variabel panjang, sedangkan pada kelas Tpersegipanjang juga didefinisikan fungsi lebar yang return valuenya dikembalikan ke variabel lebar. Sehingga dari kejadian inilah terjadi apa yang dinamakan polimorfisme, yaitu pendefinisian dua fungsi dengan nama yang sama pada kelas yang berbeda dan dengan parameter yang berbeda. Polimorfisme tidak sama dengan overloading. Untuk menghindari polimorfisme yaitu dengan cara menambahkan keyword virtual didepan fungsi tersebut seperti yang terlihat pada contoh program diatas. Sehingga ketika program tersebut jika dijalankan hasil dari fungsi luas() adalah 48.
untuk penambahan fungsi keliling pada program, penambahanya adalah sebagai berikut :
virtual double keliling(){return 2*(panjang+lebar);}
atau dapat juga menambahkanya pada class Tbujursangkar, hasilnya akan sama saja. Isi dari fungsi diatas adalah rumus dari keliling persegipanjang. Dan untuk menampilkan output adalah sebagai berikut


<<"Keliling= "<

Merupakan pemanggilan dari fungsi keliling pada program utama sama dengan pemanggilan pada fungsi lebar sebelumnya.

kode langkap :

  • #include"iostream.h"
  • #include"stdlib.h"
  • /* class DENGAN virtual( POLYMORPHISME)==========*/
  • class tbujursangkar_vir
  • {
  • protected :
  • double panjang; //panjang sisi bujur sangkar
  • public:
  • tbujursangkar_vir(double pj) {panjang = pj;}
  • double panjangf() {return panjang;}
  • virtual double lebarf() {return panjang;}
  • double luasf() {return panjangf()*lebarf();}
  • double keliling() {return 4*panjang;}
  • };
  • class tpersegipanjang_vir:public tbujursangkar_vir
  • {
  • protected:
  • double lebar; //lebar persegi panjang
  • public:
  • tpersegipanjang_vir(double pj, double lb):
  • tbujursangkar_vir(pj) {lebar = lb;}
  • virtual double lebarf() {return lebar;}
  • double keliling() {return 2*panjang+2*lebar;}
  • };
  • //=========================================main===============================//
  • void main()
  • {
  • double a,b;
  • cout<>a ;
  • cout<>b ;
  • tbujursangkar_vir *bujur = new tbujursangkar_vir(a);
  • tpersegipanjang_vir *persegi = new tpersegipanjang_vir(a,b);
  • cout<<"===========hasil pada class tbujursangkar================"<
  • cout<<"panjang = "<
  • cout<<"lebar = "<
  • cout<<"luas = "<
  • cout<<"keliling = "<<
  • cout<<"===========hasil pada class tpersegipanjang================"<
  • cout<<"panjang = "<
  • cout<<"lebar = "<
  • cout<<"luas = "<
  • cout<<"keliling = "<
  • delete bujur;
  • delete persegi;
  • system("pause");
  • }

  • Contoh Program :

  • #include "iostream.h"
  • class TX
  • {
  • public:
  • double FA(double p) { return p*p; }
  • double FB(double p) { return FA(p) / 2; }
  • };
  • class TY : public TX
  • {
  • public:
  • double FA(double p) { return p*p*p; }
  • };
  • void main()
  • {
  • TY y;
  • cout <<>
  • }
output :


Sumber : http://sipemalas.wordpress.com/2009/05/16/polimorfisme-sederhana-dalam-c/

Konstruktor C++

Konstruktor

Sebelumnya kita telah menggunakan member fungsi assign() untuk memasukkan nilai ke dalam member variabel pembilang dan penyebut. Sebuah konstruktor melakukan tugas yang sama dengan fungsi assign(), sehingga Anda tidak perlu repot-repot memanggil fungsi assign() untuk setiap objek yang Anda deklarasikan. Sebuah konstruktor harus mempunyai nama yang sama dengan kelas dimana konstruktor tersebut berada, dan dideklarasikan tanpa return value (nilai balik), juga tanpa kata kunci void. Mari kita kembangkan kelas BilanganRasional yang telah kita bahas sebagai berikut :

class BilanganRasional

{

public :

//KONSTRUKTOR BilanganRasional

BilanganRasional(int pemb, int peny)

{

pembilang = pemb;

penyebut = peny;

}

private :

int pembilang, penyebut;

};

pembilang

penyebut

objekBilangan

Bandingkan struktur konstruktor dengan fungsi assign() yang telah kita bahas sebelumnya. Konstruktor BilanganRasional melakukan tugas yang sama dengan member fungsi assign(). Bedanya hanya terletak pada pemanggilan fungsi dan konstruktor tersebut. Jika fungsi assign() harus kita panggil dengan didahului oleh pendeklarasian sebuah objek, kemudian fungsi dari objek tersebut dipanggil dengan operator titik disertai nilai yang ingin kita input, misal

BilanganRasional x;

x.assign(22,7);

maka konstruktor cukup dipanggil sebagai berikut :

BilanganRasional x(22,7);

Kedua varian tersebut melakukan hal yang sama, yakni menginitialisasikan nilai 22 ke member variabel pembilang, dan nilai 7 ke variabel penyebut.

Konstruktor Dengan Initialization Lists

Penulisan konstruktor dengan daftar initialisasi (initialization lists) merupakan fasilitas yang disediakan oleh C++ untuk menyederhanakan struktur konstruktor. Ini berarti, contoh konstruktor di atas dapat pula ditulis sebagai berikut :

class BilanganRasional

{

public :

BilanganRasional(int pemb, int peny) : pembilang(pemb), penyebut(peny) { }

private :

int pembilang, penyebut;

};

Contoh di atas menghasilkan fungsi yang sama dengan konstruktor yang kita bahas sebelumnya.

CopyConstructor

Sampai sejauh ini kita telah mempelajari bagaimana struktur sebuah konstruktor serta bagaimana membuat objek dari konstruktor yang telah didefinisikan. Akan tetapi, coba bayangkan apabila Anda telah mempunyai sebuah objek x, dan kemudian Anda menginginkan membuat sebuah objek y yang memiliki nilai member data dan member fungsi yang sama. Tentu saja Anda dapat mendeklarasikan objek baru dengan memanggil konstruktor yang sama sebanyak 2 kali :

BilanganRasional x(22,7);

BilanganRasional y(22,7);

Perintah di atas mendeklarasikan 2 objek, yakni x dan y yang masing-masing memiliki nilai 22 pada member variabel pembilang dan 7 pada member variabel penyebut. Akan tetapi, Anda dapat juga mempersingkat kode diatas dengan perintah berikut :

BilanganRasional x(22,7);

BilanganRasional y(x);

Berikut listing contoh untuk Copy Constructor :

class BilanganRasional

{

public :

BilanganRasional(int pemb, int peny) : pembilang(pemb), penyebut(peny) { }

//CopyConstructor terdapat disini

BilanganRasional(const BilanganRasional& br) : pembilang(br.pembilang), penyebut(br.penyebut) { }

private :

int pembilang, penyebut;

};

void main()

{

BilanganRasional x(22,7);

BilanganRasional y(x);

}

Deklarasi CopyConstructor otomatis dipanggil ketika Anda mengkopi objek x ke objek y. Perhatikan bahwa x menjadi parameter ketika kita mendeklarasikan objek y.

Ringkasan

Pada bab ini Anda telah mengetahui konsep OOP, mengapa OOP disebut paradigma serta apa bedanya konsep pemrograman berorientasi objek dengan konsep pemrograman terstruktur. Anda juga telah belajar mendefinisikan sebuah kelas, mendefinisikan member fungsi dan member data serta struktur konstruktor dan destruktor dari sebuah kelas. C++ juga menyediakan fasilitas jika Anda ingin membuat duplikat sebuah objek, yaitu menggunakan fasilitas CopyConstructor. Selain itu Anda juga telah belajar mendeklarasikan sebuah konstruktor dengan Initialization Lists, sehingga pendeklarasian konstruktor Anda menjadi lebih efisien.

contoh program :

  • #include "iostream.h"


  • class CRectangle {

  • int *width, *height;

  • public:

  • CRectangle (int,int);

  • ~CRectangle ();

  • int area (void) {return (*width * *height);}

  • };


  • CRectangle::CRectangle (int a, int b) { // constructor

  • width = new int;

  • height = new int;

  • *width = a;

  • *height = b;

  • }


  • CRectangle::~CRectangle () { // destructor

  • delete width;

  • delete height;

  • }


  • int main () {

  • CRectangle rect (3,4), rectb (5,6);

  • cout << "Konsep luas persegi dengan Konstruktor dan Destruktor" << "\n";

  • cout << "Penghitungan Luas Persegi dengan value yang terset !" << "\n";

  • cout << "luas persegi a : " <<>

  • cout << "luas persegi b : " <<>

  • return 0;

  • }



  • output :


Daftar Pustaka :

1. Erlenkötter, Helmut. C++, Objektorientiertes Programmieren von Anfang an

2. http://infocom.cqu.edu.au/Staff/Mike_Turnbull/Home_Page/Lecturetts/Sect101.htm

3. http://www.aw-bc.com/catalog/academic/product/0,4096,0201895501-PRE,00.html

4. http://www.desy.de/gna/html/cc/Tutorial/node3.htm

5. http://www.uni-koeln.de/rrzk/kurse/unterlagen/CPPKURS/

6. http://www.uni-koeln.de/rrzk/kurse/unterlagen/CPPKURS/HTML/begriffe.htm

7. Hubbard, John R. Ph.D. Schaum’s Outlines. Programming with C++.