Jumat, 30 Oktober 2009

Class

Setelah membahas struct pada blog saya yang lalu, sekarang saya akan membahas class. Class sama seperti struct (mengelompokan data dan function ke dalam sebuah class/struct), perbedaannya adalah batasan aksesnya memiliki default private (sedangkan struct mempunyai default akses public).
contoh pembuatan class:
class Product
{ public:
int Prod_id;
char Prod_Name;
float Price;
int Stock_qty;
};
Product Brg1;

3 Access Level Class
Public:
Bagian class yang dapat diakses oleh umum baik dari dalam maupun dari luar class.
Protected:
Bagian class yang dapat diakses oleh linkungan internal class dan class turunannya.
Private:
Bagian class yang hanya dapat diakses oleh linkungan internal class itu sendiri.

Constructor dan Destructor
class Time
{ private:
int hour;
int minute;
int second;
public:
Time(); //constructor
void setTime( int, int, int );
void printUniversal();
void printStandard();
~Time(); //destructor
};

Constructor adalah member function yang pertama kali di kerjakan ketika satu object di create. Nama constructor harus sama dengan nama classnya dan digunakan untuk inisiasi object. Minimal harus ada 1 constructor dan bisa dioverload. Apalagi tidak ada constructor, maka compiler akan mengenerate default constructor untuk class tersebut

Destructor adalah member function yang di kerjakan ketika satu object di destroy / death (sebagai pengakhiran object). Nama destructor sama dengan nama class nya hanya ditambahkan tanda tilde (~) di awalannya dan digunakan untuk de-inisialisasi/dealokasi memori. Destructor hanya ada 1.


Deklarasi Object Class
Time timeObject; //object biasa
Time timeArray[ 10 ]; // object array
Time *timePtr; //object pointer
Time &timeRef = timeObject; // object reference

Kamis, 22 Oktober 2009

Struct

Struct merupakan jenis user define data type sehingga kita bisa meninisiasikan sebuah variabel dengan bermacam-macam bentuk data tidak seperti array yang hanya 1 jenis data type saja.
Cara mendeklarasikan struct adalah sebagai berikut:
struct Time // struct tag
{
int hour; // struct member
int minute; // struct member
int second; // struct member
};
dan cara untuk mendeklarasikannya adalah sebagai berikut:
Time timeObject; //variable biasa
Time timeArray[ 10 ]; // variable array
Time *timePtr; //variable pointer
Time &timeRef = timeObject; //reference

Cara untuk mengakses member struct adalah dengan menggunakan .(dot) apabila menggunakan variable basa, contohnya adalah cout << timeObject.hour;
Apabila menggunakan variable pointer/reference, digunakan ->(arrow) untuk mengakses datanya, contohnya adalah cout << timePtr->hour;

Nested Struct adalah struct yang terdapat didalam struct. Contohnya adalah sebagai berikut:
struct Date
{
int tgl;
int bln;
int thn;
};
struct Employee
{
int ID;
int Name;
Date hire;
};

Sabtu, 17 Oktober 2009

Set IOS Flags

Dalam C++, kita dapat mengatur penampilan hasil program kita dengan menggunakan cout.setf. Berikut ini adalah adalah syntax syntax yang digunakan dalam menggunakan cout.setf:
cout.setf(ios::showpos); -> Memberikan tanda + / - pada output
contoh :
double x=5.35;cout.setf(ios::showpos);
cout << x;
hasil : +5.35

cout.setf(ios::dec); -> Mengubah bilangan menjadi basis 10 (desimal)
contoh :
int bil = 125; cout.setf(ios::dec);
cout << bil;
hasil : 125

cout.setf(ios::hex); -> Mengubah bilangan menjadi basis 16 (hexadesimal)
contoh :
int bil = 125; cout.setf(ios::hex);
cout << bil;
hasil : 7d

cout.setf(ios::oct); -> Mengubah bilangan menjadi basis 8 (octal)
contoh :
int bil = 125; cout.setf(ios::oct);
cout << bil;
hasil : 175

cout.setf(ios::fixed); -> Menampilkan bilangan nol di belakang koma (apabila ia double)
contoh :
double x=5.35;cout.setf(ios::fixed);
cout << x;
hasil : 5.350000

cout.setf(ios::scientific); -> Menampilkan bilangan nol di belakang koma (apabila ia double)
contoh :
double x=5.35;cout.setf(ios::scientific);
cout << x;
hasil : 5.350000e+00

cout<-> Menyiapkan tempat sebanyak variabel x.default rata kanan
contoh : double x=5.35; cout << x;
hasil : _5.35

cout.setf(ios::showpos | ios::internal); -> Menampilkan tanda positif atau negatif di kanan
contoh :
double x=5.35; cout.setf(ios::showpos | ios::internal);
cout << setw(10) << x;
hasil : + _____5.35

cout.setf(ios::right); -> Membuat rata kanan
contoh :
int bil=125; cout.setf(ios::right);
cout << bil;
hasil : __125

cout.setf(ios::left); -> Membuat rata kiri
contoh :
int bil=125; cout.setf(ios::left);
cout << setw(5) << bil;
hasil : 125

cout.setf(ios::hex | ios::uppercase); -> Mengubah A-F menjadi huruf besar pada bilangan hexadesimal
contoh :
int bil = 125; cout.setf(ios::hex | ios::uppercase);
cout << bil;
hasil : 7D

cout.setf(ios::showbase | ios::hex); -> Untuk menunjukkan base karakter untuk bilangan octal atau hexa
contoh :
int bil = 125; cout.setf(ios::showbase | ios::hex);
cout << bil;
hasil : 0x7d

cout.setf(ios::showpoint); -> Menunjukkan desimal point untuk semua float
contoh :
float b=3; cout.setf(ios::showpoint);
cout << b
hasil : 3.00000

Untuk menghentikan cout.setf, kita dapat menggunakan cout.unsetf.

Jumat, 09 Oktober 2009

Recursive Function

Pertama-tama sebelum kita masuk ke dalam recursive function, sebenarnya, function itu apa sih?
Function adalah membagi program ke dalam komponen-komponen program (modularisasi program) agar program dapat lebih mudah di manage. Biasanya hal ini disebut dengan modularisasi programming. Function dipanggil dengan cara memanggil function namenya. Analoginya adalah sebagai berikut Boss (main program) yang meminta anak buahnya untuk mengerjakan sesuatu (function) dan melaporkan (return) hasilnya.

Sekarang kita masuk ke dalam recursive function. "Sebenernya recursive function itu apa sih?"
Recursive function adalah sebuah function yang memanggil dirinya sendiri dan hanya dapat menyelesaikan base case saja dan apabila tidak ada base case, maka masalah akan dipecahkan ke masalah yang lebih kecil dan kemudian function akan bekerja pada masalah yang lebih kecil tersebut dan pelan-pelan masalah-masalah yang kecil tersebut akan menjadi base case sehingga dapat dipecahkan.

"Kelebihan dan kekurangan dari recursive function apa ya?"
Kelebihan dari recursive function ini adalah kita dapat membuat function yang lebih singkat apabila dibandingkan dengan function yang biasa (iteration function).
kekurangannya adalah recursive function banyak memakan memory dan terkadang apabila nilai yang dikerjakan oleh function tersebut sangat besar, maka kerjanya akan menjadi lambat jika dibandingkan dengan function yang biasa (iteration function).

Contoh dari recursive function adalah sebagai berikut:
Mencari deret fibonaci

long fibonacci( long n )
{
if ( n == 0 || n == 1 ) // base case
return n;
else
return fibonacci( n - 1 ) + fibonacci( n – 2 );
}