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 🙂