Praktikum 1 Struktur Data

Soal Pretest

1. Apa itu kelas,dan template?(nilai 20)
2. Tuliskan atau deklarasikan sebuah class bernama MyClass yang mempunyai konstruktor dengan method masukan, proses, keluaran serta data member x,y dan z bertipe floating point. (nilai 60)
3. Berikan contoh pendeklarasian suatu objek pada sebuah class beserta cara pemanggilan methodnya. (nilai 20)

jawaban

1. Class adalah kumpulan atas definisi data, objek dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Template adalah metode yang memberitahukan kepada kompiler tentang algoritma mana yang digunakan untuk membentuk suatu fungsi.

2. class MyClass{
public:
MyClass();
void masukan();
void proses();
void keluaran();
private:
float x,y,z;
};

3. MyClass x;
x.masukan();
x.proses();
x.keluaran();

 

Soal Posttes dan jawabannya

#include <cstdlib>
#include <iostream>

using namespace std;
template <class T>
class aritmatik{
      public:
             void judul(){cout<<"\t\t\tClass dan Objek serta Template\n\n\n\n";}
             aritmatik(T p=0, T q=0):a(p),b(q){}
             void cetak();
             aritmatik operator -();
             aritmatik operator -(const aritmatik&);
             aritmatik operator +(const aritmatik&);
             aritmatik<T> bagi(const aritmatik<T>&, const aritmatik<T>&);
             aritmatik<T> kali(const aritmatik<T>&, const aritmatik<T>&);
      private:
              T a;
              T b;
      };

      template <class T>
      void aritmatik<T>::cetak(){
           cout<<a<<" , "<<b;
           }

      template <class T>
      aritmatik<T> aritmatik<T>::operator-(){
                   aritmatik x;
                   x.a=a;
                   x.b=-b;
                   return x;
                   }

      template <class T>
      aritmatik<T> aritmatik<T>::operator-(const aritmatik& y){
                   aritmatik x;
                   x.a=a-y.a;
                   x.b=b-y.b;
                   return x;
                   }

      template <class T>
      aritmatik<T>  aritmatik<T>::operator+(const aritmatik& y){
                   aritmatik x;
                   x.a=a+y.a;
                   x.b=b+y.b;
                   return x;
                   }

      template <class T>
      aritmatik<T> aritmatik<T>::bagi(const aritmatik<T>& x, const aritmatik<T>& y){
                   aritmatik z;
                   z.a=x.a/y.a;
                   z.b=x.b/y.b;
                   return z;
                   }

      template <class T>
      aritmatik<T> aritmatik<T>::kali(const aritmatik<T>& x, const aritmatik<T>& y){
                   aritmatik z;
                   z.a=x.a*y.a;
                   z.b=x.b*y.b;
                   return z;
                   }

int main(int argc, char *argv[])
{
    aritmatik<double> dataA(5.5,2), dataB(0,2), dataC;
    dataC.judul();
    cout<<"Isi dataA \n ";
    dataA.cetak();
    cout<<"\n\nIsi dataB \n ";
    dataB.cetak();
    cout<<"\n\nOperasi Aritmatika dengan operator\n";
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" + dataB(";dataB.cetak();cout<<")\n";
    dataC = dataA + dataB;
    dataC.cetak();
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" - dataB(";dataB.cetak();cout<<")\n";
    dataC = dataA - dataB;
    dataC.cetak();
    cout<<"\n\n- dataA(";dataA.cetak();cout<<")\n";
    dataC = - dataA;
    dataC.cetak();
    cout<<"\n\n- dataB(";dataB.cetak();cout<<")\n";
    dataC = - dataB;
    dataC.cetak();
    cout<<"\n\nOperasi Aritmatika dengan method\n";
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" / dataB(";dataB.cetak();cout<<")\n";
    dataC=dataC.bagi(dataA,dataB);
    dataC.cetak();
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" * dataB(";dataB.cetak();cout<<")\n";
    dataC=dataC.kali(dataA,dataB);
    dataC.cetak();

    cout<<endl<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Soal Posttes :
1. Modifikasi program diatas menjadi program dengan bentuk class biasa tanpa menggunakan template. (nilai 40)
2. Ubahlah overloading operator aritmatika ke dalam bentuk method dan sebaliknya, ubahlah method ke dalam bentuk overloading operator aritmatika.(hasil benar, beres tak ada masalah nilai 60)
jawaban :

#include <cstdlib>
#include <iostream>

using namespace std;
class aritmatik{
      public:
             void judul(){cout<<"\t\t\tClass dan Objek serta Template\n\n\n\n";}
             aritmatik(double p=0, double q=0){this->a=p,this->b=q;}
             void cetak();
             aritmatik asign(const aritmatik&);
             aritmatik kurang(const aritmatik&, const aritmatik&);
             aritmatik tambah(const aritmatik&, const aritmatik&);
             aritmatik operator /(const aritmatik&);
             aritmatik operator *(const aritmatik&);
      private:
              double a;
              double b;
      };

      void aritmatik::cetak(){
           cout<<a<<" , "<<b;
           }

      aritmatik aritmatik::asign(const aritmatik& x){
                   aritmatik z;
                   z.a=x.a;
                   z.b=-x.b;
                   return z;
                   }

      aritmatik aritmatik::kurang(const aritmatik& x, const aritmatik& y){
                   aritmatik z;
                   z.a=x.a-y.a;
                   z.b=x.b-y.b;
                   return z;
                   }

      aritmatik aritmatik::tambah(const aritmatik& x, const aritmatik& y){
                   aritmatik z;
                   z.a=x.a+y.a;
                   z.b=x.b+y.b;
                   return z;
                   }

      aritmatik  aritmatik::operator/(const aritmatik& y){
                   aritmatik x;
                   x.a=a/y.a;
                   x.b=b/y.b;
                   return x;
                   }

      aritmatik  aritmatik::operator*(const aritmatik& y){
                   aritmatik x;
                   x.a=a*y.a;
                   x.b=b*y.b;
                   return x;
                   }

int main(int argc, char *argv[])
{
    aritmatik dataA(5.5,2), dataB(2), dataC;
    dataC.judul();
    cout<<"Isi dataA \n ";
    dataA.cetak();
    cout<<"\n\nIsi dataB \n ";
    dataB.cetak();
    cout<<"\n\nOperasi Aritmatika dengan method\n";
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" + dataB(";dataB.cetak();cout<<")\n";
    dataC=dataC.tambah(dataA,dataB);
    dataC.cetak();
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" - dataB(";dataB.cetak();cout<<")\n";
    dataC=dataC.kurang(dataA,dataB);
    dataC.cetak();
    cout<<"\n\n- dataA(";dataA.cetak();cout<<")\n";
    dataC=dataC.asign(dataA);
    dataC.cetak();
    cout<<"\n\n- dataB(";dataB.cetak();cout<<")\n";
    dataC=dataC.asign(dataB);
    dataC.cetak();
    cout<<"\n\nOperasi Aritmatika dengan operator\n";
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" / dataB(";dataB.cetak();cout<<")\n";
    dataC=dataA/dataB;
    dataC.cetak();
    cout<<"\n\ndataA(";dataA.cetak();cout<<")";cout<<" * dataB(";dataB.cetak();cout<<")\n";
    dataC=dataA*dataB;
    dataC.cetak();

    cout<<endl<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s