Rabu, 03 Desember 2008

Tugas 3

MACAM – MACAM PENGURUTAN DATA

1. Bubble sort
Bubble sort adalah salah satu pengurutan metode
exchanging yang bersifat langsung dan termasuk jenis
pengurutan yang paling sederhana. Nama bubble sort
ini berasal dari sifat elemen terbesar yang selalu naik
ke atas (ke akhir dari list) seperti bubble.

Ide dari bubble sort adalah sebagai berikut :
· Algoritma dimulai dari elemen paling awal.
· 2 buah elemen pertama dari listdibandingkan.Jika elemen pertama lebih besar dari elemen kedua,dilakukan pertukaran.
· Langkah 2 dan 3 dilakukan lagi terhadap elemen kedua dan ketiga, seterusnya sampai ke ujung elemen
· Bila sudah sampai ke ujung dilakukan lagi ke awal sampai tidak ada terjadi lagi pertukaran elemen.
· Bila tidak ada pertukaran elemen lagi, maka list elemen sudah terurut.

2. Quick Sort
Quick sort merupakan divide and conquer algorithm.
Algoritma ini mengambil salah satu elemen secara
acak (biasanya dari tengah) lalu menyimpan semua
elemen yang lebih kecil di sebelah kirinya dan semua
elemen yang lebih besar di sebelah kanannya. Hal ini
dilakukan secara rekursif terhadap elemen di sebelah
kiri dan kanannya sampai semua elemen sudah terurut.
Algoritma ini termasuk algoritma yang cukup baik dan
cepat. Hal penting dalam algoritma ini adalah
pemilihan nilai tengah yang baik sehingga tidak
memperlambat proses sorting secara keseluruhan.

Ide dari algoritma ini adalah sebagai berikut :
· Pilih satu elemen secara acak
· Pindahka semua elemen yang lebih kecil ke sebelah elemen tersebut dan semua elemen yang lebih besar ke sebelah kanannya. Elemen yang nilainya sama bisa disimpan di salah satunya. Ini disebut operasi partisi
· Lakukan sort secara rekursif terhadap sublist sebelah kiri dan kanannya.


3. Shell Short
· Metode Pertambahan Menurun
· Dikembangkan oleh Donald L. Shell (1959)
· Mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu sehingga dibentuk sub-list, kemudian dilakukan pertukaran jika diperlukan


Contoh Program Sederhana Array :

#include

class Foo
{
public:
Foo() {} // default ctor
virtual ~Foo() {} // dtor
Foo( const Foo& ) {} // copy ctor
operator = ( const Foo& ) {} // assignment op
};

int main(int argc, char *argv[])
{
std::vector arrFoo;

Foo f1,f2,f3;
arrFoo.push_back(f1);
arrFoo.push_back(f2);
arrFoo.push_back(f3);
cout << "Size arrFoo: " << arrFoo.size();
arrFoo.pop_back();
cout << "Size arrFoo: " << arrFoo.size();
system( "PAUSE" );
return 0;
}

Minggu, 12 Oktober 2008

TUGAS 2

Object-Oriented Programming & Procedural Programming

Procedural Programming
  • Membagi program ke beberapa fungsi. Sekumpulan perintah yang sama dan dipakai berulang-ulang di lokasi yang berbeda dari sebuah program, dipisah menjadi sebuah fungsi.
  • Fungsi bersifat umum untuk semua data. Mis: 2 struct yang berbeda bisa dikirim ke sebuah fungsi. Tidak ada pengecekan apakah yang dikirim adalah struct yang “benar” atau “salah”
  • Diselesaikan dalam bentuk prosedur atau fungsi
  • Program merupakan urut-urutan instruksi
  • Program dipecah-pecah ke dalam sub program yang lebih sederhana
  • Fokus utama pada prosedur dan fungsi
  • Fungsi dan prosedur digunakan untuk memanipulasi data
  • Sedangkan data sendiri bersifat pasif

Pemrograman Berbasis Obyek

  • Fungsi dan data menjadi satu kesatuan yang disebut obyek
  • Obyek-obyek dalam OOP bersifat aktif
  • Cara pandang : program bukan urut-urutan instruksi tapi diselesaikan oleh obyek-obyek yang bekerjasama untuk menyelesaikan masalah
  • Object terdiri dari data dan fungsi sekaligus.
  • Antar object saling berinteraksi dengan mengirim message (fungsi public) satu sama lain.
  • Tidak memerlukan variable global

Beda nyata antara prosedural dan OOP

  • Prosedural

Fokus pada bagaimana cara komputer menangani masalah

  • OOP

Fokus pada masalah yang ditangani dengan menggunakan komputer

Keuntungan OOP

  • Data safety, encapsulation
  • Reusability
  • Creating new types
  • Classes – object is a member of the class
  • Inheritance - Polymorphism
  • Overloading

OOP bukanlah sekedar cara penulisan sintaks program yang berbeda, namun lebih dari itu, OOP merupakan cara pandang dalam menganalisa system dan permasalahan pemrogarman. Dalam OOP, setiap bagian dari program, aalah object. Sebuah object mewakili suatu bagian program yang akan diselesaikan.

Beberapa konsep OOP dasar, antara lain:

  1. Encapsulation (Class dan Object)
  2. Inheritance (penurunan sifat)
  3. Polymorphisme

Object

Object adalah semua hal yang ada dalam dunia nyata, baik konkrit maupun abstrak
  • Contoh obyek konkrit : rumah, sekolah, dosen, mahasiswa, dll.
  • Contoh obyek abstrak : mata kuliah, penjadwalan, dll.
Ciri-ciri atau karakteristik Obyek

      1. Obyek memiliki status (state) dan tingkah laku (behavior)
      2. Status (state) disebut juga dengan atribut
      3. Pada OOP : status disimpan dalam variabel, dan tingkah laku disimpan dalam method
      4. Contoh obyek : obyek mobil
        • Atribut : merek, warna, bahan baker
        • Method : pindah persnelling, kecepatan bertambah, dll

Class

  • Class merupakan tempat untuk membuat obyek
  • Di dalam class dideklarasikan variable dan method yang dimiliki oleh obyek
  • Proses pembuatan obyek dari sebuah class disebut dengan instantiation
  • Jadi obyek merupakan hasil instansiasi dari class
  • Obyek disebut juga dengan instance

Anggota Class (class member)

  • Anggota Class terdiri dari atribut dan method.
  • Tiap anggota class memiliki kontrol pengaksesan tersendiri, artinya apakah anggota tersebut dapat diakses dengan bebas (tipe public) atau hanya dapat diakses melalui sebuah interface.

Atribut

  • Atribut adalah data yang dapat membedakan antara satu obyek dengan obyek yang lain
  • Contoh untuk class mahasiswa terdapat obyek mahasiswa si A, dan obyek mahasiswa si B. Yang membedakan antara obyek si A dan obyek si B adalah NRP-nya yang merupakan atribut dari obyek tersebut.