Thursday, April 26, 2012

Tree Traversal with C/C++

Seperti yang sudah kita ketahui, bahwa struktur pohon dipakai untuk menempatkan data guna memudahkan pencariaan (search) data. Struktur pohon juga berguna untuk menyajikan koleksi data yang mempunyai struktur logik bercabang.
Proses kunjungan dalam pohon, dengan setiap simpul hanya dikunjungi tepat satu kali disebut traversal. Ketika dilakukan traversal pohon, koleksi simpul dari pohon terlihat satu persatu. Hasil dari traversal pohon adalah suatu untai simpul pohon yang urut secara linier. Suatu simpul dikatakan dikunjungi, bila simpul tersebut kita masukkan ke dalam urutan linier tersebut. Terdapat 3 macam traversal pohon, yaitu traversal pre-order, in-order, dan post-order.

Oke langsung saja. Untuk algoritma pemrograman dan source code (dengan menggunakan bahasa C/C++) bisa di download disini.

5 mahisaajy: April 2012 Seperti yang sudah kita ketahui, bahwa struktur pohon dipakai untuk menempatkan data guna memudahka...

Wednesday, April 25, 2012

Penjadwalan Proses - Metode Future Knowledge

Oke guys, kali ini saya mau membahas mengenai penjadwalan proses yang saya pelajari dalam mata kuliah Sistem Operasi. Lebih fokusnya sih kepada metode future knowledge. Sebelum membahas secara lebih lanjut, kita cari tahu dulu pengertian penjadwalan proses.

Penjadwalan proses merupakan kumpulan kebijaksanaan dan mekanisme di sistem operasi yang berkaitan dengan urutan kerja yang dilakukan sistem komputer. Adapun penjadwalan ini bertugas untuk memutuskan :
a. Proses yang harus berjalan
b. Kapan dan selama berapa lama proses itu berjalan

Lalu apa itu metode future knowledge yang Anda sebut tadi?
Jadi gini, di dalam penjadwalan proses ini terdapat beberapa algoritma. Diantaranya ada FCFS(First Come First Serve), SJF(Shortest Job First) yang terdiri dari SJF preempsi dan non preempsi, kemudian Future Knowlege, dan Round Robin. Dimana dari algoritma algoritma diatas mempunyai kelebihan dan kekurangannya masing masing.
 
Di dalam metode Future Knowlege ini pertama tama diberikan waktu toleransi atau waktu tunggu awal. Jika proses pertama datang sebelum waktu tunggu tadi selesai, maka proses tersebut harus tetap menunggu sampai waktu tunggu selesai.

Kemudian yang harus di perhatikan juga adalah lama prosesnya. Jika ada proses yang lebih cepat prosesnya maka dahulukan proses tersebut. Metode ini hampir sama dengan metode SJF.

Ini ada cuplikan video mengenai metode future knowledge, yang diperankan oleh saya dan teman teman. Check this out !



Oke demikian sedikit pembahasan mengenai metode Future Knowledge. Sampai jumpa di lain waktu.

5 mahisaajy: April 2012 Oke guys, kali ini saya mau membahas mengenai penjadwalan proses yang saya pelajari dalam mata kuliah Sistem Operasi. Lebih fokusnya sih ke...

Wednesday, April 11, 2012

Bubble Sort Method (Metode Gelembung)


Oke, pada kesempatan kali ini saya mau membahas tentang sorting pada array yaitu Bubble Sort atau bisa juga disebut metode gelembung. Agak terdengar aneh ya? saya rasa juga begitu :p

Sebelumnya pernah membuat program pencarian data dari elemen elemen array?  Jika pernah, terasa lambatkah proses pencariannya? Salah satu faktor yang menyebabkan lambatnya proses mungkin disebabkan gara gara program tersebut tidak dalam keadaan terurut. Berarti yang harus kita lakukan selanjutnya yaitu mengurutkan array tersebut.

Banyak sekali metode yang bisa digunakan, salah satunya yaitu Bubble Sort. Selain Bubble Sort ada banyak lagi metode, yaitu metode sisipan (insertion sort), maksimum-minimum (maximum-minimum sort), quick sort. Sebenarnya masih ada lagi, namun yang saya tahu hanya itu saja :p

Sekarang kita fokus ke algoritma Bubble Sort ya.

Step-by-step example.
Let us take the array of numbers "5 1 4 2 8", and sort the array from lowest number to greatest number using bubble sort algorithm. In each step, elements written in bold are being compared. Three passes will be required.

First Pass:
( 5 1 4 2 8 ) -> ( 1 5 4 2 8 ), Here, algorithm compares the first two elements, and swaps them.
( 1 5 4 2 8 ) -> ( 1 4 5 2 8 ), Swap since 5 > 4
( 1 4 5 2 8 ) -> ( 1 4 2 5 8 ), Swap since 5 > 2
( 1 4 2 5 8 ) -> ( 1 4 2 5 8 ), Now, since these elements are already in order (8 > 5), algorithm does not swap them.
Second Pass:
( 1 4 2 5 8 ) -> ( 1 4 2 5 8 )
( 1 4 2 5 8 ) -> ( 1 2 4 5 8 ), Swap since 4 > 2
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
Now, the array is already sorted, but our algorithm does not know if it is completed. The algorithm needs one whole pass without any swap to know it is sorted.
Third Pass:
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )
( 1 2 4 5 8 ) -> ( 1 2 4 5 8 )

Ini source code nya menggunakan bahasa C++.

#include <iostream>
using namespace std;

#define MAX 5

void TampilkanArray(int A[], int n) {
        for (int j=0; j<n; j++) {
                cout << "A[" << j << "] = " << A[j] << endl;
        }
}

int main() {
        int A[MAX] = {5,1,4,2,8};
        int j, k;

        int temp;

        cout << "Sebelum pengurutan: " << endl;
        TampilkanArray(A, MAX);

        for (j=0; j<MAX-1; j++) {
                for (k=MAX-1; k>=(j+1); k--) {
                        if (A[k] < A[k-1]) {
                                temp = A[k];
                                A[k] = A[k-1];
                                A[k-1] = temp;
                        }
                }
        }
        cout << endl;

        cout << "Setelah pengurutan: " << endl;
        TampilkanArray(A, MAX);
        return 0;
}

Referensi :
Pemrograman C dan Implementasinya, Informatika.


5 mahisaajy: April 2012 Oke, pada kesempatan kali ini saya mau membahas tentang sorting pada array yaitu Bubble Sort ata...

Saturday, April 7, 2012

Program Fungsi Terbilang


Algoritma program untuk fungsi terbilang :
a). Tentukan input bilangan yang akan dicari fungsi terbilangnya
b). deklarasikan array yang berisi 11, lalu isi dengan ["","Satu","Dua","Tiga","Empat","Lima","Enam","Tujuh","Delapan","Sembilan","Sepuluh","Sebelas"]
    , kemudian deklarasikan hasil = " "
c). sekarang kita fokus pada bilangan yang kita input tadi
jika n < 12 maka hasil = hasil + angka[n]
jika n < 20 maka hasil = terbilang(n%10) + " belas"
jika n < 100 maka hasil = terbilang(n/10) + " puluh" + terbilang(n%10)
jika n < 200 maka hasil = " seratus" + terbilang(n%10)
jika n < 1000 maka hasil = terbilang(n/100) + " ratus" + terbilang(n%100)
jika n < 2000 maka hasil = " seribu" + terbilang(n-1000)
jika n < 1000000 maka hasil = terbilang(n/1000) + " ribu" + terbilang(n%1000)
jika n < 1000000000 maka hasil = terbilang(n/1000000) + " juta" + terbilang(n%1000000)
dan jika tidak memenuhi syarat diatas maka hasil = terbilang(n/1000000000) + " milyar" + terbilang(n % 100000000)
d). selesai

Sebagai catatan, program converter infix ke postfix ini menggunakan bahasa pemrograman python. Bagi yang mau mendownload program + source code + algoritma + flowchart dipersilahkan

5 mahisaajy: April 2012 Algoritma program untuk fungsi terbilang : a). Tentukan input bilangan yang akan dicari fungsi t...

Convert Infix Notation to Postfix Notation


Algoritma :
1. program membaca input yang kita masukkan. jika inputan pertama berupa simbol "(" maka simbol tersebut akan di PUSH ke dalam stack
2. jika bertemu dengan simbol ")" maka program akan mem-POP seluruh elemen yang berada dalam stack menjadi output sampai bertemu dengan simbol "(" yang kita input pertama tadi. dengan catatan simbol "(" dan ")" tidak akan menjadi output.
3. jika inputan yang terbaca berupa simbol OPERAND, maka OPERAND tersebut langsung di POP menjadi output.
4. jika inputan merupakan simbol OPERATOR maka :
 - kita perhatikan dahulu level dari OPERATOR yang diinputkan, jika TOP stack berisi OPERATOR dengan level lebih tinggi atau sama dengan OPERATOR  yang diinputkan, maka TOP stack tersebut akan di POP menjadi output. Proses seperti ini akan terus berlanjut dan akan berakhir jika bertemu dengan OPERATOR dengan level lebih rendah atau jika bertemu dengan simbol “(“.
 - jika OPERATOR yang diinputkan memiliki level lebih tinggi dibanding dengan OPERATOR yang ada di dalam stack, maka OPERATOR tersebut ikut kita PUSH ke dalam stack.
    *keterangan :
    -CREATE = operasi pembuatan stack.
    -PUSH = operasi memasukkan/menambah elemen ke dalam stack.
    -POP = operasi penghapusan elemen dari stack.
    -ISEMPTY =operasi stack yang memastikan stack kosong atau tidak, dan output datanyanya bertipe boolean.
    -OPERAND = operand di sini merupakan simbol berupa abjad/alfabet (contoh : a,b,c,d,…,z).
    -OPERATOR = merupakan simbol aritmatika (contoh: ^, *, /, +, -”(“, “)” ).

Sebagai catatan, program converter infix ke postfix ini menggunakan bahasa pemrograman python. Bagi yang mau mendownload program + source code + algoritma dipersilahkan
http://www.mediafire.com/download.php?nzodrdqphrhjvi7

5 mahisaajy: April 2012 Algoritma : 1. program membaca input yang kita masukkan. jika inputan pertama berupa simbol &quo...
< >