Sabtu, 30 Oktober 2010

Pointer Dasar

CARA PENULISAN POINTER:

1. Pointer to integer a
int*a;

2. Isilah data a dengan 5
a= new int;
*a= 5;

3. Buatlah integer b
int b;

4. Isilah data b dengan 7
b= 7;

5. Buat lah a menuju b (alamatnya)
a= &b;

6. Buatlah a menuju b (nilainya)
*a= b;


UNTUK MENCETAK HASIL

1. Pointer a
Cout<< *a ;

2. Integer b
Cout<< b ;

3. Alamat b
Cout<< &b ;

LATIHAN :

int c ;
c= 7;
int *d ;
d= new int;
*d= 10;
int *e ;
e= new int ;
*e= 4 ;
*d= c ;
*e= *d ;
d= &c;
e= d ;

Jumat, 29 Oktober 2010

Kumpulan Preetest Prak S-Data 01 - 05

PREETEST PRAK 01 :

jawaban :
klas
=> kalas adalah bahasa pemrogaman yg berorien tasi pada suatu objek
     pada program tersebut class disa na berfungsi untuk mamaparkan suaru objek bilangan dengan nama         kelas Bilangan. klas diatas manginisialisasikan 2 jenis bilangan bilagan genap mengunakan int dan bilangan desimal mengunakan float,.,,


konstruktor
=>Nama fungsi yg namanya sama dengan nama kelassnya ,...
pada perogram diatas yg merupakan bagian dari konstruktornya adalah
class Bilangan{
      friend ostream& operator<<(ostream&, const Bilangan&);///// ini adalah konstruktor
      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;

Method
=> method adalah fungsi yg ada pada kalas
   method pada program diatas adalah
   void banding_int(const Bilangan&, const Bilangan&);
             Bilangan& operator=(const Bilangan&);
             Bilangan operator+(const Bilangan&)const;
             Bilangan operator-()const;
   
  


Data mamber
=> private:
                     int a;
                     float b;


ovaeloding sebagai anggota kelas
adalah=  ostream& operator<<(ostream& out, const Bilangan& x)
         {out<<"Bagian integer: "<<x.a<<endl;
         out<<"Bagian float : "<<x.b<<endl;
         return out;


overloading sebagai friend adalah

adalah Bilangan& Bilangan::operator=(const Bilangan& x)
      {a=x.a;
      b=x.b;
      return*this;
      }  


PREETEST PRAK 02:

jawaban :
Class Kompleks    //ini adalah nama kelas
{
Public :
Kompleks (int a);//konstuktor dari kelas dengan 1 parameter yaitu data member a
} Operasi Operasi :: Operator * (const Operasi& m){
Operasi f; f.a = a* m.a;
return f;}



PREETEST  PRAK 03 :

jawaban :
class Bil_Float:public Bilangan
{
friend ostream& operator<<(ostream&, const Bil_Float&);
friend istream& operator>>(istream&,Bil_Float&);
public:
Bil_Float(int a0=0, int b0=0, char ch=’x'):Bilangan(a0,b0),c(ch){}
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;
return out;
}
istream& operator>>(istream& in,Bil_Float& x)
{
cout<<”\nMasukkan bagian Integer : “;
in>>x.a;
cout<<”\nMasukkan bagian float   : “;
in>>x.b;
return in;
}
void Bil_Float::banding_Float(const Bil_Float& x,const Bil_Float& 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”;
}

PREETEST PRAK 04 :

jawaban :
 no 1. istream&amp; operator>>(istream&amp; in, Array1D&amp; x){
       
      
         for(int i=0;i<5;i++){
                 cout<<"nilai array ke-"<<i+1<<" : ";
                 in>>x.A[i];
                 }
                
         return in;
}

no 2. void hapus_elemen();

void Array1D::hapus_elemen(){
     int posisi;
     cout<<"Pilih indeks berapa yang akan di hapus : ";
     cin>>posisi;
     if(posisi>0 &amp;&amp; posisi<=5)
        A[posisi-1]=' ';
     else cout<<"indeks hanya terdiri dari 1 - 5\n";
}
  
PREETEST PRAK 05 :

jawaban :
void geser_kiri();

void Array1D::geser_kiri(){
int n=5;
int temp=A[0];
for(int i=0;i<n;i++)
A[i]=A[i+1];
A[n-1]=temp; 
}
void geser_kanan();

void Array1D::geser_kanan(){
int n=5;
int temp=A[n-1];
for(int i=n-1;i>=0;i--)
A[i+1]=A[i];
A[0]=temp;
}

Materi Postfix, Perfix, dan Infix

NOTASI POSTFIX
Dalam struktur data yang banyak dipelajari, kita ketahui adanya 3 notasi operasi yang dilakukan untuk suatu operasi aritmatika, yaitu prefix, infix, dan postfix.
Sebelum kita kupas mengenai notasi di atas, perlu dipahami terlebih dahulu indikator yang membentuk terjadinya notasi dalam struktur data. Notasi terbentuk dari operand dan operator. Operand adalah data atau nilai yang membantu dalam proses sedangkan operator adalah fungsi yang digunakan dalam proses.
Contoh :
A + B * C
2 + 3 * 5
Keterangan : A, B, C, 2, 3, 5 adalah operand
+, * adalah operator
Ok,sekarang kita akan mencoba mengetahui operasi yang digunakan dalam perhitungan:
1. ^ (pangkat)
2. * (kali) atau / (bagi)
3. + (jumlah) atau – (kurang)
Seperti yang telah dibahas di awal, diketahui notasi pada struktur data terdiri atas 3 macam, yaitu
1. Prefix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada didepan operand.
Contoh :
A + B * C (Infix)
maka notasi prefixnya adalah   +A*BC
Pemecahannya :
A  +  B  *  C
diketahaui ada 3 operand yaitu : A, B, C, dan 2 operator yaitu : +, *. Proses dimulai  dengan melihat dari hirarkhi operator. Contoh diatas operator yang tertinggi adalah * kemudian +.
Tanda * diapit oleh dua operand yaitu B dan C yaitu B * C , prefixnya dengan menggabungkan operand dan memindahkan operator kedepan dari operand, sehingga fungsi B * C, notasi prefixnya menjadi *BC. Sehingga hasil sementara dari notasi prefix adalah
A + *BC
selanjutnya mencari prefix untuk operator yang berikutnya, yaitu +, cara yang dilakukan sama seperti di atas, operator +, diapit oleh 2 operand, yaitu A dan *BC, gabungkan operand, sehingga menjadi A*BC, lalu pindahkan operator kedepan operand, sehingga hasil akhir menjadi
+ A * B C
2. Infix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada diantara operand. Notasi ini hanya dikenal oleh manusia dan selalu digunakan dalam perhitungan aritmatika.
Contoh :
A + B * C
( A + B ) * C
A – ( B + C ) * D ^ E
3. Postfix
yaitu notasi yang terbentuk atas operator dengan operand, dimana operator berada dibelakang operand. Notasi ini hanya dikenal oleh processor dan dipahami dalam ALU.
Contoh :
A + B * C (Infix)
maka notasi postfixnya adalah   ABC*+
Pemecahannya :
A  +  B  *  C
diketahaui ada 3 operand yaitu : A, B, C, dan 2 operator yaitu : +, *. Proses dimulai  dengan melihat dari hirarkhi operator. Contoh diatas operator yang tertinggi adalah * kemudian +.
Tanda * diapit oleh dua operand yaitu B dan C yaitu B * C , postfixnya dengan menggabungkan operand B dan C menjadi BC lalu memindahkan operator ke belakang operand C, sehingga fungsi B * C, notasi postfixnya menjadi BC*. Sehingga hasil sementara dari notasi postfix adalah
A + BC*
selanjutnya mencari postfix untuk operator yang berikutnya, yaitu +, cara yang dilakukan sama seperti di atas, operator +, diapit oleh 2 operand, yaitu A dan BC*, gabungkan operand tersebut, sehingga menjadi ABC*, lalu pindahkan operator + ke belakang operand ABC*, sehingga hasil akhir menjadi

Prak 5 S-Data " ARRAY DINAMIS C++ "

// Wadipta Lingga
//090 18 260

#include <iostream.h>
template <class T>

class Array1D{
      friend ostream& operator<<(ostream&,const Array1D<T>&);
public:
       Array1D(int size=0);
       Array1D(const Array1D<T>& v);
       Array1D(){delete[]element;}
       T& operator[](int i)const;
       int Size(){return size;}
       Array1D<T>& operator =(const Array1D<T>& v);
       Array1D<T> operator+()const;
       Array1D<T> operator+(const Array1D<T>& v)const;
       Array1D<T> operator-()const;
       Array1D<T> operator-(const Array1D<T>& v)const;
       Array1D<T> operator*(const Array1D<T>& v)const;
       Array1D<T>&operator+=(const T& x);
       Array1D<T>& ReSize(int sz);
       Array1D<T>& geser_kanan();
       Array1D<T>& geser_kiri();
private:
        int size;
        T*element;
};
template <class T>
Array1D<T>::Array1D(int sz)
{
                         size =sz;
                         element=new T[sz];
}
template <class T>
Array1D<T>::Array1D(const Array1D<T>& v)
{
                           size = v.size;
                           element=new T[size]; // get space
                           for (int i=0;i<size;i++)// copy elements
                           element[i]=v.element[i];
}
template <class T>
T& Array1D<T>::operator[](int i)const
{
                          return element[i];
}
template <class T>
Array1D<T>&Array1D<T>::operator =(const Array1D<T>& v)
{
                             if (this !=&v){
                                      size=v.size;
                                      delete[]element;
                                      element=new T[size];
                                      for(int i=0;i<size;i++)
                                      element[i]=v.element[i];
                                      }
                                      return *this;
}
template <class T>
Array1D<T>Array1D<T>::operator+(const Array1D<T>& v)const
{
             Array1D<T>w(size);
             for(int i=0; i<size;i++)
             w.element[i]=element[i]- v.element[i];
             return w;
}
template <class T>
Array1D<T>Array1D<T>::operator-(const Array1D<T>& v)const
{
         Array1D<T>w(size);
         for(int i=0; i<size;i++)
         w.element[i]=element[i]+ v.element[i];
         return w;
}
template <class T>
Array1D<T>Array1D<T>::operator-()const
{
          Array1D<T>w(size);
          for(int i=0; i<size;i++)
          w.element[i]=-element[i];
          return w;
}
template <class T>
Array1D<T>Array1D<T>::operator*(const Array1D<T>& v)const
{
         Array1D<T>w(size);
         for(int i=0; i<size;i++)
         w.element[i]=element[i]* v.element[i];
         return w;
}
template <class T>
Array1D<T>&Array1D<T>::operator+=(const T& x)
{
            for(int i=0; i<size;i++)
            element[i]+=x;
            return *this;
}
template <class T>
ostream& operator<<(ostream& out,const Array1D<T>& x)
{
            for(int i=0; i<x.size;i++)
            out<<x.element[i]<<" ";
            return out;
}
template <class T>
Array1D<T>&Array1D<T>::ReSize(int sz)
{
         delete[]element;
         size=sz;
         element=new T[size];
         return *this;
}
template <class T>
Array1D<T>&Array1D<T>::geser_kanan()
{
     int n = size;
     int temp = element[n-1];
     for (int i=n-1; i>=0; i--)
     element[i+1]=element[i];
     element[0]=temp;
}
template <class T>
Array1D<T>&Array1D<T>::geser_kiri()
{
     int n=size;
     int temp = element[0];
     for(int i=0; i<n; i++)
     element[i]=element[i+1];
     element[n-1]=temp;
    
}

int main()
{
    int X(10),Y,Z;
    for (int i=0; i<10; i++)
    X=i;
    cout<<" X = "<< X <<endl;
    cout<<" X is "<< X <<endl;
    Y=X;
    cout<<" Y is "<< Y <<endl;
    Y += 2;
    cout << " X incremented by 2 is " <<X<<endl;
    Z=(Y+X)*Y;
    cout<<"(Y+X)*y is " << Z <<endl;
    cout<< "-(Y+X)*Y is " << -Z <<endl;
    cout<<"setelah digeser kekanan :"<<(Y-X)*Y<<endl;
    cout<<"setelah digeser kekiri  :"<<(Y+X)<<endl;
    system("PAUSE");
}

Rabu, 20 Oktober 2010

Prak 4 S-Data " ARRAY STATIS C++ "

//wadipta lingga
//090 18 260


#include <cstdlib>
#include <iostream>
#define maks5

using namespace std;

class Array1D{
      friend ostream&amp; operator<<(ostream&amp;, const Array1D&amp;);
      friend istream&amp; operator>>(istream&amp;, Array1D&amp;);
public:
       Array1D();
       void cetak();
     
//       void geser_kiri();
//       void geser_kanan();
       void hapus_elemen();
private:
        char A[5];
};


Array1D::Array1D(){
                   for(int i=0;i<5;i++)
                   A[i]='O';
}


void Array1D::cetak(){
     for(int i=0;i<5;i++)
     cout<<A[i]<<" ";
}


ostream&amp; operator<<(ostream&amp; out, const Array1D&amp; x){
         for(int i=0;i<5;i++)
         out<<x.A[i]<<" ";
         out<<endl;
         return out;
}
       


istream&amp; operator>>(istream&amp; in, Array1D&amp; x){
       
      
         for(int i=0;i<5;i++){
                 cout<<"nilai array ke-"<<i+1<<" : ";
                 in>>x.A[i];
                 }
                
         return in;
}



//void Array1D::geser_kanan(){
//     int n=5;
//     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=5;
//     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 posisi;
     cout<<"Pilih indeks berapa yang akan di hapus : ";
     cin>>posisi;
     if(posisi>0 &amp;&amp; posisi<=5)
        A[posisi-1]=' ';
     else cout<<"indeks hanya terdiri dari 1 - 5\n";
}


int main(int argc, char *argv[])
{
    Array1D x;
    cout<<"Array masih kosong : "<<x;
    cin>>x;
    cout<<"Isi Array saat ini : "<<x;
//    x.geser_kiri();
//    cout<<"Isi Array setelah di geser kiri : "<<x;
//    x.geser_kanan();
//    cout<<"Isi Array setelah di geser kanan : "<<x;
    cout<<"Urutan elemen pada indeksnya saat ini : "<<x;
    x.hapus_elemen();
    cout<<"Setelah dihapus menjadi : "<<x;
  
    system("PAUSE");
    return EXIT_SUCCESS;
}

Kamis, 14 Oktober 2010

Prak 2 S-Data " Konstruktor dan Template C++ "

#include <cstdlib>
#include <iostream>


using namespace std;
class Operasi;

class Kompleks
{
friend class Operasi;
friend ostream& operator<<(ostream&, const Kompleks&);
friend istream& operator>>(istream&, Kompleks&);
public:
Kompleks(int s=0, int t=0):a(s),b(t){}
void cetak();
Kompleks operator-();
Kompleks operator-(const Kompleks&);
Kompleks operator+(const Kompleks&);
private:
int a;
int b;
};

void Kompleks::cetak(){


if(b>0) cout << "Bilangan Kompleks : " << a << "+" << b << "i";
else cout << "Bilangan kompleks : " << a << b << "i";
cout << endl;
}

Kompleks Kompleks::operator-(){
Kompleks x;
x.a=a;
x.b=-b;
return x;
}

Kompleks Kompleks::operator-(const Kompleks& m){
Kompleks x;
x.a=a-m.a;
x.b=b-m.b;
return x;
}

Kompleks Kompleks::operator+(const Kompleks& m){
Kompleks x;
x.a=a+m.a;
x.b=b+m.b;
}

ostream& operator<<(ostream& out, const Kompleks& x){
if(x.b==0) out << '[' << x.a << ']';
else if (x.a==0&&x.b==1) out << '[' << "i" << ']';
else if (x.a==0&&x.b==-1) out << '[' << "-i" << ']';
else if (x.a==0&&x.b>1) out << '[' << x.b << "i" << ']';
else if (x.a==0&&x.b<-1) out << '[' << x.b << "i" << ']';
else if (x.b==1) out << '[' << x.a << "+" << "i" << ']';
else if (x.b>1) out << '[' << x.a << "+" << x.b << "i" << ']';
else if (x.b==-1) out << '[' << x.a << "-i" << ']';
else out << '[' << x.a << x.b << ']';
return out;
}

istream& operator>>(istream& in, Kompleks& x){
cout << "Masukan bagian real     : ";
in >> x.a;
cout << "Masukan bagian imajiner : ";
in >> x.b;
return in;
}

class Operasi
{
public:
void cetak();
Kompleks jumlah(const Kompleks&, const Kompleks&);
Kompleks kali(const Kompleks&, const Kompleks&);
Kompleks kurang(const Kompleks&, const Kompleks&);
private:
int a;
int b;
};
void Operasi::cetak(){
if(b>0) cout << "Bilangan Kompleks : " << a << "+" << b << "i";
else cout << "Bilangan kompleks : " << a << b << "i";
cout << endl;
}

Kompleks Operasi::jumlah(const Kompleks& m, const Kompleks& n){
Kompleks temp;
temp.a=m.a+n.a;
temp.b=m.b+n.b;
return temp;
}

Kompleks Operasi::kurang(const Kompleks& m, const Kompleks& n){
Kompleks temp;
temp.a=m.a-n.a;
temp.b=m.b-n.b;
return temp;
}

Kompleks Operasi::kali(const Kompleks& m, const Kompleks& n){
Kompleks temp;
temp.a=(m.a*n.a)-(m.b*n.b);
temp.b=(m.a*n.b)-(m.b*n.a);
return temp;
}

int main(int argc, char *argv[])
{
Kompleks x(2, 3), y(4, -4), t;
Operasi z;
cout << "Menggunakan cetak() : "; x.cetak();
cout << "Menggunakan Overloading : " << x;
cout << "Konjugat : " << -x;
y.cetak();
cout << "\nPenjumlahan menggunakan method : ";
t=z.jumlah(x, y);
t.cetak();
cout << "Penjumlahan menggunakan operator : ";
t=x+y;
cout << x << "+" << y << "=" << t;
cout << "\nPerkalian menggunakan method : ";
t=z.kali(x, y);
z.cetak();
cout << "\nPerkalian menggunakan operator : ";

t-y;
cout << "\n" << x << "-" << y << "=" << t << endl;
Kompleks n;
cin >> n;
cout << n;
system("PAUSE");
return EXIT_SUCCESS;
}

Rabu, 13 Oktober 2010

Prak 3 S-Data '' INHERITANCE Dalam C++ ''

#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_char&);
       //       public:
         //           bil_float()
      
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;
      
    system("PAUSE");
    return EXIT_SUCCESS;
}