Normal
0
false
false
false
EN-US
JA
X-NONE
st1\:*{behavior:url(#ieooui) }
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”,”serif”;
mso-fareast-language:EN-US;}
Kuis dan TM 05
- 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;
- 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];
- 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
- Rasional (int n, int d) num (n), den (d) { }
- Rasional (int n, int d) num (n); den (d) { }
- Rasional (int n, int d) : num (n), den (d) { }
- Rasional (int n, int d) : num (n); den (d) { }
- Opsi-opsi berikut adalah salah kecuali
a. int& r = n; b. int& r = 44; c. int& r = n++; d. int&r = sqrt(n);
- 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
- Banyak fungsi anggota class yang otomatis di-create oleh kompilator jika mereka tidak ditulis secara eksplisit oleh pemrogram adalah:
- satu yaitu default konstruktor
- dua yaitu default kosntruktor dan destructor
- tiga yaitu default kosntruktor, copy konstruktor dan destructor
- empat yaitu default kosntruktor, copy konstruktor, destructor dan overloaded assignment operator.
- Fungsi-fungsi yang dapat diakses oleh object constant adalah :
- constructor dan destructor
- constructor dan fungsi anggota constant
- destructor dan fungsi anggota constant
- constructor, destructor dan fungsi anggota constant
- 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
- Tipe data yang harus diinisialisasi adalah
a. const dan reference b. const dan pointer
c. reference dan pointer d. const, reference dan pointer
- Arti dari function overloading di C++ adalah
- fungsi dengan nama yang sama, isi fungsi sama, parameter sama
- fungsi dengan nama yang sama, isi fungsi sama, parameter beda
- fungsi dengan nama yang sama, isi fungsi beda, parameter sama
- fungsi dengan nama yang sama, isi fungsi beda, parameter beda
- Pernyataan const int * const x = &y; dibaca sebagai
- x adalah konstanta pointer ke integer
- x adalah pointer ke konstanta integer
- x adalah pointer ke integer
- x adalah konstanta pointer ke konstanta integer
- 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;
- 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
- Untuk objet global
- konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
- konstruktor dipanggil sesudah eksekusi main() dan destruktor dipanggil sebelum eksekusi main()
- konstruktor dipanggil sebelum eksekusi main() dan destruktor dipanggil sesudah eksekusi main()
- 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.
Fungsi inline adalah fungsi yang digunakan untuk mengurangi waktu yang dibutuhkan saat eksekusi program namun menggunakan lebih banyak memori.
Fungsi static adalah sebuah fungsi yang tidak terikat dengan objek mana pun melainkan hanya dimiliki oleh class, jadi bisa dipanggil dari mana saja di program.
Fungsi konstan adalah fungsi yang nilainya sudah tidak bisa diubah-ubah lagi, karena itu memerlukan adanya inisialisasi dari awal.
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.
Explicit :
classData
{
private :
int angka;
public :
Data( intangka )
{
this->angka = angka;
}
};
Implicit :
void setNama(char* n){ strcpy(nama, n); }
char*getNama(){ return 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.
Output : 11 55 22 66 33 77 44 88
#include<iostream>
usingnamespace std;
void shuffle(inta[], intn)
{
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();
}
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.
Reference adalah alias atau nama lain dari sebuah variable
Deklarasi
int *r;
int n=0;
r=&n;
Pass by value
Int x
Format parameter x adalah sebuah variable lokal
Merupakan duplikasi dari parameter actual
Tidak bisa mengganti parameter actual
Parameter actual bisa merupakan konstan, variable atau sebuah expresi
Parameter actual hanya bisa di baca
Pass by value lebih tepat untuk objek keecil yang tidak akan di ganti oleh fungsi
Pass by reference
int &r
Formal parameter r adalah sebuah referensi lokal
Merupakan persamaan dari actual parameter
Bisa mengganti parameter actual
Actual parameter harus sebuah variable
Actual parameter bisa menulis dan membaca
Pass by reference cocok untuk objek yang mungkin akan diubah 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));
}
Awalnya Widget y = f(f(x)); mengcopy sekali dari Widget x;
Kemudian pemanggilan fungsi Widget f(Widget u), lalu Widget v(u) mengcopy lagi
Nilai v diambil oleh w kemudian direturn dan Widget v mengcopy Widget u
Widget w mengambil nilai dari v kemudian return dan menjadi Widget y = w
Jadi copy constructor dipanggil 3 kali.
-d1030-
Recent Comments