Jumat, 05 November 2010

PRAKTIKUM 5 S DATA

#include
#ifndef __xcept
#define __xcept
// exception classes for various error types
 // bad initializers
class BadInitializers {
public:
       BadInitializers() {}
 };
 // insufficient memory
class NoMem {
public:
       NoMem() {}
};
// change new to throw NoMem instead of xalloc
void my_new_handler()
{
throw NoMem();
};
//new_handler Old_Handler_ = set_new_handler(my_new_handler);
// improper array, find, insert, or delete index
// or deletion from empty structure
class OutOfBounds {
public:
OutOfBounds() {}
};
// use when operands should have matching size
class SizeMismatch {
public:
       SizeMismatch() {}
};
// use when zero was expected
class MustBeZero {
public:
       MustBeZero() {}
};
// use when zero was expected
class BadInput {
public:
       BadInput() {}
};
#endif

//CLASS ARRAY1D:
using namespace std;         
class Array1D{
      friend ostream& operator<<(ostream&, const Array1D&);
public:
       Array1D(int size=0);
       Array1D(const Array1D& v);
       ~Array1D(){delete [] element;}
       int& operator[](int i)const;
       int Size(){return size;}
       Array1D& operator=(const Array1D& v);
       Array1D operator+()const;
       Array1D operator+(const Array1D& v)const;
       Array1D operator-()const;
       Array1D operator-(const Array1D& v)const;
       Array1D operator*(const Array1D& v)const;
       Array1D& operator+=(const int& x);
       Array1D& Resize(int sz);
       void geser_kiri();
       void geser_kanan();
private:
        int size;
        int* element;
};
Array1D::Array1D(int sz){
                     if(sz<0)throw BadInitializers();
                     size=sz;
                     element=new int[sz];
}
Array1D::Array1D(const Array1D& v){
                       size=v.size;
                       element=new int[size];
                       for(int i=0; i
                       element[i]=element[i];
}
int& Array1D::operator[](int i)const{
     if(i<0||i>=size)throw OutOfBounds();
     return element[i];
}
Array1D& Array1D::operator=(const Array1D& v){
         if(this !=&v){
         size=v.size;
         delete[]element;
         element=new int[size];
         for(int i=0;i
         element[i]=element[i];
         }
       return* this;
}
Array1D Array1D::operator+(const Array1D& v)const{
        if (size != v.size) throw SizeMismatch();
        Array1D w(size);
        for(int i=0; i
        w.element[i]=element[i]+v.element[i];
        return w;
}
Array1D Array1D::operator-(const Array1D& v)const{
        if(size != v.size) throw SizeMismatch();
        Array1D w(size);
        for(int i=0; i
        w.element[i]=element[i]-v.element[i];
        return w;
}
Array1D Array1D::operator-()const{
        Array1D w(size);
        for(int i=0; i
        w.element[i]=-element[i];
        return w;
}
Array1D Array1D::operator*(const Array1D& v)const{
        if(size != v.size) throw SizeMismatch();
        Array1D w(size);
        for(int i=0; i
        w.element[i]=element[i]=v.element[i];
        return w;
}
Array1D& Array1D::operator+=(const int& x){
         for(int i=0; i
         element[i]+=x;
         return* this;
}
ostream& operator<<(ostream& out, const Array1D& x){
         for(int i=0; i
         out << x.element[i] << " ";
         return out;
}
Array1D& Array1D::Resize(int sz){
         if(sz<0) throw BadInitializers();
         delete[]element;
         size=sz;
         element=new int[size];
         return* this;
}

 //FUNGSI MAINNYA:
int main(int argc, char *argv[])
{
         try{
         Array1D X(10), Y, Z;
         for(int i=0; i<10; i++)
            X[i]=i;
         cout << "X[3] = " << X[3] << endl;
         cout << "\nX is \n" << X << endl;
            Y=X;
         cout << "\nY is \n" << Y << endl;
            X += 2;
         cout << "\nX increment by 2 is \n" << X << endl;
            Z=(Y+X)*Y;
         cout << "\n(Y+X)*Y is \n" << Z << endl;
         cout << "\n-(Y+X)*Y is \n" << -Z << endl;
}
         catch(...){
         cout << "An Exception has occured" << endl;}
         cout<< "\n\nRIYAN SINTARI (09018214)\n\n";

system("PAUSE");
return EXIT_SUCCESS;
}

Rabu, 20 Oktober 2010

Praktikum Struktur Data 4

  Post Test

Tentang Array 1 Dimensi, program ini mencakup sort bubble(mengurutkan array) dan menghapus sebuah array.

Silahkan dinikmati gan!!



#include <cstdlib>
#include <iostream>
#define maks 5
using namespace std;
class Array1D{
friend ostream& operator<<(ostream&, const Array1D&);
friend istream& operator>>(istream&, Array1D&);
public :
Array1D();
void cetak();
void geser_kiri();
void geser_kanan();
void sort();
void hapus_elemen();
private :
char A[maks];
};
Array1D::Array1D(){
for(int i=0;i<maks;i++)
A[i]= '0';
}
void Array1D::cetak(){
for(int i=0;i<maks;i++)
cout<<A[i]<<"";
}
ostream& operator<<(ostream& out, const Array1D& x){
for(int i=0;i<maks;i++)
cout<<x.A[i]<<"";
cout<<endl;
return out;
}
istream& operator>>(istream& in, Array1D& x){
int posisi, i;
cout<<"masukkan 5 elemen array :"<<endl;
for(int i=0;i<maks;i++){
cout<<"elemenke ["<<i+1<<"] :";
in>>x.A[i];

 
}
return in;
}
void Array1D::sort(){
int a, b, t;
for(a=1; a < maks; a++)
for(b=maks-1; b >= a; b--)
if(A[b-1] > A[b]) {
t = A[b-1];
A[b-1] = A[b];
A[b] = t;
}
}
void Array1D::geser_kanan(){
int n=maks;
int temp=A[n-1];
for(int i=n-1;i>=0;i--)
A[i+1]=A[i];
A[0]=temp;
}
void Array1D::geser_kiri(){
int n;
int temp=A[0];
for(int i=0;i<n;i++)
A[i]=A[i+1];
A[n-1]=temp;
}
void Array1D::hapus_elemen(){
int z;
cout<<"hapus indek ke : ";
cin>>z;
if(z>0 && z<=5)
A[z-1]='O';

 
else cout<<"diluar range\n";
}

 
int main(int argc, char *argv[])
{
Array1D x;
cout<<"Array masih kosong :"<<x;
cin>>x;
cout<<"Isikan Array saat ini :"<<x;
x.geser_kiri();
cout<<"Isikan Array setelah digeser ke kiri :"<<x;
x.geser_kanan();
cout<<"Isi Array setelah digeser ke kanan :"<<x;
x.sort();
cout<<"Isi Array setelah diurutkan :"<<x;
x.hapus_elemen();
cout<<"Array setelah dihapus : "<<x;
system("PAUSE");
return EXIT_SUCCESS;
}
Praktikum Struktur Data 3



Pre Test

1. class Bil_float:public Bilangan{

friend ostream& operator<<(ostream&, const Bil_float&);

public:

Bil_float(int a0=0, int b0=0, float ft='3,14'):Bilangan(a0,b0), c(ft){}

private:

float c;

};

2. Bil_float(int a0=0, int b0=0, float ft='3,14'):Bilangan(a0,b0), c(ft){}

3. ostream& operator<<(ostream& out, const Bil_float& x){

out<<"Bagian integer:"<<x.a<<endl;

out<<"Bagian float:"<<x.b<<endl;

out<<"Bagian float:"<<x.c<<endl;

return out;

}

istream& operator>>(istream& in, Bilangan& x){

cout<<"\nMasukkan bagian integer:";

in>>x.a;

cout<<"Masukkan bagian float:";

in>>x.b;

return in;

}

4. void Bilangan::banding_float(const Bilangan& x, const Bilangan& y){

if (x.a>y.a)cout<<x.a<<"::x lebih besar dari"<<y.a<<"::y";

else cout<<x.a<<"::x lebih kecil dari"<<y.a<<"::y";

}



Post Test

#include <cstdlib> 
#include <iostream> 
using namespace std; 
class Bilangan{ 
friend ostream& operator<<(ostream&, const Bilangan&); 
friend istream& operator>>(istream&, Bilangan&); 
public: 
Bilangan(int a0=0, float b0=0.0):a(a0),b(b0){} 
void banding_int(const Bilangan&, const Bilangan&);
Bilangan& operator=(const Bilangan&); 
Bilangan operator+(const Bilangan&)const; 
Bilangan operator-()const; 
protected: 
int a; 
float b; 
}; 
ostream& operator<<(ostream& out, const Bilangan& x){ 
out<<"Bagian integer: "<<x.a<<endl;
out<<"Bagian float: "<<x.b<<endl; 
return out; 
} 
void Bilangan::banding_int(const Bilangan& x, const Bilangan& y){ 
if(x.a>y.a)cout<<x.a<<"::x lebih besar dari"<<y.a<<"::y"; 
else cout<<x.a<<"::x lebih kecil dari"<<y.a<<"::y";
} 
Bilangan& Bilangan::operator=(const Bilangan& x){ 
a=x.a; 
b=x.b; 
return *this; 
} 
istream& operator>>(istream& in, Bilangan& x){ 
cout<<"\nMasukkan bagian integer: "; 
in>>x.a; 
cout<<"Masukkan bagian float: "; 
in>>x.b; 
return in; 
} 
Bilangan Bilangan::operator+(const Bilangan& x)const{
Bilangan cc; 
cc.a=a+x.a; 
cc.b=b+x.b; 
return cc; 
} 
Bilangan Bilangan::operator-()const{ 
Bilangan x; 
x.a=-a; 
x.b=-b; 
return x; 
} 
class bil_char:public Bilangan{ 
friend ostream& operator<<(ostream&, const bil_char&);
public: 
bil_char(int a0=0, int b0=0,char ch='x'):Bilangan(a0,b0),c(ch){} 
private: 
char c; 
}; 
ostream& operator<<(ostream& out,const bil_char& x){ 
out<<"Bagian integer: "<<x.a<<endl; 
out<<"Bagian float: "<<x.b<<endl; 
out<<"Bagian char: "<<x.c<<endl;
return out; 
} 
class bil_float:public Bilangan{ 
friend ostream& operator<<(ostream&, const bil_float&); 
public: 
bil_float(int a0=0, int b0=0, float aa=0.0):Bilangan(a0,b0),c(aa){} 
void banding_float(const bil_float&, const bil_float&);
private: 
float c; 
}; 
ostream& operator<<(ostream& out,const bil_float& x){ 
out<<"Bagian integer: "<<x.a<<endl; 
out<<"Bagian float: "<<x.b<<endl; 
out<<"Bagian char: "<<x.c<<endl; 
out<<"Bilangan float: "<<x.c<<endl; 
return out; 
} 
void bil_float::banding_float(const bil_float& x, const bil_float& y){ 
if(x.a>y.b)cout<<x.a<<"::x lebih besar dari"<<y.a<<"::y"; 
else cout<<x.a<<"::x lebih kecil dari"<<y.a<<"::y"; 
} 
int main(int argc, char *argv[]) 
{ 
Bilangan s,t(-2,3.14),d;
cout<<"Nilai awal s\n"<<s; 
cout<<"Nilai awal t dari deklarasi\n"<<t; 
s=t; 
cout<<"Setelah diassign t\n"; 
cout<<"Nilai s\n"<<s; 
cout<<"Masukkan nilai-nilai objek d"; 
cin>>d; 
cout<<"Setelah d+t=>\n"<<d+t; 
cout<<"Nilai d dinegatifkan\n"<<-d; 
bil_char ss;
cout<<"Nilai awal ss\n"<<ss; 
bil_float bf; 
cout<<"Nilai float\n"<<bf; 
system("PAUSE"); 
return EXIT_SUCCESS; 
}

 

Kamis, 23 September 2010


CLASS DAN ANGGOTANYA
Dalam C++ class merupakan organisasi data dan fungsi
 












Encapsulation : Data & Fungsi dalam organisasi yang sama, yakni class.
Member class : data & fungsi.
Syntaxnya sbb: 










Proteksi member/Permission label :
1.    Private
bisa diakses oleh class sama, friend class,  sifat information hiding, member (data/fungsi) tidak dapat diakses dari luar class).
2.    Protected
bisa diakses oleh class sama, friend class, class turunan
3.    Public
bisa diakses oleh siapa saja (class lain fungsi lain, fungsi main).
Sebuah class mempunyai beberapa fungsi khusus, yaitu constructor, copy constructor, destructor dan copy assignment operator.

1.    Constructor
Adalah anggota class yang bertugas melakukan inisialisasi obyek (instance) dari suatu class C. Constructor mempunyai nama yang sama dengan nama class, dan tidak mempunyai return value.








Compiler C++ memutuskan untuk menambahkan default dan copy construtor setelah menemui kedua baris program tersebut, sehingga definisi class secara efektif menjadi sebagai berikut :













copy constructor bentukan compiler menggunakan copy constructor class string untuk inisialisasi name dari aName. Jika class C tidak mempunyai constructor, maka compiler menambahkan juga default constructor untuk inisialisasi name menggunakan default constructor class string. Inisialisasi obyek menggunakan constructor (non-default) dapat dilakukan dengan member initializer maupun dengan assignment sebagai berikut:

 














2.    Copy Constructor dan Copy Assignment
Sejauh ini sudah dibahas mengenai copy constructor sebagai anggota class yang berperan penting pada saat pembentukan obyek. Apabila sebuah class tidak menyatakan secara tegas copy constructor class tersebut, maka compiler menambahkan copy constructor dengan bentuk deklarasi, C(const C& c). Bentuk lain copy constructor adalah sebagai berikut :






Copy constructor class C adalah constructor yang mempunyai satu argumen. Sebuah copy constructor boleh mempunyai lebih dari satu argumen, asalkan argumen tersebut mempunyai nilai default (default argument).

3.    Destructor
Destructor adalah anggota class (member function) yang berfungsi melepas memori
pada saat suatu obyek sudah tidak diperlukan lagi. Fungsi destructor kebalikan
constructor. Destructor tidak mempunyai atau memerlukan argumen. Destructor juga
tidak mengembalikan nilai apapun (tidak mempunyai return type). Seperti halnya
constructor, compiler dapat menambahkan sebuah destructor jika sebuah class tidak
mempunyai destructor.
Sebuah destructor dapat berupa fungsi virtual. Hal ini menjadi keharusan jika class B,
• merupakan base class.
• class D yang menggunakan B sebagai base class mempunyai anggota berupa
  data dengan alokasi memori dinamik (pointer).
















CARA MENURUNKAN CLASS
Inheritance
Salah satu hal penting dalam class adalah inheritance. Inheritance mengijinkan kita untuk membuat objek yang diturunkan dari objek lain, sehingga dimungkinkan didalamnya terdapat member lain selain membernya sendiri. Sebagai contoh, misalnya kita ingin mendeklarasikan sederetan class yang mendeskripsikan polygon seperti CRectangle atau CTriangle. Keduanya dapat dideskripsikan dengan dua atribut yakni : alas dan tinggi.
Class yang diturunkan dari class lain mewarisi semua member yang ada dalam class dasarnya. Hal ini berarti bahwa jika class dasarnya memiliki member A dan kita menurunkannya ke class lain yang memiliki member B, maka class turunan akan terdiri dari A dan B.


























Sebagaimana kita lihat objek class CRectangle dan CTriangle masing-masing berisi member dari class CPolygon yakni : width, height dan set_values().
Pada prinsipnya setiap member dari base class diwariskan kepada class turunan kecuali
•    Constructor dan destructor
•    operator=() member
•    friends

OVERLOADING OPERATOR

Dibawah ini adalah operator-operator yang dapat dioverload:
 +    -    *    /    =    <    >    +=   -=   *=   /=   <<   >>
<<=  >>=  ==   !=   <=   >=   ++   --   %    &    ^    !    |
~    &=   ^=   |=   &&   ||   %=   []   ()   new  delete
Untuk mengoverload operator kita cukup menuliskan satu fungsi anggota class dengan nama operator diikuti dengan operator apa yang akan dioverload. Syntaxnya sbb:
type operator sign (parameters);
Misal : Kita akan menjumlahkan vector 2 dimensi a(3,1) and b(1,2). Hasilnya adalah sbb: (3+1,1+2) = (4,3). Untuk keperluan ini maka kita dapat mengoverload operator +.
Contoh :

























MEMBUAT PROGRAM

KONVERSI BILANGAN
 








































































































































OUTPUTNYA




Selasa, 03 Agustus 2010

EVENT GIGS JOGJA 1-31AUGST 2010

sekedar informasi aja, buat para penggila musik indie label


































dari pada cuma nganggur dirumah mending liatin tu eventnya, buat support band local