Mar
20
2014
0

Struktur Data – Doubly Linked List

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

    struct data{
        int angka;
        struct data *prev;
        struct data *next;
    }*head,*now,*temp,*tail;

    void ins(int x){
         now=head;
         for(now=head;now!=NULL;now=now->next){
              if(x>now->angka){
                   temp=now;
                   now=(struct data*)malloc(sizeof(data));
                   now->angka=x;
                   now->next=temp;
                   now->prev=temp->prev;
                   temp->prev=now;
                   if(now->prev!=NULL){
                        now=now->prev;
                        now->next=temp->prev;
                        }//kalau head
                   else
                        head=now;
                   break;
              }
              else if (now->next==NULL){//kalau tail
                   temp=now;
                   now=(struct data*)malloc(sizeof(data));
                   now->angka=x;
                   now->prev=temp;
                   now->next=0;
                   tail=now;
                   temp->next=now;
                   break;
              }
         }
    }

    void intz(int x){
         now=(struct data*)malloc(sizeof(data));
         if(head==0)//data perdana
              tail=now;
         now->angka=x;
         now->next=head;//Double Link list Start
         head=now;
         now->prev=NULL;
         if(now->next!=0){
              temp=now;
              now=now->next;
              now->prev=temp;
         }// Double Link list end
    }

    void cetak(){
         for(now=tail;now!=NULL;now=now->prev){
              printf("%d",now->angka);
              if (now->prev!=NULL)
                   printf(" -> ");
         }
         printf("\n");
    }

    int main(){
         printf("Nama  : Kenneth\n");
         printf("NIM   : 1701290425\n");
         printf("Kelas : 32PPT\n");
         printf("Double Linked List\n\n");
         head=0;
         temp=0;
         printf("Sebelum insert\n");
         intz(1); 
         intz(3);
         cetak();
         printf("\nSetelah insert tengah\n");
         ins(2);
         cetak();
         printf("\nSetelah insert awal\n");
         ins(0);
         cetak();
         printf("\nSetelah insert akhir\n");
         ins(5);
         cetak();
         now=head;
         getchar();
    }
Written by gotomarch in: Uncategorized |
Mar
17
2014
0

Object Oriented Program – TM02

Nama : Kenneth
NIM : 1701290425
Kelas : 02PPT

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

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

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?

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.

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

1. A. Direct Assignment

2. A. Default Constructor

3. C. Private

4. B. X(const X&)

5. B. Lebih dari satu constructor dan satu destructor

6. Hasil Output :
OBYEK LAHIR
SEKARANG X HIDUP
OBYEK MATI
ANTAR BLOK
OBYEK LAHIR
SEKARANG Y LAHIR
OBYEK MATI

7. -. Constructor adalah sebuah fungsi yang otomatis akan dipanggil setiap kali melakukan pemanggilan terhadap suatu kelas. Constructor digunakan untuk melakukan inisialisasi nilai dari data yang ada di kelas tersebut.
-. Default Constructor adalah constructor yang sudah di inisialisasi tapi dalamnya kosong. Apabila user belum membuat user-defined constructor, maka otomatis program akan menggunakan Default Constructor.

-. User-defined Constructor adalah constructor yang dibuat oleh user sendiri untuk menginisialisasi nilai yang ada di kelas tersebut.

-. Parameterized Constructor adalah constructor yang mempunyai satu parameter atau lebih.

-. Constructor Initialization List adalah sebuah fasilitas yang dapat digunakan oleh user untuk menyederhanakan struktur constructor. Fasilitas ini disediakan oleh C++.

-. Copy Constructor adalah constructor dengan satu parameter dengan tipe yang sama yang ditetapkan untuk setiap anggota variabel class nonstatik objek yang datanya disalin dari objek sebelumnya.

-. Destructor adalah fungsi yang berguna untuk menghancurkan atau membuang sebuah obyek (kelas) dari memori. Nama dari fungsi destructor sama dengan nama kelas, tapi di depannya ditambahkan tanda tilde (~). Fungsi ini dipanggil setiap kali suatu kelas selesai masa berlakunya.

8. -. Default Argument ->  Constructor dengan default argument memiliki satu atau lebih parameter yang fungsi constructnya sudah disediakan nilai awal sebagai nilai otomatis yang akan diberikan ketika programmer tidak mencantumkannya.

-. Default Value -> Default Value dapat dipakai untuk semua tipe kecuali nilai const(constant).

-. Nilai Constant tidak dapat digunakan sebagai default value karena nilai constant tidak dapat diubah sama sekali, sedangkan default value digunakan bila user tidak mencantumkannya. Bila programmer ingin memberi nilai maka yang dipakai adalah nilai input bukan nilai default.

9. Overloading Function -> Memperbolehkan fungsi dengan nama yang sama, namun harus memenuhi kriteria tertentu.

Kriteria Overloading Function :
-. Nama Fungsi sama
-. Jumlah parameter
-. Urutan parameter

10. a. Kapan copy constructor dieksekusi?
Ketika fungsi dari copy constructor tersebut dipanggil.
b. Untuk penggalan kode berikut berapa kali copy constructor dieksekusi?
Copy Constructor di kode tersebut dieksekusi sebanyak 4 kali.

Written by gotomarch in: Uncategorized |
Mar
13
2014
0

Struktur Data – Linked List

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

struct linkedlist {
int val;
struct linkedlist * next;
};

typedef struct linkedlist item;

void main() {
item *head, *tail;
int i;
int input;
tail = NULL;
int x=1;

head = (item *)malloc(sizeof(item));
head->next=0;
do{
printf(“Masukan Angka ke %d [1..100] : “,x);
scanf(“%d”,&head->val);fflush stdin;
}
while(head->val<1 || head->val>100);

tail = head;
tail->next=(item *)malloc(sizeof(item));
tail=tail->next;
tail->next=0;

for(int i=0;i<10;i++){
system(“cls”);
tail=head;
int a=0;
while(tail->next!=0){
printf(“%d”,tail->val);
tail=tail->next;
if(i>0 && a!=(x-1)) printf(” -> “);
a++;
}
if(x<10){
do{
printf(“\nMasukkan Angke ke %d[1..100]:”,x+1);
scanf(“%d”,&tail->val);
fflush(stdin);
}
while(tail->val<1 || tail->val>100);
x++;

tail->next=(struct linkedlist*)malloc(sizeof(struct linkedlist));

tail=tail->next;
tail->next=0;
}
else printf(“\nEnd of the Program.\nPress Enter to exit the program.”);
}
getchar();
}

Written by gotomarch in: Uncategorized |
Mar
08
2014
2

Object Oriented Program – TM01

Nama : Kenneth
NIM : 1701290425
Kelas : 02PPT

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.
  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?
    b. Apa yang dimaksud dengan propterties suatu ADT?
    c. Mengapa kita memerlukan ADT?
    d. Bagaimana suatu ADT berhubungan dengan ADT lain?
    e. Apa yang dimaksud dengan ”…dalam ADT implementasi disembunyikan dari user…” Berikan contohnya.
  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?
  1. Esensinya class dan struct adalah sama dalam C++. Perbedaan yang signifikan di antara mereka adalah
    a. default akses class adalah private sedangkan struct adalah private
    b. default akses class adalah private sedangkan struct adalah public
    c. default akses class adalah public sedangkan struct adalah private
    d. default akses class adalah public sedangkan struct adalah public.
  2. Interface suatu class terdiri dari
    a. data anggota                                                b. prototipe fungsi anggota
    c. implementasi fungsi anggota             d. data anggota dan prototipe fungsi anggota

 

Jawab
1. Abstract Data type (ADT) adalah tipe data user define, yang merepresentasikan operasi dan tipe objek dalam satu unit dan memungkinkan untuk disembunyikan dari unit lain yang menggunakan program tersebut.

Enkapsulasi adalah suatu cara untuk menyembunyikan informasi detail dari suatu class. Enkapsulasi juga merupakan suatu mekanisme untuk memproteksi suatu proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem sekaligus menyederhanakan penggunaansystem itu sendiri. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface

Contoh enkapsulasi dan ADT di C++ :

#include <iostream>
using namespace std;
class Adder{
public:
// constructor
Adder(int i = 0)
{
total = i;
}
// interface to outside world
void addNum(int number){
total += number;
}
// interface to outside world
int getTotal(){
return total;
};

private:
// hidden data from outside world
int total;
};

int main( ){
Adder a;
a.addNum(10);
a.addNum(20);
a.addNum(30);
cout << "Total " << a.getTotal() <<endl;
return 0;
}

Class adalah unit terstruktur pada oop yang berisikan sekumpulan dari object berupa data beserta method / fungsi (property). Property dan method yang didefinisikan pada class disebut dengan members.

Contoh class di C++ :

#include <iostream>

using namespace std;

class Box
{
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

int main( )
{
   Box Box1;        // Declare Box1 of type Box
   Box Box2;        // Declare Box2 of type Box
   double volume = 0.0;     // Store the volume of a box here

   // box 1 specification
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 specification
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
   // volume of box 1
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Volume of Box1 : " << volume <<endl;

   // volume of box 2
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Volume of Box2 : " << volume <<endl;
   return 0;
}

2. a. ADT merupakan penggabungan berbagai object dengan berbagai maca tipe data beserta dengan fungsinya untuk membentuk suatu tipe data baru. ADT dibuat untuk menghindari pemrograman yang kompleks dengan cara menyederhanakan proses pemrograman.

b. Atribut dari suatu entity yang terdiri dari nama class, data (data structure), dan operation (function).

c. -. Dapat mengorganisasi dan manipulasi data
-. Mengubah kompleksitas program menjadi lebih simpel
-. Mendukung information hiding

d. Suatu ADT dapat berhubungan dengan ADT lain dengan menggunakan access modifier yang merupakan kata kunci yang digunakan untuk menentukan spesifikasi tingkat akses suatu atribut atau method. Kata kunci tersebut adalah private, protected, dan public.

e. Information Hiding berguna untuk membatasi pengaksesan data ADT pada user. Macam-macam information hiding :
I.   Public(+) : Bagian dari class yang dapat diakses oleh umum baik dari dalam maupun dari luar class.
II.  Private(-) : Bagian class yang hanya dapat diakses oleh lingkungan internal class itu sendiri
III. Protected(#) : Bagian class yang dapat diakses oleh lingkungan internal class dan class turunannya

3. Karena kegunaan class adalah mengelompokkan objek – objek menjadi kelas – kelas, berarti mengabstraksikan persoalan yang dihadapi. Dengan terjadinya abstraksi, maka memberikan daya keampuhan pemodelan dan memberikan kemampuan generalisasi berupa kasus spesifik menjadi induk kasus – kasus yang serupa.

4. B. default akses class adalah private sedangkan class adalah public.

5. C. implementasi fungsi anggota.

Written by gotomarch in: Uncategorized |

Powered by WordPress. Theme: TheBuckmaker. Zinsen, Streaming Audio