Kamis, 20 November 2014

Membuat Kalkulator Berbasis String Dengan PHP

Bagaimanakah cara membuat kalkulator berbasis string dengan PHP? Berikut ini adalah pembahasan cara pembuatannya.
Langkah Pertama adalah ambil operator aritmatik dan masukkan ke dalam daftar operator. Pengambilan operator ini mulai dari kiri. Daftar operator di sini dapat berupa suatu array. Dalam contoh input di atas, akan diperoleh daftar operator yang berisi {+, -, *, +}.
Langkah kedua adalah memecah bilangan yang menjadi operand (bilangan yang dioperasikan) dan masukkan ke dalam daftar operand. Daftar operand ini bisa juga berupa array. Trus… bagaimana caranya memecah operand-operand itu? Mudah saja, dalam PHP kita bisa menggunakan functionexplode() dengan tanda operator sebagai pemecahnya. Namun… bukankah function ini hanya bisa memecah suatu string menjadi substring berdasarkan sebuah karakter pemecah saja? Sedangkan dalam string input bisa jadi terdiri lebih dari satu karakter operatornya? Hmmm…. gampang saja, sebelum memecah operand, kita lakukan replace substring dahulu untuk setiap operatornya. So… kita bisa gunakan str_replace(). Direplace dengan apa operatornya? Anda bisa mereplace dengan spasi atau karakter yang lain. Hasil dari proses replace operator ini akan dihasilkan suatu string berbentuk 3 5 2 4 1 (dengan asumsi karakter pengganti operator adalah karakter spasi). Nah… berikutnya sudah bisa deh dipecah para operand nya, menggunakan explode(). Hasil dari explode ini akan diperoleh daftar operand {3, 5, 2, 4, 1}.
Langkah ketiga adalah mulai menghitung. Untuk proses perhitungan kita gunakan perulangan/looping sejumlah operatornya. Adapun nilai awal hasil perhitungan adalah sama dengan operand pertama, dalam contoh ini adalah 3. Untuk perulangan ke-1, kita ambil operator ke-1 dari daftar operator. Kebetulan operator pertama ini adalah penjumlahan (+), maka akan dihitung nilai hasil perhitungan yang lama (3) ditambah dengan operand ke-2 yaitu 5 dan dihasilkan 8. Untuk perulangan ke-2, kita ambil operator ke-2 dari daftar operator yaitu pengurangan (-). Selanjutnya hitung hasil perhitungan sebelumnya, yaitu 8 dikurangi operand ke-3 (dalam contoh ini adalah 2) dan dihasilkan 6. Proses ini dilakukan terus hingga pada operator terakhir. Setelah perulangan selesai, akhirnya bisa diperoleh hasil terakhir perhitungan.
Implementasi dari ide di atas ke dalam bentuk script PHP adalah sebagai berikut:
<!--?php 
<?php $formula = "3+5-2*4+1"; // step 1 - memasukkan operator ke dalam daftar operator $operator = array(); for($i=0; $i<=strlen($formula)-1; $i++) { if (($formula[$i] == "+") || ($formula[$i] == "-") || ($formula[$i] == "*") || ($formula[$i] == "/")) { $operator[] = $formula[$i]; } } // step 2 - proses memecah operand dan dimasukkan ke daftar operand // mengganti operator dengan spasi $formula = str_replace("+"," ",$formula); $formula = str_replace("-"," ",$formula); $formula = str_replace("*"," ",$formula); $formula = str_replace("/"," ",$formula); // memecah operand berdasarkan spasi dan hasilnya berupa array berisi daftar operand $operand = explode(" ",$formula); // step 3 - proses menghitung // nilai awal hasil perhitungan $hasil = $operand[0]; // looping sejumlah operator untuk proses perhitungan for($i=0; $i<=count($operator)-1; $i++) { if ($operator[$i] == "+") $hasil = $hasil + $operand[$i+1]; else if ($operator[$i] == "-") $hasil = $hasil - $operand[$i+1]; else if ($operator[$i] == "*") $hasil = $hasil * $operand[$i+1]; else if ($operator[$i] == "/") $hasil = $hasil / $operand[$i+1]; } // tampilkan hasil perhitungan echo "Hasil perhitungannya adalah : ".$hasil; ?>
OK.. simple bukan? Ide dan script di atas dapat menghandle input string yang di dalamnya terdapat spasi, misalnya 3+5 – 2 * 4+1. Dan hasilnya akan tetap sama seperti apabila tidak ada spasi. Selain itu, script di atas juga mampu menghandle input yang di dalamnya terdapat bilangan riil, misalnya 3.3+5-2.56*4+1. Silakan cek sendiri ya!!
Mudah bukan?? Alhamdulillah… bisa selesai juga akhirnya. Yang jelas… Nothing is impossible in programming!!
Dalam kasus ini, ada hikmah yang bisa kita ambil terkait dengan operasi aritmatik yang melibatkan string dengan PHP. Hikmah apa gerangan? Coba perhatikan inputnya. Inputnya adalah suatu string, yang berisi operand dan operator aritmatiknya. Nah… coba perhatikan lagi pada daftar operand. Dari proses pemecahan string input menjadi daftar operand, setiap operandnya masih berupa string (karena inputnya juga string). Dalam script di atas, tidak ada proses konversi tipe data dari string ke bilangan. Selanjutnya perhatikan lagi ketika proses perhitungan. Dalam proses perhitungan juga tidak terdapat konversi tipe data lagi dari string ke bilangan. Dari hal ini bisa disimpulkan bahwa dalam PHP, angka yang bertipe data (string) dapat dioperasikan seperti layaknya angka yang bertipe data bilangan. Sebagai contoh “4″ + “56″ akan menghasilkan 60, seperti halnya 4 + 56.
Trus… bagaimana dengan bahasa pemrograman yang lain? Apakah angka dalam bentuk string bisa dioperasikan juga seperti layaknya angka dalam tipe bilangan? Belum tentu… sebagai contoh dalam bahasa Pascal, bila Anda operasikan “1″ + “2″ akan dihasilkan “12″. So.. bagaimana cara menghandlenya? Caranya adalah dengan mengkonversi angka bertipe data string ke bilangan. Proses konversi tipe data ini dalam pemrograman diistilahkan dengan “casting”.

Tidak ada komentar:

Posting Komentar