Tugas Character Building TFI Kegiatan 3

Nama : Janeta

NIM : 1701293396

Isi Laporan : Kegiatan ketiga

 

Kegiatan Ketiga 19 April 2015

Pada hari ketiga ini, kami hanya melanjutkan apa yang kami lakukan pada kegiatan kedua yaitu mewarnai. Karena dari yayasannya sendiri memberikan saran kalau kita dipentingkan untuk bisa berkomunikasi, bersosialisasi dan berteman dengan mereka. Setidaknya mereka menjadi merasa senang dan ada yang mau bermain bersama mereka.

Disana pun mereka tidak di tinggal sendirian, karena mereka selalu ditemani oleh pendampingnya masing-masing, jadi setiap pendamping memegang beberapa anak. Karena kami hanya di berikan waktu sebentar setiap kegiatan kami, maka kami memberitahu bahwa minggu depannya akan kami berikan hadiah ke semua anak-anaknya dan perpisahan kepada anak-anaknya

Print

1433260170641 1433260127354 1433260100068 kegiatan-1-cb_3442

Posted in Uncategorized | Leave a comment

Tugas Character Building TFI Kegiatan 2

Nama : Janeta

NIM : 1701293396

Isi Laporan : Kegiatan kedua

 

Kegiatan Kedua 12 April 2015

Pada kegiatan kedua ini kami isi dengan kegiatan mewarnai. Kami sudah menyediakan kertas yang isinya sudah ada gambar yang tinggal di warnai oleh mereka. Kami pun juga menyediakan pensil warna untuk mereka gunakan. Kami juga ikut mewarnai di samping mereka, kami membimbing mereka dan mengajak mereka berbicara. Tawa dan keceriaan pun memenuhi suasana disana. Sebagian dari mereka, ada yang memang senang dengan mewarnai sehingga sungguh bagus hasilnya tetapi ada juga yang mungkin masih kurang dalam mewarnai karena mereka memiliki kesukaannya yang lain. Setidaknya dengan kami melakukan kegiatan kecil ini, dapat membantu mereka dalam pengembangan motorik dan ke kreatifitas mereka

Print

kegiatan 1 CB_3345 kegiatan 1 CB_4084 kegiatan-1-cb_98 kegiatan-1-cb_3442

Posted in Uncategorized | Leave a comment

Tugas Character Building TFI Kegiatan 1

Nama : Janeta

NIM : 1701293396

Isi Laporan : Kegiatan pertama

 

Pada kegiatan kali ini saya bersama kelompok saya mempunyai sebuah tugas CB yang bertemakan Interpersonal Development yang artinya menjalin suatu hubungan ataupun relasi kepada semua orang dan peduli akan sesama.

Lalu pada kegiatan ini kami memilih untuk melakukan tugas ini di sebuah yayasan yang tidak jauh dari Binus Square yang bernama Yayasan Tri Asih.

Yayasan Tri Asih adalah sebuah lembaga swasta Katolik yang bergiat dalam karya habilitasi dan rehabiltasi  bagi penyandang tunagrahita meliputi bidang-bidang:

  • Pendidikan dan Pengajaran (Kelas-kelas Persiapan, SDLBC1, SDLBC s/d SMKLBC)
  • Pelbagai terapi (fisio-speech-occupational-patterning-giok)
  • Pelatihan Kerja (menenun, menjahit, memasak, dan mengurus kantin/kios)
  • Penyelenggaraan tempat kerja berupa sebuah workshop
  • Penitipan dan perawatan bagi penyandang tunagrahita berat

Kegiatan Pertama 29 Maret 2015

Pada kegiatan pertama kami, kami hanya bernyanyi, bermain dan berkenalan dengan mereka. Kami sungguh terkejut karena kami bergabung dengan salah satu komunitas dari katholik yang secara tidak langsung juga melakukan kegiatan di hari yang sama dengan kita. Ini sungguh membantu kami karena kami memang tidak mengetahui harus bagaimana awalnya, dan berkat mereka kami jadi memiliki gambaran selanjutnya. Sungguh beruntung kami mendapatkan bantuan dari mereka, sehingga kegiatan kami berjalan dengan lancar dan penuh dengan kesenangan.

Print

42a73ba9a6452c5829cc94d0c4d5100de496261 42fed5c82941edfe73b4a3ca9222eccce3d83ae 50ce94a4a4ed06ec3bc84d182223b952d5313bd 52e785c014868a495ed7e7bdd5b05f3d27fae6d kegiatan 1 CB_1846 kegiatan 1 CB_5203

 

Posted in Uncategorized | Leave a comment

OOP TM 06

UTS T0044 TAHUN 20XX

 

Pilihan Ganda (40%)

 

01.Fungsi friend adalah

a. fungsi bukan anggota klas untuk mengimplementasikan function overloading

b. fungsi bukan anggota klas untuk mengimplementasikan function overriding

c. fungsi bukan anggota klas untuk mengimplementasikan polimorfisme

    d. fungsi bukan anggota klas untuk mengakses data anggota klas

 

02. Modifier const dapat digunakan untuk mendeklarasikan

a. pointer dan reference                                  b. reference dan object

c. object dan pointer                                       d. pointer, reference dan object

03. Function overloading dibedakan berdasarkan function signatures yaitu

a. tipe parameter dan banyak parameter

b. banyak parameter dan urutan parameter

c. urutan parameter dan tipe parameter

        d. tipe parameter, banyak parameter dan urutan parameter

 

04. Generic programming adalah salah satu fitur utama OOP, dan di C++ generic programming diimplementasikan menggunakan

a. polymorphism          b. inheritance               c. templates    d. packages

05. Deklarasi berikut  ini yang benar adalah

a. int& r = 77;                                                  b. int& r = nn;    

c. int& r = n++;                                               d. int& r =  cubic(n);

06. Manfaat dari inheritance di C++ antara adalah

a. reuseability dan extendability

b. extendability dan function overriding

c. function overriding dan reuseability

  d. reuseability, extendability dan function overriding

07. Opsi-opsi berikut adalah benar kecuali

a. Destruktor tidak boleh mempunyai return type.

b. Destruktor  tidak boleh mempunyai argumen.

c. Konstruktor tidak boleh mempunyai argumen.

d. Konstruktor  tidak boleh mempunyai return type.

08.Output dari penggalan program berikut

class Mhs {

public:

Mhs() {cout << “Constructor mahasiswa dieksekusi\n”}

~Mhs() {cout << “Destructor mahasiswa dieksekusi\n”}

};

void main() {

Mhs M01;

cout << “Antarobject M01 dan M02\n”;

Mhs M02;

}

adalah:

a. Constructor mahasiswa dieksekusi             b. Constructor mahasiswa dieksekusi

Constructor mahasiswa dieksekusi                 Destructor mahasiswa dieksekusi

Antarobject M01 dan M02                             Antarobject M01 dan M02

Destructor mahasiswa dieksekusi                   Constructor mahasiswa dieksekusi

Destructor mahasiswa dieksekusi                   Destructor mahasiswa dieksekusi

c. Constructor mahasiswa dieksekus           d. Destructor mahasiswa dieksekusi

Antarobject M01 dan M02                           Constructor mahasiswa dieksekusi

    Constructor mahasiswa dieksekusi             Antarobject M01 dan M02

Destructor mahasiswa dieksekusi                Constructor mahasiswa dieksekusi

    Destructor mahasiswa dieksekusi                Destructor mahasiswa dieksekusi

09. Relasi yang paling reasonable antara class Car dengan class Machine adalah

a. is a               b. has a           c. know  a        d. derive a

10. Untuk klas T, prototype untuk overloaded stream output operator adalah

a. friend ostream& operator>> (ostream&, const T&);

     b. friend ostream& operator<< (ostream&, const T&);

c. inline ostream& operator>> (ostream&, const T&);

d. inline ostream& operator<< (ostream&, const T&);

11. Opsi berikut ini yang benar adalah

a. pointer dan reference keduanya tidak harus diinisialisasi.

b. pointer tidak harus diinisialisasi sedangkan reference harus diinisialisasi.

c. pointer harus diinisialisasi sedangkan reference tidak harus diinisialisasi.

d. pointer dan reference keduanya harus diinisialisasi.

12. Untuk klas T, sintaks overloaded pre increment operator adalah

a. T operator++();                             b. T operator++ (int);

c. T :: operator++ ();                            d. T :: operator++(int);

13. Esensinya class dan struct adalah sama dalam C++. Perbedaan yang paling signifikan di antara mereka adalah

  1. default akses class adalah private sedangkan struct adalah private
  2. b.      default akses class adalah private sedangkan struct adalah public
  3. default akses class adalah public sedangkan struct adalah private
  4. default akses class adalah public sedangkan struct adalah private

14. Operator-operator berikut tidak dapat di-overload kecuali

a. :                   b. ::                  c. 😕                  d.  .*

15. Constructor initialization list dari Rasio (int n, int d) {num = n; den = d; } adalah

a. Rasio (int n, int d) : n (num), d (den) { }

b. Rasio (int n, int d) : n (num); d (den) { }

  c. Rasio (int n, int d) : num (n), den (d) { }

d. Rasio (int n, int d) : num (n); den (d) { }

16. Modifier const dapat diberikan pada object maupun fungsi untuk membuat mereka mempunyai nilai yang tetap. Opsi-opsi berikut adalah benar kecuali

a. const Time noon(12, 0, 0);              b. int setData() const;

c. int  getData() const;                                    d. void print() const;

17. Interface suatu klas adalah

a. data anggota                                    b. prototipe fungsi anggota

c. implementasi fungsi anggota        d. data anggota dan prototipe fungsi anggota

18. Opsi berikut yang tidak dapat di-overload adalah

a. contructor                b. destructor c. operator                   d. function

19. OOP diklaim menggunakan model dynamic dalam pemrograman. Klaim ini didasarkan pada adanya komunikasi antara

a. object dengan object                     b. object dengan class

c. class dengan object                         d. class dengan class

20. Fungsi-fungsi yang dapat diakses object constant adalah :

a. constructor dan destructor

b. destructor dan fungsi anggota constant

c. fungsi anggota constant dan contructor

d. constructor, destructor dan fungsi anggota constant

 

 

Essay (60 poin)

1. (15 poin) Ada sejumlah karakteristik yang membedakan OOP dengan procedural programming diantaranya adalah ADT, inheritance, dynamic binding yang tidak lain adalah true polymorphism dan generic programming, Tiga topik terakhir belum kita pelajari sehingga dalam soal ini kita hanya fokus pada ADT.

a. Apa yang dimaksud dengan ADT?

b. Mengapa kita memerlukan ADT?

e. Apa yang kamu ketahui tentang relasi antara ADT, encapsulation dan class. Berikan contohnya.

2. (15 poin) Reference adalah salah satu tipe data baru di C++ yang sebelumnya tidak ada di C.

a. Apa yang dimaksud dengan reference di C++?

b. Bagaimana kita mendeklarasikan tipe reference di C++?

c. “… reference harus diinisialisasi sedangkan pointer tidak perlu diinisialisasi …” Apa komentar Anda tentang pernyataan ini?

3. (15 poin) Ada tiga pendekatan fungsi untuk mengimplementasikan tugas identik untuk tipe data berbeda yaitu naïve approach, function overloading dan function template. Function template akan kita temui nanti di UAS sedangkan naïve approach jarang kita temui karena difficult to keeping track of multiple function names dan lead to programming errors . Dengan alasan ini maka kedua metode ini tidak layak jika diujikan disini.

a. Apa yang dimaksud dengan function overloading di C++ dan apa manfaatnya?

b. Bagaimana kita membedakan satu fungsi dengan fungsi lain di function overloading?

c. Mengapa function overloading dengan return type berbeda tidak dibolehkan?

4. (15 poin) C++ membedakan passing by address dan passing by reference.

a. Tulislah prototipe passing by address dan passing by reference fungsi swap() untuk menukar dua nilai variabel

b. Tulislah definisi kedua prototipe fungsi di atas.

c. Tulislah fungsi main() untuk memanggil kedua definisi fungsi di atas.

 

JAWABAN ESSAY

  1. a. ADT adalah pengelompokan data dan logically related method  dalam suatu entitas

b. Encapsulasi adalah mekanisme untuk membentuk ADT

c. Class adalah implementasi dalam bahasa pemrograman

  1. a. reference adalah alias atau sinonim suatu variable

b. int& r = n;    // r adalah alias dari n, both have same value and same address

  1. reference harus diinisialisasi saat deklarasi sedangkan pointer tidak perlu diinisialisai saat deklarasi
  1. a. Functions overloading adalah fungsi-fungsi dengan tugas identik yang mempunyai  nama yang sama tetapi berbeda prototipenya.

b. Dibedakan menurut  three function signatures yaitu beda tipe parameter , beda banyak parameter dan beda urutan parameter

c. Syntax Error

  1. a . void swap (int* , int*);                                            void swap (int&, int&);

b. void swap (int* x, int* y) {                                      void swap (int& x, int& y) {

int* temp = x;                                                              int temp = x;

x = y;                                                                           x = y;

y = temp;                                                                     y = temp;

}                                                                             }

  1. void main() {                                                                      void main() {

int a = 4, b = 7;                                                                        int a = 4, b = 7;

cout << a << b << endl;                                                            cout << a << b << endl;

swap(&a, &b);                                                             swap(a,b);

cout << a << b << endl;                                                            cout << a << b << endl;

}                                                                            }

I AM PROUD AS A BINUSIAN

Posted in Uncategorized | Leave a comment

OOP TM 05

Kuis dan TM 05

 

  1. Opsi-opsi berikut adalah benar kecuali

a. const Time noon(12, 0, 0);              b. int setData() const;

c. int  getData() const;                                    d. void print() const;

  1. Dynamic array dideklarasikan mengggunakan metode berikut ini

a. int *x = new x[10];                          b. int *x = new int[10];

c. int new *x = int[10];                       d. int *x new = int[10];

  1. Bilangan rasional adalah bilangan yang dapat ditulis dalam bentuk r = n/d di mana n dan d masing-masing adalah tipe data integer. Kita menyebutnya sebagai bilangan pecahan, n = pembilang dan d = penyebut. Untuk class Rasional, constructor initialization list dari konstruktor Rasional(int n, int m) {num = n; den = d; } adalah
    1. Rasional (int n, int d) num (n), den (d) { }
    2. Rasional (int n, int d) num (n); den (d) { }
    3. Rasional (int n, int d) :  num (n), den (d) { }
    4. Rasional (int n, int d) :  num (n); den (d) { }
  1. Opsi-opsi berikut adalah salah kecuali

a. int& r = n;  b. int& r = 44;             c. int& r = n++;           d. int&r = sqrt(n);

  1. Model dynamic dalam OOP terjadi karena adanya interaksi antara

a. class dengan class                            b. class dengan object

c. object dengan class                         d. object dengan object

  1. Banyak fungsi anggota class yang otomatis di-create oleh kompilator jika mereka tidak ditulis secara eksplisit oleh pemrogram adalah:
    1. satu yaitu default konstruktor
    2. dua yaitu default kosntruktor dan destructor
    3. tiga yaitu default kosntruktor, copy konstruktor dan destructor
    4. empat yaitu default kosntruktor, copy konstruktor, destructor dan overloaded assignment operator.
  1. Fungsi-fungsi yang dapat diakses oleh  object constant adalah :
    1. constructor dan destructor
    2. constructor dan fungsi anggota constant
    3. destructor dan fungsi anggota constant
    4. constructor, destructor dan fungsi anggota constant

 

  1. Fungsi anggota yang didesain khusus untuk membantu tugas fungsi anggota lain suatu class disebut

a. friend function                                b. inline function

c. utility/helper function                    d. static function

  1. Tipe data yang harus diinisialisasi adalah

a. const dan reference                                   b. const dan pointer

c. reference dan pointer                      d. const, reference dan pointer

  1. Arti dari function overloading di C++ adalah
    1. fungsi dengan nama yang sama, isi fungsi sama, parameter sama
    2. fungsi dengan nama yang sama, isi fungsi sama, parameter beda
    3. fungsi dengan nama yang sama, isi fungsi beda, parameter sama
    4. fungsi dengan nama yang sama, isi fungsi beda, parameter beda
  1. Pernyataan const int * const x = &y; dibaca sebagai
    1. x adalah konstanta pointer ke integer
    2. x adalah pointer ke konstanta integer
    3. x adalah pointer ke integer
    4. x adalah konstanta pointer ke konstanta  integer

 

  1. Deklarasi yang menyatakan bahwa r adalah reference untuk n adalah

a. int& r = n;  b. int r& = &n;            c. int r& = n;                d. int& r = &n;

  1. Output dari penggalan program berikut

class Dosen {

public:

Dosen() {cout << “Constructor dosen diekseksi\n”}

~Dosen() {cout << “Destructor dosen diekseksi\n”}

};

void main() {

Dosen d0001;

cout << “Antarobject d0001 dan d0002\n”;

Dosen d0002;

}

adalah:

a. Constructor dosen dieksekusi                     b. Constructor dosen diekseksi

Constructor dosen dieksekusi                         Destructor dosen diekseksi

Antarobject d0001 dan d0002                        Antarobject d0001 dan d0002

Destructor dosen dieksekusi                           Constructor dosen diekseksi

Destructor dosen dieksekusi                           Destructor dosen diekseksi

c. Constructor dosen dieksekusi                     d. Constructor dosen diekseksi

Destructor dosen dieksekusi                           Antarobject d001 dan d002

Antarobject d0001 dan d0002                        Constructor dosen dieksekusi

Destructor dosen dieksekusi                           Destructor dosen diekseksi

Constructor dosen dieksekusi                         Destructor dosen diekseksi

 

  1. Untuk objet global
    1. konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
    2. konstruktor dipanggil sesudah eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
    3. konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sesudah eksekusi main()
    4. konstruktor dipanggil sesudah eksekusi main() dan destruktor dipanggil sesudah eksekusi main()

II. Soal Uraian. (60 poin)

01. Seperti halnya tipe data yang dapat diberi modifier, maka fungsi juga dapat diberi modifier. Modfier yang berlaku pada fungsi adalah static, inline, const, friend dan virtual. Fungsi virtual akan  kita pelajari secara ekstensif di polymorphism sehingga ia tidak kita bahas di soal ini. Jelaskan apa yang dimaksud dengan fungsi static, fungsi inline dan fungsi konstan . Jika perrlu melalui contoh.

02. Setiap fungsi anggota class mempunyai parameter tersembunyi yang disebut pointer this. Tipe pointer ini dapat diimplementasikan secara implisit dan eksplisit. Berikan dua contoh bagaimana kita mengimplementasikan pointer this secara implisit dan eksplisit.

03. Diketahui penggalan kode berikut:

//The perfect shuffle for an even number of element:

void shuffle(int a[], int n) {

                 int temp[n];

                 for(int i= 0; i < n/2; i++) {

                        temp[2*i] = a[i];

                        temp[2*i+1] = a[n/2+i];

                 }

                 for(i=0; i<n; i++) a[i] = temp[i];

            }

Jika data masukan adalah (11, 22, 33, 44, 55, 66, 77, 88) apa keluaran dari kode tersebut. Menggunakan data terakhir ini, tulis fungsi main() sebagai driver untuk mengetes kode di atas.

04. Apa yang disebut variable reference? Bagaimana mendeklarasikan bahwa variable r adalah reference dari variable n. Selanjutnya, buatlah perbandingan head to head antara pass by value dan pass by reference. Perbandingan antara lain meliputi sintaks, parameter formal, parameter aktual, arah dan sifat passing dan sebagainya.

05. Berapa kali copy constructor dipanggil pada penggalan kode berikut. Uraikan jawaban Anda.

:

Widget f(Widget u) {

Widget v (u);

Widget w = v;

Return w;

}

main() {

Widget x;

Widget y = f(f(x));

}

Jawaban Essay

  1. Fungsi Static : Merupakan fungsi yang yang dapat dipanggil tanpa classnya. Jadi fungsi ini hanya dapat berlaku pada static variabel. Biasanya bila kita memanggil fungsi mhs.getNim();bila memakai fungsi statik menjadi getNim();

Contoh : static void cobastatic()

{

cout<<”ini function static”<<endl;

}

  • Fungsi Inline: Merupakan fungsi yang dapat mengurangi waktu eksekusi namun meningkatkan ukuran suatu program. Fungsi ini hanya berguna bila waktu yang dikeluarkan untuk function call lebih lama daripada execute code dalam suatu fungsi. Contoh:

inline int hitungLuas(int p, int l){

return p*l;

}

  • Fungsi Konstan: Merupakan fungsi yang dapat memberikan sifat constan kepada suatu fungsi sehingga nilai dari objek dalam fungsi tersebut tidak dapat berubah dan juga hanya dapat diakses oleh constan object.Biasanya fungsi ini dipakai bila tidak ingin merubah nilai suatu objek.Contoh:

void cobaConstant() const{

cout << “ini constant function” << endl;

}

 

       2.  Secara Eksplisit :

void mahasiswa (nama &n)

void nama::nm()

{

mahasisa(*this);

}

Secara Implisit :

void setNama(char* n)

{

strcpy(nama,n);

}

char* getNama()

{

return nama;

}

3. Output : 11 55 22 66 33 77 44 88

#include <iostream>

using namespace std;

void shuffle(int a[], int n)

{

int temp[10];

for(int i= 0; i < n/2; i++)

{

temp[2*i] = a[i];

temp[2*i+1] = a[n/2+i];

}

for(int i=0; i<n; i++)

{

a[i] = temp[i];

cout<<a[i]<<endl;

}

}

int main()

{

int x[8]={11, 22, 33, 44, 55, 66, 77, 88};

shuffle(x,8);

cin.get();

}

4. Variable reference: merupakan nama lain/alias/sinonim untuk memory allocation yang sudah ada. Reference harus diinisialisasi ketika pendeklarasian. Contoh pendeklarasiannya seperti int &r=n;

a)      Pass by value:

Dalam pass by value yang di passing berupa nilai dari suatu variabel

#include<iostream>

Using namespace std;

int tukarvalue(int x, int y){ //Formal parameter berupa variabel biasa

int z;

z = x;

x = y;

y = z;

cout<<endl<<”Nilai di akhir fungsi tukar()”<<endl<<”x= ”<<x<<”y= ”<<y<<endl;

}

int main(){

int a,b;

cout<<”Passing by value”<<endl<<”****************”<<endl<<endl;

cout<<”inputkan nilai a = “<endl;  cin>>a;

cout<<”inputkan nilai b = “<<endl; cin>>b;

cout<<endl<<“Nilai sebelum pemanggilan fungsi”<<endl;

cout<<”a = ”<<a<<”b = “<<b<<endl;

tukarvalue(a,b); //aktual parameter

cout<<endl<<“Nilai setelah pemanggilan fungsi”<<endl;

cout<<”a = ”<<a<<”b = “<<b<<endl;

cin.get();

}

b)      Pass by reference:

Dalam passby reference yang dipasing berupa suatu alamat.Agar lebih jelas mari kita lihat contoh fungsi mirip dengan yang diatas namun telah dimodifikasi sesuai passingnya.

#include<iostream>

Using namespace std;

int tukarreference(int *px, int *py){ //Formal parameter berupa pointer kare yang dipassing adalah alamat

int z;

z = *px;

*px = *py;

*py = z;

cout<< endl<<”Nilai di akhir fungsi tukar(“<<endl;

cout<<”a= “<<*px<<”b= ”<<*py<<endl;

}

int main(){

int a,b;

cout<<”Passing by value”<<endl<<”****************”<<endl<<endl;

cout<<”inputkan nilai a = “<endl;  cin>>a;

cout<<”inputkan nilai b = “<<endl; cin>>b;

cout<<endl<<“Nilai sebelum pemanggilan fungsi”<<endl;

cout<<”a = ”<<a<<”b = “<<b<<endl;

tukarreference(&a,&b); // Merupakan aktual parameter dimana passingnya berupa alamat dari sebuah variabel

cout<<endl<<“Nilai setelah pemanggilan fungsi”<<endl;

cout<<”a = ”<<a<<”b = “<<b<<endl;

// px menuju pada variabel a py menuju pada variabel b

cin.get();

}

 

5. Widget f(Widget u) {

Widget v (u);

Widget w = v;

Return w;

}

main() {

Widget x;

Widget y = f(f(x));

}

Pada Wifget y = f(f(x)); sudah mengcopy 1x dari Widget x; [1] ada f(x) yang memanggil function Widget f(Widget u), lalu Widget v(u); mengcopy 1x [2]. Widget w mengambil nilai v, kemudian direturn menjadi f(w). Widget v mencopy lagi Widget u [3], Widget w mengambil nilai dari v, dan direturn. Menghasilkan Widget y = w terakhir.

Jadi copy constructor dipanggil 3 kali.

Posted in Uncategorized | Leave a comment

OOP TM 04

TM 04 : Class Time

 

  1. Desain klas dengan nama Time yang mempunyai tiga data anggota yaitu hour, minute dan second dengan level akses adalah private. Selain fungsi anggota baku constructor dan destructor, class Time juga mempunyai tiga fungsi anggota lain yang prototipenya adalah sebagai berikut: void setData() , fungsi konstant void geData() dan fungsi konstant void printData(). Tugas ketiga fungsi terakhir ini adalah sebagai berikut: fungsi setData() untuk memberi nilai hour, minute dan second , fungsi getData() untuk mengambil nilai data yang diisi oleh fungsi setData(), sedangkan fungsi printData() untukmencetak ketiga data anggota tersebut.

 

  1.  Definisikan atau implementasikan constructor dan destructor di dalam klas sedangkan fungsi setData() , getData() dan printData() di luar klas Time. Untuk definisi fungsi yang ada di luar class jangan lupa untuk menggunakan scope resolution operator.

 

  1.  Berikan alasan mengapa fungsi getData() dan printData() perlu dibuat konstant?

 

  1.  Selanjutnya tulis fungsi main() untuk mengetes klas yang Anda desain.

 

Jawaban

  1. a.      Class Time{

Private:

 

Int hour;

Int minute;

Int second;

 

Public:

 

Time{

hour=0;

minute=0;

second = 0;

}

Void setHour(int x,int y,int z){

hour=x;

minute=y;

second=z;

}

Int getData(int x){

If(x==1){

Return hour;

}

If(x==2){

Return minute;

}

If(x==3){

Return second;

}

}

Void printData(){

Cout<<”hour :”<<getData(1)<<endl;

Cout << “minute : “<<getData(2)<<endl;

Cout<<”second : “<<getData(3)<<endl;

}

}

 

  1. b.      Void Time :: setData(int x,int y,int z){hour = x;minute=y;second=z;}

Int Time :: getData(int x){if(x==1){return hour;} if(x==2){return minute;} if(x==3){return second;} }

Void printData(){Cout<<”hour :”<<getData(1)<<endl;

Cout << “minute : “<<getData(2)<<endl;

Cout<<”second : “<<getData(3)<<endl;

}

 

  1. c.       karena fungsi getData dan printdata tidak mengubah data yang berada di private. Fungsi mereka hanya untuk return dan untuk cout.

 

  1. d.      Int main(){

Time now;

now.setHour(10,30,50);

printData();

Line.get();

Return 0;

}

 

 

 

 

Posted in Uncategorized | Leave a comment

OOP TM 03

TM 03 : ADT Array danStruct

 

 

Array adalahsuatuADT.Sepertihalnya ADT lain, arraymempunyai data anggotadanoperasi, metodeataufungsianggota.Elemenarraydiaksesberdasarkanposisinya di dalamarrayrelatifterhadapelemenpertama.Operasiutamaarrayadalahstoredanretrieve. Operassistoreuntukmenyimpanelemen e di indeks i array A[] adalah A[i] = e sedangkanoperasiretrieveuntukmengambilsuatuelemendari array A[] di indeks i dandisimpan di elemen e adalahe = A[i].

 

  1. Desainclass ArrayberdasarkanuraianADT Array di atasdenganketentuan level akses data anggotaadalahprivatedan level aksesfungsianggotaadalahpublic. Selainitujanganlupauntukmenambahkanconstructordandestructorpadaclasstersebut. Dalamdesainini, semuafungsianggotakecualiconstructordandestructor, harusberbentukprototype.

 

constint MAX =10;

class Array {

private :

int A[MAX};

int i, e;

public :

Array() { for ( i =0; i < MAX; i++) A[i] = 0; }

~Array();

void store( int, int );

int retrieve (int, int);

};

 

  1. Selanjutnyadefinisikansemuafungsianggota di luarclass Array. Ingatjanganlupauntukmenggunakanscope resolution operator ::

 

void Array :: store (int i, int e) { A[i] = e; }

int Array :: retrieve (int i, int e) { e = A[i]; }

 

  1. Terakhir, tulisfungsimain()sebagaidriveruntukmengujidesainkamu.

 

void main() {

int e;

Array a;

a.store(1,11);

a.store(2,22);

a.store(3,33);

            cout<<endl<<a,retrieve (3,e);

            cout<<endi<<a.retrieve(2,e);

            cout<<endl<<a.retrieve(1,e);

}

Sepertihalnyaarray, structadalahsuatuADT  yangmempunyai data anggotadanoperasi, metodeataufungsianggota. Elemen, memberataufieldstructdiaksesmenggunakan operator dotataupointer ->. Bentukumumnyaadalahsebagaiberikut:

<structure_variabel>.<field_name>

<structure_pointer>®<field_name>

Operasiutamadistructadalahstore(e)danretrieve(). Operassistore(e)untukmenyimpanelemen e di field istruct s adalahs.i = e sedangkanoperasiretrieve()untukmengambilsuatuelemendaristruct s di field i dandisimpan di elemen e adalahe = s.i.

 

  1. DiketahuistrukturdtMhsdengantiga data anggota :nim, namadan IPK sertafungsianggotastore()danretrieve().Desainclass dtMhsberdasarkanuraian  diatasdenganketentuanlevelakses data anggotaadalahprivatedanlevelaksesfungsianggotaadalahpublic. Selainitujanganlupauntukmenambahkanconstructordandestructorpadaclasstersebut. Dalamdesainini, semuafungsianggotakecualiconstructordandestructor, harusberbentukprototype.

 

Class dtMhs{

Private:

Int i;

Int nim;

Char nama[100];

Float ipk;

Public:

Void store(int e);

Int retrieve();

DtMhs(){

Int nim=170000000;

nama = andi;

ipk=0;

}

~dtMhs(){}

}

  1. Selanjutnyadefinisikansemuafungsianggota di luarclass StructIngatjanganlupauntukmenggunakanscope resolution operator ::

Void dtMhs :: store(int e){  ipk= e;   }

Int  dtMhs :: retrieve(){  return ipk ;  }

  1. Terakhir, tulisfungsimain()sebagaidriveruntukmengujidesainkamu.

Int main(){

dtMhs e;

e.store(4);

cout<<”IPK andi : “<<retrieve()<<endl;

line.get();

Return 0;

}

Posted in Uncategorized | Leave a comment

Double Linked List – Tm 02

#include
#include
struct data {
int x;
data *next, *prev;
}*head, *tail, *curr;

void push_front(int x) {
data *add=(struct data*)malloc(sizeof(struct data));
add->x=x;
add->next=add->prev=NULL;
if(head==NULL) {
head=tail=add;
}
else {
add->next=head;
head->prev=add;
head=add;
}
}
void push_back(int x) {
data *add=(struct data*)malloc(sizeof(struct data));
add->x=x;
add->next=add->prev=NULL;
if(head==NULL) {
head=tail=add;
}
else {
add->prev=tail;
tail->next=add;
tail=add;
}
}
void push_middle(int x, int y) {
data *add=(struct data*)malloc(sizeof(struct data));
add->x=x;
add->next=add->prev=NULL;
if(head==NULL) {
head=tail=add;
}
else {
if(head->x==y) {
add->next=head->next;
add->prev=head;
if(head==tail) {
push_back(x);
}
else {
head->next->prev=add;
head->next=add;
}
}
else if(tail->x==y) {
push_back(x);
}
else {
curr=head;
while(curr->next!=tail) {
if(curr->x==x) break;
curr=curr->next;
}
if(curr!=tail&&curr->x==y) {
add->next=curr->next;
add->prev=curr;
curr->next->prev=add;
curr->next=add;
}
}
}
}
void view() {
curr=head;
while(curr!=NULL) {
printf(curr->next==NULL?”%d”:”%d->”, curr->x);
curr=curr->next;
}
getchar();
}
int main() {
printf(“Masukkan angka 1 dan 3\n”);
push_front(1);
push_back(3);
view();
printf(“Masukkan angka 2 di antara 1 dan 3\n”);
push_middle(2, 1);
view();
printf(“Masukkan data 0 di depan list angka\n”);
push_front(0);
view();
printf(“Masukkan data 5 di paling akhir list angka\n”);
push_back(5);
view();
return 0;
}

Posted in Uncategorized | Leave a comment

OOP TM 02

TM 02

  1. Copy constructor suatu klas dieksekusi jika obyek klas di-copy dengan mekanisme di bawah ini kecuali

a. direct assignment                           b. initialization

c. passing by value                              c. return by value

  1. Fungsi anggota yang otomatis di-create oleh kompilator meskipun ia tidak secara eksplisit ditulis oleh pemrogram dalam definisi klas adalah opsi-opsi di bawah ini kecuali

a. default constructor                                    b. copy constructor

c. destructor                                        d. overloaded constructor

  1. Level akses utility function  atau helper function suatu klas adalah

a. public           b. protected                 c. private                    d. inline

  1. Untuk class X, sintaks copy constructor adalah

a. X(& X)                                            b. X(const X&)

c. X(const &X)                                   d. X(X &)

       5.  C++ class mempunyai

    1. satu konstruktor dan satu destructor
    2. lebih dari satu konstruktor dan satu destructor
    3. satu konstruktor dan lebih dari satu destructor
    4. lebih dari satu konstruktor dan lebih dari satu destructor

6. Apa keluaran dari penggalan program berikut ini:

class Rational {

public:

Rational() { cout << “OBYEK LAHIR.\n”; }

~Rational() { cout << “OBYEK MATI. \n”; }

private:

int num, den;

};

main() {

{   Rational x;

cout << “SEKARANG x HIDUP.\n”;

}

cout << “ANTAR BLOK.\n”;

{   Rational y;

cout << “SEKARANG y HIDUP.\n”;

}

}

7. Uraikan apa yang kamu ketahui tentang constructor, user defined constructor, default constructor, parameterized constructor,  constructor initialization list, copy constructor dan destructor.

8. Uraikan apa yang kamu ketahui tentang default arguments di C++. Sebutkan apa saja  yang dapat digunakan sebagai devalut value. Mengapa nilai constant tidak dapat digunakan sebagai default value untuk reference variable?

9. Apa yang dimaksud dengan function overloading? Kriteria apa yang digunakan untuk menyatakan bahwa dua fungsi dengan nama yang sama adalah berbeda satu sama lain.

10. Banyak penulis buku menyatakan bahwa untuk  class X paling sedikit  mempunyai satu constructor yaitu default constructor dengan prototype X(). Tetapi John Hubbard dalam bukunya Programming with C++ menyatakan bahwa setiap class X paling sedikit mempunyai dua constructor yaitu default X() dan copy constructor yang prototipe sintaksnya adalah X (const X & ), fungsi anggota dengan satu parameter dan pass by constant reference.

Tugas Anda:

a. Kapan copy constructor dieksekusi?

b. Untuk penggalan kode berikut berapa kali copy constructor dieksekusi?

class Rational {

public :   Rational(int n, int d) : num(n), den (d) { }

Rational(const Rational  & r) : num(r.num), den(r.den)

{ cout << “COPY CONSTRUCTOR CALLED\n”;}

private: int num, den;

};

Rational f(Rational r) {

Rational s = r;

return s;

}

main() {

Rational(22,7);

Rational y(x);

f(y);

            }

Jawaban essay

6.         OBYEK LAHIR.

SEKARANG x HIDUP.

OBYEK MATI.

ANTAR BLOK.

OBYEK LAHIR.

SEKARANG y HIDUP.

OBYEK MATI.

7. Constructor, yaitu sebuah method khusus untuk menciptakan objek dari kelas si    constructor.

-User defined constructor, yaitu constructor yang didefinisikan secara eksplisit oleh programmer, yang memiliki isi berbeda dari default constructor.

-Parameterized constructor, yaitu constructor yang memiliki parameter untuk          memberikan nilai awal pada objek yang ingin dibuat.

-Constructor initialization list, yaitu cara lain menginisialisasi nilai-nilai parameter awal dari sebuah objek suatu class(selain menggunakan assignment). Diletakkan di definisi fungsi constructor, sebelum body constructor tersebut.

-Copy constructor, yaitu sebuah function yang menginisialisasi sebuah objek          menggunakan objek lain yang berasal dari kelas yang sama.

-Destructor, yaitu fungsi untuk menghapus sebuah objek, dengan melepaskan         memori yang digunakan objek tersebut.

8. Default arguments yaitu nilai-nilai parameter yang akan digunakan untuk mengisi variabel-variabel awal dari sebuah objek jika nilai-nilai parameter tersebut tidak diberikan. Default value dapat merupakan constant, variabel global, atau function call.

9. Function overloading yaitu suatu kondisi dimana terdapat 2 atau lebih function berbeda yang bernama sama. 2 function dapat dikatakan overloading jika return type keduanya adalah sama tetapi function signature-nya berbeda. Function signature yaitu: jumlah parameter, tipe data parameter, dan urutan parameter.

10. A. Copy constructor akan dieksekusi jika: Sebuah objek disalin dengan cara inisialiasi deklarasi, objek digunakan sebagai parameter function menggunakan passed-by-value dan objek dijadikan nilai return oleh sebuah function.

B. 4 kali.

Posted in Uncategorized | Leave a comment

Linked List

#include <stdio.h>
#include <stdlib.h>

struct node
{
int x;
struct node*next;
};

int main()
{
struct node *root;
struct node *conductor;
int flag = 0;
root = (struct node*)malloc(sizeof(struct node));
root->next=0;
do
{
printf(“Insert Number [1 – 100] :”);
scanf(“%d”,&root->x);fflush(stdin);
}
while(root->x<0||root->x>100);
flag++;
while(flag<=10)
{
system(“cls”);
conductor=root;
printf(“%d”,conductor->x);
while(conductor->next!=0)
{
conductor=conductor->next;
printf(“->%d”,conductor->x);
}
if(flag==10)
{
break;
}
conductor->next=(struct node*)malloc(sizeof(struct node));
conductor=conductor->next;
conductor->next=0;
printf(“\n”);
do
{
printf(“Insert Number [1 – 100] :”);
scanf(“%d”,&conductor->x);fflush(stdin);
}while(conductor->x<0||conductor->x>100);
flag++;
}
getchar();
return 0;
}

Posted in Uncategorized | Leave a comment