Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

20 November 2008

Exception Handling pada Pemrograman Java



Di sini saya akan menjelaskan garis besar dari salah satu konsep yang dimiliki oleh bahasa pemrograman Java yaitu exception handling. Bahasa pemrograman Java menyediakan sebuah mekanisme yang dikenal dengan exception untuk membantu program dalam menangani error. Ketika sebuah error terjadi, program akan melempar(throws) sebuah exception. Maksudnya apa? Maksudnya adalah bahwa alur normal dari sebuah program yang sedang berjalan akan diinterupsi jika terjadi error, kemudian runtime environment akan melakukan sebuah exception handler yaitu satu blok kode yang dapat menangani tipe error tertentu. Penanganan exception bisa dilakukan untuk menormalkan kembali program dari kondisi error. Tidak semua penanganan error dapat menormalkan kembali suatu program, jika error tersebut tidak dapat dinormalkan kembali, maka program tersebut akan langsung mati(terminate).

Exception terjadi karena berbagai macam sebab. Penyebabnya mungkin karena pengguna salah dalam memasukkan input atau mungkin dikarenakan koneksi jaringan yang hang ketika program sedang berjalan.

Tiga buah statement di bawah ini adalah statement yang dipakai untuk exception handling:

  1. Try Statement : Di dalam blok try statement ini adalah kode-kode program di mana mungkin terjadi error. Jadi seorang programmer harus mengetahui kode manakah yang mungkin akan menyebabkan suatu error dan jika kode program yang memungkinkan terjadinya error telah diketahui, maka sang programmer lebih baik meletakkan kode programnya ke dalam blok try statement ini.
  2. Catch statement : Apabila memang error terjadi pada sebuah kode program di dalam blok try statement, maka secara langsung program akan terinterupsi dan dialihkan ke dalam blok catch statement ini. Di dalam blok catch statement ini, sang programmer dapat melakukan tindakan preventif yang sifatnya agar program tersebut tidak akan terjadi error lagi.
  3. Finally statement : Blok statement ini akan selalu dieksekusi walaupun program yang kita buat terdapat error atau tidak.

Secara sederhana, block dari sebuah exception handling dapat digambarkan sebagai berikut:

Agar lebih jelas aplikasinya di dalam Java, silahkan Anda download file Java pada link berikut: CobaException.java .

Kurang lebih isi dari file Java di atas adalah seperti berikut :

18 November 2008

Sifat Case-sensitive pada JavaScript



Sebenarnya apa yang dimaksud dengan case-sensitive di sini ?. Ok, akan saya jelaskan. Maksud case-sensitive di sini adalah suatu aturan penulisan ejaan yang membedakan antara huruf kapital dengan huruf kecil. Mungkin lebih jelasnya seperti ini, misalkan ada dua buah kalimat yaitu ilmu dan Ilmu. Jika dilafalkan, dua kata itu sebenarnya sama yaitu menunjukkan sebuah kata ilmu, tetapi kalau dipandang case-sensitivenya, kedua kata itu sangat berbeda di mana kata ilmu dimulai dengan huruf i(i kecil) dan kata Ilmu lainnya dimulai dengan huruf I(i kapital).


Sifat case-sensitive ini merupakan salah satu karakteristik bahasa pemrogaman JavaScript. Seluruh keyword, operator, variable name, even handlers, objek properties, dll memakai konsep case-sensitive ini. Perlu dicatat bahwa penulisan keyword-keyword di JavaScript adalah dengan huruf kecil semua. Misalkan jika kita menggunakan fitur control statement seperti if, maka Anda harus pastikan bahwa keyword yang anda tulis adalah if bukannya If. Maksud utama dari case-sensitive ini adalah agar Anda dapat lebih cermat lagi dengan penggunaan huruf kapital ketika menentukan dan mengakses variable. Satu kesalahan saja dalam penulisan keyword, operator, variable name, even handlers, objek properties, dll dapat merubah seluruh script yang ada dan harus membutuhkan cukup waktu untuk mendebug-nya.

14 November 2008

Pemakaian Stack pada JavaScript



JavaScript adalah salah satu bahasa pemrogaman yang sering dipakai untuk digunakan pada web programming (pemrogaman web). JavaScript memberikan keuntungan kepada programmer web untuk membuat halaman web yang dibuat menjadi lebih dinamis. Banyak sekali tulisan yang membahas tentang pembahasan JavaScript ini. Dinamakan JavaScript karena syntax- syntaxnya hampir mirip dengan syntax bahasa pemrogaman Java, tetapi perlu ditekankan bahwa pemrogaman ini tidak ada sangkut pautnya dengan pemrogaman Java yang diusung oleh Sun Microsystem.

Bahasa pemrogaman JavaScript mempunyai kemampuan yang tak kalah dari bahsa pemrogaman yang lain. Salah satunya adalah JavaScript mampu menangani struktur data Stack . Untuk pembaca yang belum mengetahui apa itu Abstract Data Type “ Stack ”, maka akan saya kenalkan sekarang. Stack adalah suatu ADT di mana penyimpanan data dilakukan dengan sistem Last-in-First-Out atau yang sering disebut dengan LIFO. Maksud dari stack ini adalah data yang disimpan terakhir akan dikeluarkan lebih dulu. Konsep dari stack ini bisa diumpamakan seperti tumpukan piring di mana piring di sini diumpamakan sebagai data dan tumpukannya diumpamakan sebagai stack . Apabila kita membayangkan ada setumpuk piring yang telah kita susun di hadapan kita, maka piring yang paling atas akan kita ambil dahulu daripada piring yang paling bawah yang kita ambil. Seperti itulah peumpamaan mudahnya. Mudah-mudahan pembaca mengerti dengan apa yang saya jelaskan tadi.

OK, sekarang kita langsung kepada tahap peng implementasi annya dalam JavaScript. Untuk perlu diingat bahwa konsep stack dan queue dalam JavaScript merupakan suatu method atau fungsi yang terdapat pada objek array yaitu push() dan pop() . Maksud push() di sini adalah memasukkan data kedalam stack , sedangkan pop() adalah mengambil data dari bagaian atas stack ( top of stack ). Oleh karena itu, sebelumnya kita harus mendeklarasikan variable bertipe array seperti berikut:

var stack=[ ]; // membuat variabel bertipe array dengan isi yang masih kosong

Sekarang kita akan melihat implementasi dari stack ini: Perhatikan !

stack.push(”tawakal”); // memasukkan data string ”tawakal” ke dalam stack . Ini adalah data pertama yang dimasukkan ke dalam stack .

stack.push(”ikhtiar”); //memasukkan data string ”ikhtiar” ke dalam stack . Ini adalah data kedua yang dimasukkan ke dalam stack

stack.push(2008); //memasukkan data integer 2008 ke dalam stack . Ini adalah data ketiga yang dimasukkan ke dalam stack

Cukup di sini saja dan kita akan melihat bagaimana struktur data pada stack yang telah kita kerjakan pada syntaks di atas. Perhatikan skema di bawah ini:

| 2008 |

| ikhtiar |

| tawakal |

Jika diperhatikan, data paling pertama yang dimasukkan ternyata diletakkan pada bagian paling bawah stack , sedangkan data paling terakhir yang dimasukkan diletakkan pada bagian paling atas stack ( top of stack ). Untuk mengujinya kita tambahkan syntaks seperti di bawah ini:

stack.pop(); // mengeluarkan data paling atas dari stack

stack.pop(); // mengeluarkan data paling atas dari stack

stack.pop(); // mengeluarkan data paling atas dari stack

Dari listing code di atas, secara kasar maka akan di dapat data keluaran seperti berikut secara berurutan: 2008,ikhtiar,tawakal.

Penjelasan di atas bukanlah aplikasi code sebenarnya, tetapi hanyalah gambaran kasarnya saja. Di bawah ini adalah salah satu aplikasi dari permasalahan stack di atas.


<html>
<head>
<script type="text/javascript">
var stack=[];
function insertStack(){
stack.push(form1.datastack.value);
form1.datastack.value="";
form1.isiStack.value=stack.join("\n");
}
function popFromStack(){
stack.pop();
if(stack.length==0)
form1.isiStack.value="isi stack kosong";
else
form1.isiStack.value=stack.join("\n");
}
</script>
</head>
<body>
<form name="form1" method="post" action="">
<p>
Masukkan data ke dalam stack :<input type="text" name="datastack" />
<input type="button" name="Submit" value="Push to Stack" onclick="insertStack()" />
</p>
<p>
Data di dalam stack:<br />
<textarea name="isiStack" rows="7" cols="14">
</textarea><br />
</p>
<p>
<input type="button" name="Submit2" value="Pop to Stack" onclick="popFromStack()"/>
</p>
</form>
</body>
</html>

31 October 2008

Solusi Puzzle Menara Hanoi Dengan Pemrogaman C


Konteks Menara Hanoi di sini adalah bukan menunjukkan nama suatu tempat, melainkan menunjukkan nama sebuah game puzzle yang sudah sering terdengar dalam telinga para gamers dan programmers. Kenapa Saya masukkan kata “programmers” ? Memang ini adalah sebuah games, tetapi penerapannya sering digunakan sebagai sebuah problem dalam bahasa pemrogaman.

Pada kali ini, Saya akan membagi ilmu kepada para pembaca sekalian tentang bagaimana problem ini dapat dipecahkan dengan bahasa pemrogaman. Bahasa pemrogaman yang akan Saya pakai adalah bahasa C. Pada pembahasan kali ini, kita akan memakai aplikasi fungsi rekursif yaitu fungsi yang memanggil dirinya sendiri.

Berikut adalah listing SC-nya.


#include <stdio.h>

#include <stdlib.h> //Header ini digunakan untuk mengambil fungsi atoi

#include <string.h> //Header ini digunakan untuk mengambil fungsi strlen

void tulisLangkah(int jmlCakram,char pasakAwal,char pasakAkhir,char pasakBantu)

// pindahkan piringan ke jmlPasak dari pasakAwal menuju pasakAkhir melalui pasakBantu

{

static int langkah=0; //Digunakan untuk penomoran setiap langkah

if (jmlCakram == 0) return;

/*1*/ tulisLangkah(jmlCakram-1,pasakAwal,pasakBantu,pasakAkhir);

//pindahkan piringan ke jmlPasak-1 dari pasakAwal menuju pasakBantu melalui pasakAkhir

/*2*/ printf("%4d. Pindahkan cakram ke %d dari pasak %c ke pasak %c\n",++langkah,jmlCakram,pasakAwal,pasakBantu);

/*3*/ tulisLangkah(jmlCakram-1,pasakAkhir,pasakAwal,pasakBantu);

//pindahkan piringan ke jmlPasak - 1 dari pasakAkhir menuju pasakAwal melalui pasakBantu

}

int main(int argc,char *argv[]) //Perintah untuk menuliskan argument pada Command Line

{

int jmlCakram,i;

if(argc==1)

{

printf("Maaf Anda harus menuliskan argumen pada command line !!!");

return 0;

}

jmlCakram = atoi(argv[1]);

//fungsi atoi didapat dari standar libarary stdlib yang fungsinya untuk mengconvert data string menjadi data integer

for(i=0;i

if(argv[1][i]-48<=0||argv[1][i]-48>9)

jmlCakram=0;

//Jika argumen yang dimasukkan mengandung integer dan string, maka akan ada informasi berupa peringatan

if(jmlCakram==0)

//jika argumen yang dimasukkan berupa string, maka fungsi atoi otomatis akan mengkonversi string menjadi 0

//sehingga apabila data yang dimasukkan berupa string, maka akan ada informasi yang akan muncul

{

printf("Argumen yang Anda masukkan salah !!!");

return 0;

}

if(jmlCakram>10)

{

printf("Argumen yang Anda masukkan terlalu besar !!!");

return 0;

}

printf("\n\n ***Menara Hanoi***\n\n");

printf("Untuk memindahkan %d cakram dari\npasak 1 ke 2, lakukan langkah-langkah ini:\n\n",jmlCakram);

tulisLangkah(jmlCakram,'1','3','2');

printf("\n\n ***Selesai***");

return 0;

}