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();
}

Mar 20

#include stdio.h
#include stdlib.h

struct node
{
int angka;
struct node *next, *prev;
}*head, *tail, *curr, *temp;

void pushDepan(int n)
{
curr=(struct node*)malloc(sizeof(struct node));
curr->angka=n;
if(head==NULL)
{
head=tail=curr;
}
else
{
head->prev=curr;
curr->next=head;
head=curr;// masih ragu
}
tail->next = NULL;
head->prev = NULL;
}

void pushBelakang(int n)
{
curr=(struct node*)malloc (sizeof(struct node));
curr->angka=n;
if(head==NULL)
{
head=tail=NULL;
}
else{
tail->next=curr;
curr->prev=tail;
tail=curr;
}
tail->next=head->prev=NULL;
}

void pushTengah(int n,int position){
curr=head;
if(head!=NULL && position>0){
for(int i=0;inext;
}
temp=(struct node*)malloc(sizeof(struct node));
temp->angka=n;
if(position==1)
{
pushDepan(n);
}
else if(curr==NULL)
{
pushBelakang(n);
}
else{
temp->next=curr;
temp->prev=curr->prev;
curr->prev->next=temp;
curr->prev=temp;
}
}
}

void printAll(){
if(head==NULL)
{
printf(“Empty!\n”);
}
else{
curr=head;
while(curr!=NULL){
printf(” %d”,curr->angka);
curr=curr->next;
}
}
printf(“\n\n”);
}

void menu()
{
int pilihan,num,posisi;
do
{
printf(“1. Masukkan di depan\n2. Masukkan di tengah\n3. Masukkan di belakang\n4. Keluar”);
printf(“\nInput : “);
scanf(“%d”, &pilihan); fflush(stdin);
}while(pilihan4);

switch (pilihan)
{
case 1 : printf(“Input num : “);
scanf(“%d”, &num);
fflush(stdin);pushDepan(num);break;
case 2 :
printf(“Input Num : “);
scanf(“%d”, &num);
fflush(stdin);
printf(“Posisi : “);
scanf(“%d”, &posisi); fflush(stdin);
pushTengah(num, posisi);break;
case 3 : printf(“Input Num : “);
scanf(“%d”, &num); fflush(stdin);
pushBelakang(num);break;
case 4 : exit(1);break;
}
printAll();
}

void main()
{
pushDepan(1);
pushBelakang(3);
printAll();
menu();
getchar();
}

Mar 17

Normal
0

false
false
false

EN-US
JA
X-NONE

/* 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;}

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”;

            }

}

            Jawab :

            OBYEK LAHIR.

            SEKARANG x HIDUP.

OBYEK MATI.

ANTAR BLOK.

OBYEK LAHIR.

SEKARANG y HIDUP.

OBYEK MATI.

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

Jawab :

Constructor adalah fungsi yang dijalankan saat pertama kali objek dibuat.

USER defined constructor adalah constructor yang dibuat sendiri oleh user secara eksplisit yang berbeda dengan default constructor yang disediakan oleh program.

Default constructor adalah constructor yang memang sudah disediakan oleh program tersebut, dan akan dijalakan secara otomatis apabila user tidak membuat constructor secara eksplisit terlebih dahulu.

Parameterized constructor adalah constructor yang diberikan parameter untuk menentukan nilai awal dari constructor.

Constructor initialization list adalah cara lain untuk mengisi nilai parameter awal sebuah constructor, yaitu dengan cara meletakkan definisi fungsi constructor sebelum bagian bodynya.

Copy constructor adalah function untuk mengambil atribut dari constructor lain secara sama persis dan disalin kedalam constructor yang baru dibuat.

Destructor adalah fungsi yang berjalan saat tugas dari sebuah objek selesai, dengan kata lain, objek tersebut akan dibuang dan melepaskan kembali memory yang digunakan sebelumnya oleh objek tersebut.

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?

Jawab :

Default arguments adalah nilai parameter yang digunakan untuk mengisi nilai dari variable awal sebuah objek jika nilai tersebut tidak diinisialisasi oleh user.

Default value bisa berupa constant, global variable, dan function call.

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.

Jawab :

Function overloading adalah keadaan dimana ada dua atau lebih fungsi berbeda dengan nama yang sama. Tetapi ada perbedaan dalan function signaturenya. Function signature adalah meliputi, jumlah parameter fungsi, tipe data parameter, dan urutan tampilnya parameter.

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);

            }

           

            Jawab :

Copy constructor akan dijalankan saat sebuah objek disalin dengan cara inisialisasi deklarasi, sebuah objek digunakan sebagai fungsi parameter dengan pass by value, objek dijadikan nilai return dari fungsi.

Dijalankan sebanyak 4 kali.

I AM PROUD AS A BINUSIAN

 

Mar 13

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

struct node
{
int x;
struct node *tail;
}*head, *arrow;

void main()
{
int input=1;

head=(struct node*)malloc(sizeof(struct node));

head->tail=0;
arrow=head;

do
{
printf(“Masukkan Angka ke-%d [1..10] : “, input);
scanf(“%d”, &head->x);
fflush(stdin);
}
while (head->x<0 || head->x>10);

for(int input=2;input<=5;input++)
{
arrow->tail=(struct node*)malloc(sizeof(struct node));
arrow=arrow->tail;

printf(“Masukkan Angka ke-%d : “, input);
scanf(“%d”, &arrow->x); fflush(stdin);

arrow->tail=0;
}

arrow=head;

do
{
printf(“%d”, arrow->x);
arrow=arrow->tail;

if (arrow->tail!=0)
{
printf(” -> “);
}
else
{
printf(” -> %d”, arrow->x);
}
}while (arrow->tail!=0);

getchar();
}

Mar 10

Normal
0

false
false
false

EN-US
JA
X-NONE

/* 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-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}

TM 01

1.      Ada tiga istilah yang saling berkaitan saat kita mulai mempelajari OOP yaitu ADT (Abstract Data Type), encapsulation dan class. Coba uraikan secara rinci apa yang dimaksud istilah-istilah tersebut. Selain itu berikan contoh-contohnya. 

Abstract Data Type adalah cara-cara dalam merepresentasikan dunia nyata dan gagasan yang konseptual ke dalam sistem komputer.  ADT berisi 2 : Data Representation dan Operation, yaitu proses yang bisa dijalankan kepada data tersebut.

Example : Struct Account Bank

        Data representation :

         Account number

         Account name

         Account balance

        Operation

         View

         Deposit

         Withdrawal

 

Encapsulation adalah proses untuk ‘membungkus’ atribut dan fungsi member ke dalam objek, dengan tujuan utama adalah Information Hiding.

public class enkapsulasi {

private String nama;
private int umur;

public int getUmur(){
return umur;
}
public String getNama(){
return nama;
}
public void setUmur( int newUmur){
umur = newUmur;
}
public void setNama(String newNama){
nama = newNama;
}
}

Class adalah kumpulan objek dengan atribut dan fungsi yang sama.

class Student{

      private :

            int nim;

            char name[20];

      public :

            int getNim(){

                  return nim;

            }

            char* getName(){

                  return name;

            }

            void setName(char* name){

                  strcpy(this->name, name);

            }

            void setNim(int nim){

                  this->nim = nim;

            }

};

 

 

 

2.      Ada tiga karakteristik yang membedakan OOP dengan procedural programming yaitu ADT, inheritance dan dynamic binding, Dua topik teerakhir belum kita pelajari sehingga dalam soal ini kita hanya fokus pada ADT.

a.       Apa yang dimaksud dengan ADT?

Abstract Data Type adalah alat yang digunakan untuk menyederhanakan program dengan encapsulation dan information hiding.

b.      Apa yang dimaksud dengan propterties suatu ADT?

Abstract Data Type Properties adalah bagian-bagian yang ada dalam ADT.

·         Nama Class

·         Atribut

·         Method

c.       Mengapa kita memerlukan ADT?

ADT diperlukan karena ADT bisa menyederhanakan suatu program yang kompleks dengan tujuan terorganisirnya program dengan baik serta mudah dilakukan revisi terhadap program. ADT juga bisa digunakan untuk menyembunyikan bagian yang tidak penting untuk dilihat oleh user melalui  fitur information hiding.

d.      Bagaimana suatu ADT berhubungan dengan ADT lain?

Sesama ADT saling berhubungan dengan menggunakan access modifier yang digunakan untuk menunjukan tingkat akses dari suatu class, contohnya adalah Private, Protected, dan Public.

e.       Apa yang dimaksud dengan ”…dalam ADT implementasi disembunyikan dari user…” Berikan contohnya.

Yang dimaksud dengan menyembunyikan implementasi adalah peran information hiding yang menunjukan tingkat pengaksesan suatu class oleh class lain. Ada 3 jenis tingkat akses, yaitu :

Private(-), yaitu class tersebut hanya bisa diakses oleh class itu sendiri.

Protected(#), class tersebut hanya bisa diakses oleh class itu sendiri dan class turunannya.

Public(+), class tersebut bebas diakses oleh class manapun.

 

3.      Esensinya tidak perbedaan mendasar antara  struct dan class tetapi kita lebih suka menggunakna class daripada struct. Uraikan mengapa kita lebih suka menggunakan class daripada struct?

 

Pada dasarnya Class dan Struct hampir serupa, perbedaannya di dalam class kita dapat memasukkan method dari atribut yang ada dalam class tersebut. Selain itu, keuntungan dari Class adalah mempunyai Constructor yang berfungsi untuk inisialisasi nilai pada class dan Destructor yang berguna untuk dealokasi memory saat sudah tidak digunakan lagi.

 

  1. Esensinya class dan struct adalah sama dalam C++. Perbedaan yang signifikan di antara mereka adalah
    1. default akses class adalah private sedangkan struct adalah private
    2. 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 public

 

5.      Interface suatu class terdiri dari

a. data anggota                                                b. prototipe fungsi anggota

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

 

-d1030-

Daniel David / 1701291610 / 02PPTT00440020220133014TM 01

Mar 09

Welcome to Binusian blog.
This is the first post of any blog.binusian.org member blog. Edit or delete it, then start blogging!
Happy Blogging 🙂