Apr 15

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

 

  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.

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-

Apr 07

TM 04 : Class Time

a. 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.

class Time
{
private :
int hour;
int minute;
int second;

public :
Time()
{
cout << "Time Object Constructor Activate" << endl <<endl;
}

void setData( int jam , int menit , int detik ) { hour = jam ; minute = menit ; second = detik; }
void getData() const {}
void printData() const {
cout << "Hour : " << hour << endl;
cout << "Minute : " << minute << endl;
cout << "Second : " << second << endl;
}

~Time()
{
cout << "Time Object Destructor Activate" << endl;
cin.get();
}

};

b. 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.

class Time
{
private :
int hour;
int minute;
int second;

public :
Time()
{
cout << "Time Object Constructor Activate" << endl <<endl;
}

void setData( int jam , int menit , int detik );
void getData() const;
void printData() const;

~Time()
{
cout << "Time Object Destructor Activate" << endl;
cin.get();
}

};

void Time::setData( int jam , int menit , int detik ) { hour = jam ; minute = menit ; second = detik; }
void Time::getData() const { hour ; minute ; second ; }
void Time::printData() const
{
cout << "Hour : " << hour << endl;
cout << "Minute : " << minute << endl;
cout << "Second : " << second << endl;
}

c. Berikan alasan mengapa fungsi getData() dan printData() perlu dibuat konstant?
Karena di dalam fungsi tersebut sudah tidak akan dilakukan perubahan data, karena itu fungsi tersebut bisa dibuat menjadi fungsi yang konstan.

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

void main()
{
Time waktu;

waktu.setData ( 23 , 02 , 12 );
waktu.getData ();
waktu.printData ();

cin.get();
}

Daniel David 1701291610 02PPT

I AM PROUD AS A BINUSIAN

Apr 07

TM 03 : ADT Array dan Struct

Array adalah suatu ADT. Seperti halnya ADT lain, array mempunyai data anggota dan operasi, metode atau fungsi anggota. Elemen array diakses berdasarkan posisinya di dalam array relatif terhadap elemen pertama. Operasi utama array adalah store dan retrieve. Operassi store untuk menyimpan elemen e di indeks i array A[] adalah A[i] = e sedangkan operasi retrieve untuk mengambil suatu elemen dari array A[] di indeks i dan disimpan di elemen e adalah e = A[i].

a. Desain class Array berdasarkan uraian ADT Array di atas dengan ketentuan level akses data anggota adalah private dan level akses fungsi anggota adalah public. Selain itu jangan lupa untuk menambahkan constructor dan destructor pada class tersebut. Dalam desain ini, semua fungsi anggota kecuali constructor dan destructor, harus berbentuk prototype.

const int 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);
};

b. Selanjutnya definisikan semua fungsi anggota di luar class Array. Ingat jangan lupa untuk menggunakan scope resolution operator ::

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

c. Terakhir, tulis fungsi main() sebagai driver untuk menguji desain kamu.

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 <. Bentuk umumnya adalah sebagai berikut:
.
®
Operasi utama di struct adalah store(e) dan retrieve(). Operassi store(e) untuk menyimpan elemen e di field i struct s adalah s.i = e sedangkan operasi retrieve() untuk mengambil suatu elemen dari struct s di field i dan disimpan di elemen e adalah e = s.i.

a. Diketahui struktur dtMhs dengan tiga data anggota : nim, nama dan IPK serta fungsi anggota store() dan retrieve(). Desain class dtMhs berdasarkan uraian di atas dengan ketentuan level akses data anggota adalah private dan level akses fungsi anggota adalah public. Selain itu jangan lupa untuk menambahkan constructor dan destructor pada class tersebut. Dalam desain ini, semua fungsi anggota kecuali constructor dan destructor, harus berbentuk prototype.

b. Selanjutnya definisikan semua fungsi anggota di luar class Struct Ingat jangan lupa untuk menggunakan scope resolution operator ::

c. Terakhir, tulis fungsi main() sebagai driver untuk menguji desain kamu.

#include

using namespace std;

class Mahasiswa
{
private :
struct
{
char nim[10];
char nama[20];
float ipk;
}dtMhs;

public :
Mahasiswa()
{
strcpy ( dtMhs.nim , ” ” );
strcpy ( dtMhs.nama, “” );
dtMhs.ipk = 0;
}

void storeNIM ( char* );
char* retrieveNIM ();
void storeNama ( char* );
char* retrieveNama ();
void storeIpk ( float );
float retrieveIpk ();

~Mahasiswa() {}

};

void Mahasiswa::storeNIM (char* nomor)
{
strcpy ( dtMhs.nim , nomor );
}

char* Mahasiswa::retrieveNIM()
{
return dtMhs.nim;
}

void Mahasiswa::storeNama (char* name)
{
strcpy ( dtMhs.nama , name );
}

char* Mahasiswa::retrieveNama()
{
return dtMhs.nama;
}

void Mahasiswa::storeIpk ( float angka )
{
dtMhs.ipk = angka;
}

float Mahasiswa::retrieveIpk()
{
return dtMhs.ipk;
}

void main()
{
Mahasiswa mhs1;
mhs1.storeNama ( “Daniel” );
mhs1.storeNIM ( “1701291610” );
mhs1.storeIpk ( 2.70 );

cout << "Nama Mahasiswa : " << mhs1.retrieveNama() << endl;
cout << "NIM Mahasiswa : " << mhs1.retrieveNIM() << endl;
cout << "IPK Mahasiswa : " << mhs1.retrieveIpk() << endl;

cin.get();
}

Daniel David 1701291610 02PPT

I AM PROUD AS A BINUSIAN

Apr 03

#include
#include

char expr[50];
int top = -1;

void intro()
{
printf(“Infix to Postfix Converter Program\n”);
printf(“==================================\n\n”);
printf(“Kelompok :\n\n1. REINARD PANGESTU – 1701292115\n”);
printf(“2. ALVIN SATYAWAN – 1701291850\n”);
printf(“3. WIENA MARCELINA – 1701291516\n”);
printf(“4. DANIEL DAVID – 1701291610\n”);
printf(“5. DEVIANI – 1701292600”);
printf(“\n\n”);
}

void push(char elem) { /* Fungsi memasukan elemen ke dalam stack */
expr[++top] = elem;
}

char pop() { /* Fungsi mengeluarkan isi stack */
return (expr[top–]);
}

int prior(char elem) { /* Fungsi prioritas */
switch (elem)
{
case ‘#’:
return 0;
case ‘(‘:
return 1;
case ‘+’:
case ‘-‘:
return 2;
case ‘*’:
case ‘/’:
return 3;
}
}

void main()
{
intro();
char infix[50], pofx[50], ch, elem;
int i = 0, j = 0;
printf(“\nInput your Infix Expression : “);
scanf(“%s”, infix);
push(‘#’);
while ((ch = infix[i++]) != NULL)
{
if (ch == ‘(‘)
push(ch);
else if (isalnum(ch))
pofx[j++] = ch;
else if (ch == ‘)’)
{
while (expr[top] != ‘(‘)
pofx[j++] = pop();
elem = pop(); /* Mengeluarkan tanda buka kurung */
}
else {
while (prior(expr[top]) >= prior(ch))
pofx[j++] = pop();
push(ch);
}
}
while (expr[top] != ‘#’) /* Mengosongkan stack */
pofx[j++] = pop();
pofx[j] = NULL;
printf(“\n\nInfix Expression : %s \n\nPostfix Expression is : %s\n”, infix, pofx);

getchar();
getchar();
}