Kuis dan TM 05
(Albert Hendry Harsono/1701296914/02PPT)
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;
2. 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];
3. 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
a. Rasional (int n, int d) num (n), den (d) { }
b. Rasional (int n, int d) num (n); den (d) { }
c. Rasional (int n, int d) : num (n), den (d) { }
d. Rasional (int n, int d) : num (n); den (d) { }
4. Opsi-opsi berikut adalah salah kecuali
a. int& r = n;
b. int& r = 44;
c. int& r = n++;
d. int&r = sqrt(n);
5. 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
6. Banyak fungsi anggota class yang otomatis di-create oleh kompilator jika mereka tidak ditulis secara eksplisit oleh pemrogram adalah:
a. satu yaitu default konstruktor
b. dua yaitu default kosntruktor dan destructor
c. tiga yaitu default kosntruktor, copy konstruktor dan destructor
d. empat yaitu default kosntruktor, copy konstruktor, destructor dan overloaded assignment operator.
7. Fungsi-fungsi yang dapat diakses oleh object constant adalah :
a. constructor dan destructor
b. constructor dan fungsi anggota constant
c. destructor dan fungsi anggota constant
d. constructor, destructor dan fungsi anggota constant
8. 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
9. Tipe data yang harus diinisialisasi adalah
a. const dan reference
b. const dan pointer
c. reference dan pointer
d. const, reference dan pointer
10. Arti dari function overloading di C++ adalah
a. fungsi dengan nama yang sama, isi fungsi sama, parameter sama
b. fungsi dengan nama yang sama, isi fungsi sama, parameter beda
c. fungsi dengan nama yang sama, isi fungsi beda, parameter sama
d. fungsi dengan nama yang sama, isi fungsi beda, parameter beda
11. Pernyataan const int * const x = &y; dibaca sebagai
a. x adalah konstanta pointer ke integer
b. x adalah pointer ke konstanta integer
c. x adalah pointer ke integer
d. x adalah konstanta pointer ke konstanta integer
12. 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;
13. 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
Constructor dosen dieksekusi
Antarobject d0001 dan d0002
Destructor dosen dieksekusi
Destructor dosen dieksekusi
b. Constructor dosen diekseksi
Destructor dosen diekseksi
Antarobject d0001 dan d0002
Constructor dosen diekseksi
Destructor dosen dieksekusi
c. Constructor dosen dieksekusi
Destructor dosen dieksekusi
Antarobject d0001 dan d0002
Destructor dosen dieksekusi
Constructor dosen dieksekusi
d. Constructor dosen diekseksi
Antarobject d001 dan d002
Constructor dosen dieksekusi
Destructor dosen diekseksi
Destructor dosen diekseksi
14. Untuk objek global
a. konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
b. konstruktor dipanggil sesudah eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
c. konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sesudah eksekusi main()
d. 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. Modifier 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 perlu melalui contoh.
– Static Function adalah fungsi yang bisa dipanggil tanpa deklarasi objek dari kelas tersebut. Static Function hanya bisa mengakses static variable.
Contoh:
for (int i=0; i<5; i++) { static int n=0; }
– Inline Function adalah fungsi singkat yang biasanya digunakan untuk mempersingkat waktu eksekusi suatu program namun menyebabkan ukuran program bertambah dari ukuran semula.
Contoh:
inline int cube(int n) { return n*n*n; }
– Constant Function adalah fungsi yang data member-nya tidak bisa diubah (bersifat konstan)
Contoh:
void print()const { cout << ” ”; return; }
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.
Contoh Implisit:
class Mahasiswa { private: int IPK; public: Mahasiswa(int IP) { SetIPK(IP); } void SetIPK(int IP) { IPK = IP; } int GetIPK() { return IPK; } }; int main() { Mahasiswa Mhs(1); Mhs.SetIPK(2); // pointer this secara implisit cout << Mhs.GetID() << endl; }
Contoh Eksplisit:
class Mahasiswa { char nama[25]; public: void setNama(char *nama) { strcpy(this->nama,nama); } };
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.
void main() { int a[20]={11,22,33,44,55,66,77,88}; int n=8; shuffle(a,n); cout << "Output: "; for(int x=0;x<8;x++) { cout << a[x] << " "; } cin.get(); }
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.
Variable Reference adalah sinonim atau alias dari suatu variable.
// variable r adalah reference dari variable n
int &r = n;
// head to head antara pass by value dan pass by reference
Passing by Value:
– Sintaks: int x;
– Formal parameter x adalah Local variable
– x adalah ‘duplikat’ dari Actual parameter
– x tidak dapat mengubah Actual parameter
– Actual parameter bisa berbentuk const, variable, atau expression
– Actual parameter bersifat read-only
– Berguna untuk objek yang simpel dan mencegah perubahan nilai
Passing by Reference:
– Sintaks: int &r;
– Formal parameter r adalah Local reference
– p adalah sinonim/alias dari Actual parameter
– p dapat mengubah Actual parameter
– Actual parameter harus berbentuk variable
– Actual parameter bersifat read-write
– Berguna untuk seluruh objek yang mungkin dimodifikasi nilainya oleh fungsi
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));
}
Copy constructor dipanggil 6 kali.
-d1030-