10/24/2008

Contoh Program Sederhana C++ ( dengan Array )

Buat temen2 yang baru pertama kali nyobain NuSoap - WSDL pasti pernah bingung. Bagaimana caranya mengirim variabel output array kepada aplikasi client. syntax xsd:array tidak ada !!! Trus bagaimana caranya?

Temen2 bisa liat contoh yang kutulis. Aplikasi sederhana untuk menampilkan data mahasiswa dari suatu jurusan. perhatikan tipe data ini :

— CONTOH IMPLEMENTASI MULTIPLE (MULTI-DIMENSIONAL) ARRAY —

// registers the types Register the data structures used by the service
// Input Complex Datatype
(
‘TypeDataInput’, // name
‘complexType’, // typeClass (complexTypesimpleTypeattribute)
’struct’, // phpType: currently supported are array and struct (php assoc array)
‘all’, // compositor (allsequencechoice)
”, // restrictionBase namespace:name (http://schemas.xmlsoap.org/soap/encoding/:Array)
array( // elements = array ( name = array(name=>’’,type=>’’) )
‘jurusan’ => array(’name’ => ‘jurusan’, ‘type’ => ‘xsd:string’)
)
);
// Output Complex Datatype
$server->wsdl->addComplexType(
‘TypeDataOutput’,
‘complexType’,
’struct’,
‘all’,
”,
array(
‘nim’ => array(’name’ => ‘nim’, ‘type’ => ‘xsd:int’),
‘nama’ => array(’name’ => ‘nama’, ‘type’ => ‘xsd:string’),
‘alamat’ => array(’name’ => ‘alamat’, ‘type’ => ‘xsd:string’)
)
);
// Output Array Complex Datatype
$server->wsdl->addComplexType(’TypeDataOutputArray’,
‘complexType’
‘array’,
”,
‘SOAP-ENC:Array’,
array(),
array(array(’ref’=>’SOAP-
ENC:arrayType’,'wsdl:arrayType’=>’tns:TypeDataOutput[]‘)),
‘tns:TypeDataOutput’
);
— END —

Metode Heap Sort ( Pengurutan Tumpukan )

Algoritma heap short ini lebih cepat dibandingkan dengan keempat algoritma lain yang telah dibahas. Tetapi algoritma ini adalah algoritma yang paling lambat dibandingkan algoritma-algoritma pengurutan lain dengan kompleksitas algoritma yang sama, yaitu quick sort dan merge sort, heap sort tidak rekursif dan tidak memerlukan terlalu banyak table temporer untuk menjalankan algoritma.

Algoritma dasar heap short dimulai dengan membangun tumpukan data set. Kemudian memindahkan elemen dengan nilai yang paling besar dan menempatkan diposisi paling akhir dari table baru yang akan berisi elemen yang terurut. Setelah memindahkan kembali nilai yang paling besar. Algoritma ini merekontruksi tumpukan dari data yang tersisa dan memindahkan kembali nilai yang paling besar dari tumpukan dan menempatkannya di tempat kedua sebelum paling akhir dari tablel. Begitu seterusnya sampai tak ada lagi elemen yang tersisa dalam tumpukan dan table baru penuh. Dalam implementasinya diperlukan dua table, satu berisi tumpukan dan satu berisi elememn yang telah terurut

Metode Merge Sort ( pengurutan dengan penggabungan)

Algoritma merge sort membagi (split) table menjadi dua tabel sama besar. Masing-masing tabel diurutkan secara rekursif, dan kemudian digabungkan kembali untuk membentuk table yang terurut. Implementasi dasar dari algoritma merge sort memakai tiga buah tabel, dua untuk menyimpan elemen dari tabel yang telah dibagi dua dan satu untuk menyimpan elemen yang telah teurut. Namun algoritma ini dapat juga dilakukan langsung pada dua tabel, sehingga menghemat ruang atau memori yang dibutuhkan. Di bawah ini adalah algoritma untuk merge sort yang dilakukan pada dua tabel.

Algoritma merge sort ini sebenernya lebih cepat dibandingkan heap sort untuk tabel yang lebih besar. Namun, algoritma ini membutuhkan setidakny ruang atau emori dua kali lebih besar karena dilakukan secara rekursif dan memakai dua tabel. Hal ini menyebabkan algoritma ini kurang banyak dipakai.

Metode Selection Sort ( pengurutan dengan menyeleksi )

Algoritma pengurutan seleksi mempunyai kompleksitas algoritma O(n2), sama seperti, algoritma pengurutan seleksi algoritma pengurutan gelembung. Namun jika kedua algoritma tersebut dijalankan untuk table dengan data yang sama 60% lebih cepat dibandingkan dengan algoritma pengurutan gelembung. Jika ingin menggunakan algoritma pengurutan seleksi karena beberapa alasan tertentu, hindari pengurutan nilai dengan data pada tabel lebih besar dari 1000 buah, dan hindari mengurutkan tabel lebih dari beberapa ratus kali.

Metode Insertion Sort ( pengurutan dengan penyisipan )

Pengurutan dengan penyisipan bekerja dengan cara menyisipkan masing-masing nilai di tempat yang sesuai (di antara elemen yang lebih kecil atau sama dengan nilai tersebut dengan elemen yang lebih besar atau sama dengan nilai tersebut). Algoritma ini relatif sederhana dan mudah untuk diimplementasikan. Untuk kasus terbaik algoritma ini berjalan 1 kali,yaitu jika elemen dalam tabel telah terurut. Kalang (loop) while tidak pernah dijalankan. Untuk kasus terburuk algoritma ini berjalan Nmax kali. Sehingga, seperti pengurutan gelembung, pengurutan dengan penyisipanmempunyai kompleksitas algoritma O(n2)

Walaupun mempunyai kompleksitas algoritma yang sama, namun jika dijalankan dengan data input yang sama, algritma pengurutan dengan penyisipan dua kali lebih cepat dan efisien dibandingkan dengan pengurutan gelembung. Namun, algoritma ini tetap kurang efisien untuk
tabel berukuran besar (menyimpan banyak nilai).

Metode Shell Sort ( Pengurutan Cangkang )

Shell sort adalah algoritma dengan kompleksitas algoritma 0 (n ^ 2) dan yang paling efisien jika disbanding algoritma lain dengan kompleksitas yang sama. Algoritma shell sort lima kali lebih cepat dibandingkan algoritma pengurutan gelembung dan dua kali lebih cepat di bandingkan algoritma pengurutan dengan penyisipan. Dan tentu saja shell sort juga merupakan algoritma yang paling kompleks dan sulit dipahami.

Algoritma Shell sort melakukan pass atau traversal berkali-kali dan setiap kali pass mengurutkan sejumlah nilai yang sama dengan ukuran set menggunakan insertion set. Ukuran dari set yang harus diurutkan semakin membesar setiap kali melakukan pada tabel,sampai set tersebut mancakup seluruh elemen tabel. Ketika ukuran dari set semakin membesar, sejumlah nilai yang harus diurutkan semakin mengecil. Ini menyebabkan insertion sort yang dijalankan mengalami kasus terbaik dengan kompleksitas algoritma mendekati 0(n). Ikuran dari set yang digunakan untuk setiap kali iterasi ( iteration ) mempunyai efek besar terhadap efisiensi pengurutan.

Tetapi, walaupun tidak se-efisien algoritma merge sort, heap sort, atau quick sort , algoritma shell sort adalah algoritma yang relative sederhana. Hal ini menjadikan algritma shell sort adalah pilihan yang baik dan efisien untuk mengurutkan nilai dalam suatu table berukuran sedang ( mengandung 500 – 5000 elemn ).

Metode Quick Sort ( Pengurutan Cepat )

Algoritma Quick Sort adalah sangat sederhana dalam teori. Tetapi sangat sulit untuk diterjemahkan ke dalam sebuah kode karena pengurutan dilakukan dalam sebuah list dan diproses secara rekursif. Algoritma ini terdiri dari beberapa langkah ( yang mana menyerupai merge sort ) yaitu ;

1. Jika jumlah elemen A sama dengan 0 atau 1, lalu stop.
2. Ambil secara random elemen c didalam array A. Hal ini disebut pivot.
3. Bagi menjadi 2 bagian array A, elemen selain c di dalam array A menjadi 2 g kelompok. A1 = {x? A {c}? x 􀵑 c} dan A2 = {x? A – {c}? x 􀵒 c}
4. Lakukan quick sort pada A1 dan A2, sehinggan didapat persamaan
T(n) = 2T( n / 2) + θ(n)

Algoritma quick sort mengurutkan dengan sangat cepat, namun algoritma ini sangat komplex dan diproses secara rekursif. Sangat memungkinkan untuk menulis algoritma yanglebih cepat untuk beberapa kasus khusus, namun untuk kasus umum, sampai saat ini tidak ada yang lebih cepat dibandingkan algoritma bubble sort.

Metode Bubble Sort

Pengurutan gelembung adalah algoritma pengurutan yang paling tua dan sederhana untuk di implementasikan. Algoritma ini juga cukup mudah untuk dimengerti. Pengurutan gelembung ini menggunakan dua buah kalang ( Lopp ) for. Kalang yang pertama melakukan traversal dari indeks terkecil sedangkan kalang yang kedua melakukan traversal dari yang terbesar. Kalang yang satu berada dalam kalang yang lain dan panjang masing-masing tergantung pada banyaknya elemen. Siklus yang pertama melakukan n – 1 perbandingan, siklus yang kedua melakukan n – 2 perbandingan, siklus yang ketiga melakukan n – 3, dan seterusnya. Sehigga total semua perbandingan ( n – 1 ) + ( n - 2 ) + … + 1 yang dapat disederhanakan menjadi n ( n – 1 ) / 2.

Algoritma ini bekerja dengan cara membandingkan nilai tiap elemen dalam tabel dengan elemen setelahnya, dan menukar nilainya jika sesuai dengan kondisi yang diperlukan. Proses ini akan terus berulang hingga seluruh elemen dalam tabel telah diproses dann elemen dalam tabel telah terurut.

Algoritma pengurutan gelembung ini adalah algoritma yang paling lamban dan tidak mangkus dibandingkan dengan algoritma pengurutan lain dalam penggunaan secara umum. Dalam kasus terbaik ( yaitu kasus sudah terurut ), kompleksitas algoritma pengurutan gelembung adalah O (n). Namun, untuk kasus umum kompleksitas algoritma pengurutan gelembung adalah O(n ^ 2).

10/05/2008

Object Orientid Programming dan Prosedural Programming

Pemrograman Berorientasi Objek dimulai pertama kali dengan bahasa Simula yang dikembangkan di Scandinavia di pertengahan tahun 60-an. Simula utamanya digunakan untuk pemrograman simulasi, dimana adalah alamiah untuk memodelkan suatu entitas eksternal / diluar sistem perangkat lunak dan untuk memilih istilah-istilah untuk entitas-entitas tersebut dan tingkah lakunya. Semula memiliki sintak yang mirip dengan Pascal, tetapi programmer berfikir sedikit lebih berbeda ketika merancang suatu program yang akan dibuat dengan Simula.

Sebuah ide dasar yang diperkenalkan dalam Simula adalah inheritance (pewarisan). Dalam Simula juga sudah dikenal objek (entitas) yang ada dalam sistem yang dimodelkan. Ada beberapa objek yang dikumpulkan kemudian disebut ”Class”, dan tugas utama dari seorang perancang program dengan Simula adalah menentukan behaviour dari class tersebut.

Setelah Simula, bahasa berikutnya yang diketahui mendukung untuk mengadopsi pemrograman berorientasi objek adalah Smalltalk yang dikembangkan tahun 70-an di Xerox PARC. Simula dan Smalltalk dirancang secara elegan, dan menawarkan sejumlah konep yang powerful yang memudahkan untuk dipelajari.


Pemrograman Berbasis Objek adalah program yang paling popular dalam rekayasa perangkat lunak pada saat ini. OOP memebuat pengembangan perangkat lunak secara modular yang berarti system dapat dikembangkan tahap demi tahap tanpa banyak mengubah fondasi perangkat lunak yang sudah ada. Konsep utama OOP yaitu melakukan permodelan objek dari kehidupan nyata ke dalam tipe data abstrak.


B. Pemrograman Prosedural


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




Beda nyata antara prosedural dan OOP


Prosedural


Fokus pada bagaimana cara


komputer menangani masalah


OOP


Fokus pada masalah yang


ditangani dengan menggunakan


komputer



Karakteristik OOP

Suatu program disebut dengan


pemrograman berbasis obyek


(OOP) karena terdapat :


Encapsulation (pembungkusan)


Inheritance (pewarisan)


Polymorphism (polimorfisme)