BAB 1 PENDAHULUAN 1.1 Latar Belakang Saat ini, pengguna telepon-seluler (selanjutnya disingkat ponsel) semakin meningkat seiring pesatnya arus globalisasi dengan tuntutan pertukaran informasi yang cepat. Fungsionalitas sebuah ponsel juga semakin meningkat seiring perkembangan teknologi digital. Sebagai contoh, kalau dahulu ponsel hanya digunakan sebatas untuk bertelepon dan kirim-terima SMS, sekarang lebih meningkat lagi, misalnya sebagai piranti pemutar musik dan video, kamera digital atau perekam video, piranti bermain game, piranti berkomunikasi data (layanan internet dan jejaring sosial), dan lain sebagainya. Salah satu fitur ponsel, terutama yang tergolong jenis ponsel pintar (smartphone) adalah kemampuannya untuk menjalankan berbagai aplikasi seperti halnya sebuah PC. Hal ini dimungkinkan dengan diterapkannya suatu system pengoperasian (operating system atau disingkat OS) tertentu pada ponsel. OS tersebut antara lain adalah Symbian OS milik Nokia, Blackberry OS milik RIM, Android OS milik Google, Windows Phone milik Microsoft, dan iOS milik Apple. Contoh aplikasi untuk ponsel antara lain adalah aplikasi perkantoran (office application), aplikasi perpetaan (mapping) dan GPS (Global Positioning Satellite), aplikasi penerjemah bahasa (translator), pembaca buku digital (e-book reader), dan masih banyak aplikasi lainnya. Aplikasi-aplikasi tersebut sebagian sudah menjadi bawaan ponsel (pre-installed applications), dan sebagian lainnya disediakan oleh pihak-ketiga (third-party applications). Dewasa ini, terdapat banyak jenis aplikasi pihak-ketiga yang tersedia. Pengguna tinggal memilih aplikasi mana yang disukainya. Aplikasi-aplikasi tersebut ada yang gratis dan ada pula yang berbayar. Salah satu contoh adalah aplikasi kalkulator. Umumnya ponsel, bahkan kategori smartphone sekalipun, hanya dibekali dengan program kalkulator sederhana yang hanya dapat 1 menghitung operasi aritmetika sederhana yaitu penjumlahan, pengurangan, perkalian, pembagian dan persen. Hal inilah yang mendorong para pengembang perangkat-lunak pihak-ketiga untuk mengembangkan aplikasi kalkulator ilmiah (scientific calculator) sebagai peningkatan fungsi dari kalkulator standar bawaan ponsel. Ada beberapa alasan bagi para siswa atau mahasiswa jurusan ilmu pasti untuk perlunya menggunakan kalkulator, juga bagi para teknisi atau pemrogram. Alasan-alasan tersebut antara-lain: 1. Kalkulator dapat mendemonstrasikan sebuah konsep. Kemampuan kalkulator dalam memasukkan operasi dan angka-angka yang rumit, kadang-kadang adalah keuntungan dalam mempelajari pola atau aturan numerik. Kalkulator dapat digunakan untuk membuktikan bahwa jawaban yang lebih besar terjadi ketika mengalikan dengan peningkatan angka tertentu, atau jawaban yang lebih kecil terjadi ketika mengalikan dengan angka antara nol dan satu. Kecepatan eksekusi sangat meningkatkan penemuan pola atau aturan numerik dan mejadi keuntungan dalam pelajaran Aljabar misalnya. 2. Kalkulator dapat membantu dalam aplikasi-aplikasi terapan. Ketika diperlukan untuk mengukur dimensi dan menerapkan konsep luas dan volume misalnya, kalkulator dapat digunakan. Dalam belajar konsep, siswa dapat memulainya dengan angka sederhana, kemudian mereka dapat pindah ke desimal dan pecahan untuk mendapatkan hasil yang akurat dalam proses pengukuran nyata. 3. Kalkulator dapat membantu dalam estimasi. Ketika melakukan suatu perhitungan dimensi berdasarkan hasil pengukuran misalnya, kita dapat memperkirakan hasilnya dengan suatu angka bulat tertentu sebagai estimasi awal, sebelum mengecek kebenarannya lewat hasil yang ditampilkan oleh kalkultor. Ini kesempatan dalam melatih ketajaman otak dalam melakukan estimasi. 2 4. Kalkulator dapat mempercepat proses penyelesaian masalah. Dengan kemampuan kalkulator dalam kecepatan menyajikan hasil perhitungan matematika yang rumit, disertai cara memasukkan operasi yang sesuai, kalkulator dapat mempercepat proses penyelesaian masalah meskipun tidak dapat berpikir sendiri. Aplikasi kalkulator ilmiah buatan pihak-ketiga, saat ini telah banyak beredar dan digunakan oleh pengguna ponsel. Kebanyakan aplikasi tersebut hanya diperuntukkan bagi suatu OS tertentu. Jadi aplikasi kalkulator yang dikembangkan untuk Symbian OS misalnya tidak bisa dijalankan pada Blackberry OS. Dengan demikian pengguna yang berbeda OS tidak dapat bertukar aplikasi kalkulator tersebut. Java platform milik Sun Microsystems dikenal sebagai platform yang menjembatani berbagai macam OS, misalnya suatu aplikasi yang dikembangkan untuk Java platform dapat dijalankan baik pada Windows PC maupun pada Linux PC selama kedua PC tersebut memiliki JVM (Java Virtual Machine) di dalamnya. Untunglah Java untuk ponsel telah tersedia saat ini dan diberi nama J2ME (Java 2 platform, Mobile Edition). Platform ini sesuai dengan mantra Sun Microsystems yang terkenal, yakni WORA (Write Once, Run Anywhere), artinya suatu aplikasi yang dikembangkan untuk platform ini dapat dijalankan pada ponsel manapun asalkan ponsel tersebut mendukung J2ME platform. J2ME platform, oleh karena keterbatasan sumber-daya prosesor dan memori ponsel pada saat awal pengembangannya, pustaka fungsi matematika built-in dibuat terbatas, misalnya tidak memiliki fungsi-fungsi pokok matematika yang biasanya terdapat pada sebuah kalkulator ilmiah seperti perpangkatan, eksponen, logaritma, inverse trigonometri, dan fungsi hiperbolik. Dengan demikian akan memerlukan pengkodean khusus bagi para pengembang bila hendak menambahkan fungsi-fungsi tersebut. Kebanyakan aplikasi kalkulator ilmiah, baik yang mendukung J2ME ataupun yang spesifik OS tertentu, dirancang dengan User Interface (UI) layaknya sebuah kalkulator ilmiah. UI ini menyediakan tombol-tombol numerik dan fungsi. 3 Tata-letak dan ukuran tombol-tombol tersebut ada yang statis dan ada pula yang dinamis, statis artinya hanya bisa digunakan pada ponsel dengan ukuran layar tertentu, sementara dinamis artinya bisa menyesuaikan dengan ukuran layar ponsel pengguna, meskipun tetap ada spesifikasi ukuran layar minimumnya. Para pengguna ponsel dengan ukuran layar di bawah 240 × 320 piksel, umumnya tidak bisa menjalankannya. UI jenis ini akan nyaman digunakan oleh ponsel yang mendukung teknologi touchscreen, sebaliknya akan menyulitkan pengguna ponsel yang tidak mendukung teknologi tersebut. Dari segi cara pengoperasian, umumnya aplikasi-aplikasi tersebut meniru cara pengoperasian kalkulator sebenarnya. Misalnya bila pengguna hendak mengevaluasi suatu ekspresi berupa fungsi permutasi dengan n = 6 dan r = 3, maka pengguna tersebut harus menekan tombol berturut-turut [ 6 ], [ nPr ], [ 3 ], kemudian tombol [ = ] untuk menampilkan hasil. Cara ini meskipun sederhana bagi sebagian pengguna, akan tetapi agak rancu bagi sebagian pengguna lainnya, terutama bagi yang terbiasa menggunakan Microsoft Office Excel. Pada Excel fungsi di atas harus diketikkan sebagai berikut: “=PERMUT(6,3)”. Di Indonesia, Excel adalah salah satu aplikasi perkantoran yang umum digunakan, bahkan menjadi salah satu aplikasi yang wajib dikuasai oleh calon pelamar kerja. Kelemahan lain dari kebanyakan aplikasi kalkulator yaitu hanya mampu memproses satu baris masukan ekspresi aritmetika setiap saat, juga banyak di antaranya tidak mendukung penggunaan history yang sangat berguna misalnya untuk memeriksa kembali ekspresi-ekspresi yang dimasukkan sebelumnya. Kelemahan lainnya adalah tidak mendukung penggunaan variabel atau register sebagai tempat penyimpanan hasil sementara. Tanggapan terhadap suatu kesalahan masukan atau kesalahan selama proses evaluasi, oleh kebanyakan aplikasi, hanya sekedar memberi tahu bahwa telah terjadi kesalahan, tanpa identifikasi yang jelas tentang jenis dan lokasi kesalahan tersebut pada ekspresi masukan, sehingga pengguna perlu menebaknya sendiri. Sekali lagi hal ini nampaknya sepele bila masukan ekspresi 4 matematikanya sangat pendek, akan tetapi bila masukannya sangat panjang, maka identifikasi jenis dan lokasi kesalahan akan sangat berguna bagi pengguna. Hal-hal yang dikemukakan di atas yang mendorong perancangan aplikasi kalkulator untuk beragam platform ponsel, tanpa keterbatasan ukuran layar minimum dan dapat dijalankan bahkan pada ponsel-ponsel lama yang memiliki sumber daya terbatas. Aplikasi juga dirancang sederhana dalam penggunaan tanpa membutuhkan banyak waktu untuk mempelajari fitur aplikasi, memiliki fungsi matematika yang lengkap, mendukung penggunaan history dan variabel dan dapat mengidentifikasi setiap jenis kesalahan yang timbul selama proses perhitungan. 1.2 Perumusan Masalah Mendasarkan uraian pada latar-belakang masalah yang telah dikemukakan di atas, dirumuskan permasalahan penelitian sebagai berikut. 1. Perlu dikembangkan suatu aplikasi yang dapat dijalankan pada ponsel lama yang memiliki sumber daya terbatas, yaitu dengan cara memanfaatkan platform J2ME yang didukung oleh ponsel Symbian dan Blackberry OS. Sedangkan J2ME adalah salah satu versi bahasa pemrograman Java yang merupakan bahasa yang digunakan untuk merancang aplikasi Android yang lebih baru dan populer, sehingga porting ke lingkungan tersebut lebih mudah dilakukan. 2. Perlu dikembangkan aplikasi yang bisa mengatasi keterbatasan lingkungan J2ME dalam menyediakan pustaka fungsi matematika. 3. Perlu dikembangkan aplikasi kalkulator yang sederhana dalam penggunaan akan tetapi memiliki fungsi bantuan yang lengkap, juga tidak membutuhkan persyaratan ukuran layar minimal. 4. Perlu dikembangkan aplikasi kalkulator ilmiah yang dapat mengevaluasi beberapa baris ekspresi matematika sekaligus, dapat menggunakan vasilitas history dan penggunaan variabel, juga dapat mengidentifikasi dan menunjukkan kesalahan pada ekspresi masukan secara terperinci. 5 1.3 Pembatasan Masalah Mengingat ruang lingkup permasalahan yang luas, maka permasalahan penelitian ini dibatasi pada perancangan aplikasi kalkulator sebagai berikut. 1. Aplikasi ini berupa kalkulator ilmiah berbasis teks, bukan simbol seperti umumnya aplikasi kalkulator ilmiah, dengan asumsi bahwa setiap ponsel dapat memasukkan teks untuk berkirim pesan singkat. Tata-bahasa ekspresi matematika (tata-cara penulisan ekspresi, operator aritmetika dan fungsi matematika) diadaptasi dari format penulisan ekspresi aritmetika dan fungsi matematika Microsoft Office Excel 2007, dengan pertimbangan bahwa Microsoft Excel sudah dikenal luas. 2. Target aplikasi adalah ponsel yang mendukung J2ME dengan spesifikasi profil MIDP 2.0 dan kofigurasi CLDC 1.1. Ponsel dengan OS terbaru seperti Apple iOS, Windows Phone 8, Blackberry 10 dan Android tidak didukung. Akan tetapi OS Android dapat saja menjalankannya dengan emulator khusus. 1.4 Keaslian Penelitian Dari studi pustaka yang telah dilakukan, penelitian yang mirip dengan penelitian ini, salah satunya dilakukan oleh Rahmadyan (2009) yang juga merancang sebuah kalkulator ilmiah untuk ponsel J2ME. Beberapa perbedaan penelitian tersebut dengan penelitian ini dijelaskan sebagai berikut. Pertama, User Interface (UI). Rahmadyan merancang UI dengan tampilan kalkulator sebenarnya dan dirancang secara statis pada bingkai layar dengan ukuran 240 × 320 piksel. Hal ini menjadikan ponsel dengan ukuran layar dibawah ukuran tersebut tidak dijamin dapat menjalankannya. Rancangan UI tersebut juga akan lebih membutuhkan dukungan teknologi touchscreen. Disisi lain, pengaruh dari pemilihan UI jenis ini mengakibatkan pengembangan aplikasi berupa penambahan / pengubahan suatu fasilitas ataupun fungsi tertentu, akan membutuhkan perombakan total pada tampilan UI. Berbeda dengan penelitian ini, 6 masukan ekspresi adalah berupa skrip teks yang diketikkan lewat keyboard ponsel, dengan demikian tidak mensyaratkan ukuran layar minimum dan keharusan dukungan teknologi touchscreen bagi ponsel target. Disamping itu, rancangan pada penelitian ini dirancang sedemikian rupa agar mudah untuk dikembangkan, misalnya penambahan suatu fungsi matematika, hanya akan memerlukan sedikit proses penyuntingan pada kode sumber. Kedua, pustaka fungsi matematika. Rahmadyan mengimplementasi fungsifungsi: perpangkatan, akar, sinus, kosinus, tangen, faktorial, permutasi dan kombinasi, sedangkan fungsi-fungsi lain yang umumnya terdapat pada sebuah kalkulator ilmiah seperti fungsi logaritma, eksponen, inverse trigonometri, fungsi hiperbolik dan inverse-nya, juga fungsi-fungsi statistik lainnya seperti fungsi mean, median, modus, rata-rata, estimasi deviasi standar, dan sebagainya, justeru tidak diimplementasi. Sebaliknya penelitian ini akan mengimplementasi fungsifungsi seperti yang terdapat pada Microsoft Office Excel 2007, mencakup hampir seluruh fungsi yang termasuk kategori matematika dan trigonometri (Math & Trig), dan sebagian fungsi yang masuk kategori statistik (Statistical). Ketiga, perbedaan hasil perhitungan dan cakupan masukan fungsi matematika. Fungsi akar dan perpangkatan diimplementasi oleh Rahmadyan dengan menggunakan algoritma yang cukup sederhana akan tetapi berpengaruh pada keakuratan hasil perhitungan, pada beberapa bilangan masukan tertentu akan memiliki kesalahan yang cukup signifikan. Adapun fungsi permutasi dan kombinasi memiliki keterbatasan nilai bilangan masukan n, dimana n tidak boleh lebih dari angka 170. Di sisi lain, penelitian ini akan memiliki nilai hasil keluaran yang sama atau mendekati dari hasil yang dikeluarkan oleh Microsoft Office Excel untuk fungsi akar dan perpangkatan, juga memiliki cakupan nilai angka masukan yang lebih besar (n lebih besar dari angka 170) untuk fungsi permutasi dan kombinasi sesuai dengan cakupan Microsoft Office Excel. Keempat, metode parsing yang digunakan. Rahmadyan menerapkan teknik evaluasi hasil langsung terhadap urutan token dalam bentuk infix notation. Kekurangan metode ini membutuhkan algoritma yang cukup rumit, juga 7 membutuhkan perombakan total pada pengkodean bila hendak menambahkan suatu fasilitas tertentu, misalnya penambahan suatu operator matematika atau beberapa fungsi dengan jumlah parameter yang berbeda-beda. Berbeda dengan penelitian ini, diterapkan teknik evalusi hasil terhadap urutan token dalam bentuk reverse polish notation (RPN) setelah sebelumnya dikonversi dari bentuk infix notation dengan algoritma Shunting-Yard. Penambahan suatu operator matematika atau suatu fungsi tertentu dengan jumlah parameter fungsi yang bervariasi hanya akan membutuhkan sedikit penambahan kode tertentu tanpa harus merombak keseluruhan kode program. Penelitian lainnya adalah perancangan interpreter oleh Maukar dan Ciptadi (2003). Beberapa perbedaan penelitian tersebut dengan penelitian ini adalah sebagai berikut. Pertama, fungsionalitas. Maukar dan Ciptadi merancang aplikasi pemrograman berupa interpreter Bahasa X, sedangkan penelitian ini adalah rancangan kalkulator ilmiah. Kedua, perangkat target. Rancangan aplikasi Maukar dan Ciptadi hanya bisa dijalankan pada ponsel dengan dukungan Personal JavaTM khusus untuk Nokia 9210i, sedangkan penelitian ini menghasilkan aplikasi yang dapat dijalankan pada banyak model ponsel yang mendukung J2ME. Ketiga, tata-bahasa. Maukar dan Ciptadi merancang aplikasi pemrograman bahasa khusus yang diberi nama Bahasa X. Bahasa ini dirancang sangat terbatas pada pengenalan bahasa ekspresi yang sangat sederhana, di antaranya mewakili ekspresi aritmetik, ekspresi kontrol (if), ekspresi perulangan (for) dan ekspresi manipulasi string. Adapun penelitian ini hanya mengenal ekspresi aritmetik yang disesuaikan dengan sintaksis Microsoft Office Excel. Keempat, metode parsing. Interpreter hasil rancangan Maukar dan Ciptadi menggunakan metode recursive descent parsing, sedangkan penelitian ini menggunakan algoritma Shunting-Yard untuk mengubah urutan token dari bentuk infix notation ke dalam bentuk pohon RPN. Algoritma Shunting-Yard lebih cocok 8 diterapkan untuk proses evaluasi persamaan aritmetika daripada digunakan untuk parsing bahasa pemrograman (baik Interpreter maupun Compiler). Selanjutnya, dari dunia maya bisa didapatkan banyak aplikasi kalkulator ilmiah untuk ponsel yang mirip dengan rancangan aplikasi ini. Aplikasi-aplikasi tersebut ada yang gratis dan ada pula yang berbayar. Berikut adalah beberapa uraian singkat tentang aplikasi-aplikasi tersebut, dengan ketentuan yang terpilih adalah aplikasi yang mendukung lingkungan J2ME. Pertama, aplikasi Calculator yang dapat diunduh secara gratis di alamat http://www.garret.ru/En_Calc.htm. Aplikasi ini cukup bagus dan cukup komplit, dapat menangani penggunaan variabel (dengan catatan variabel yang digunakan harus didefinisikan terlebih dahulu), dapat mem-parsing perbandingan ([c?x:y], [x>y], [x<y], [1<x<5]), dapat mem-parsing beberapa baris ekspresi sekaligus, memiliki fasilitas plot grafik, mendukung penggunaan history, dan sangat mudah digunakan. Cara memasukkan ekspresi langsung diketikkan biasa sebagaimana layaknya mengetik pesan SMS. Kekurangannya adalah tidak memiliki fasilitas untuk melihat atau menghapus suatu variabel yang telah didefinisikan sebelumnya dan penampil kesalahan tidak menunjukkan secara spesifik bagian yang salah pada suatu ekspresi, sehingga agak menyulitkan pengguna dalam menafsir kesalahan apa yang terjadi. Kekurangan lainnya adalah kelengkapan fungsi yang hanya menyediakan fungsi-fungsi perpangkatan (x^y), bilangan bulat ([x]), bilangan dibelakang koma ({x}), bilangan absolut (|x|), sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), exp(x), log(x), ln(x), ceil(x), floor(x), dan sqr(x). Kedua, aplikasi Calc4M yang dapat diunduh secara gratis di alamat http://calc4m.en.softonic.com/java. Aplikasi ini memiliki fasilitas yang cukup lengkap seperti konversi satuan, mengenal sistem bilangan biner, oktal, desimal dan hexadesimal, konstanta-konstata ilmiah, dan mengenal penggunaan variabel [m1], [m2], [m3], dan [m4]. Tombol-tombol tersedia secara virtual di layar, akan tetapi bisa juga diakses langsung dari tombol-tombol pada keypad. Disediakan satu baris untuk tempat memasukkan teks ekspresi dan juga sekaligus untuk menampilkan hasil. Kelengkapan fungsi antara lain [x^2], [sqrt(x)], [x^y], [1/x], 9 [sin], [cos], [tan], [asin], [acos], [atan], [sinh], [cosh], [tanh], [asinh], [acosh], [atanh], [pi], [n!], [e], [e^x], [10^x], [ln] dan [log]. Kekurangan aplikasi ini adalah antara lain tidak mendukung evaluasi untuk beberapa baris sekaligus, tidak mendukung penggunaan history, penggunaan variabel / register terlalu minim (hanya empat buah register statis yang dapat digunakan), fungsi tidak terlalu lengkap. Ketiga, aplikasi Pro Calculator yang dapat diunduh secara gratis di alamat http://java-midp21-1.apps.opera.com/en_us/calculator_x.html?pos=2. Aplikasi ini menyediakan tombol-tombol virtual di layar, cara memasukkan ekspresi melalui tombol-tombol virtual tersebut, tidak bisa melalui tombol-tombol pada keypad. Cara ini cukup mudah untuk pengguna ponsel yang mendukung teknologi touchscreen, sebaliknya akan sulit bagi pengguna ponsel yang tidak mendukung teknologi tersebut karena harus menjangkau antar tombol-tombol virtual tersebut melalui tombol navigasi arah. Rancangan ini akan menyebabkan kebutuhan dimensi layar ponsel minimal dengan ukuran piksel 240×320. Banyak kekurangan aplikasi ini, antara lain hanya memiliki satu baris untuk memasukkan teks ekspresi, sehingga agak sulit untuk ekspresi yang panjang. Kekurangan lain adalah tidak mendukung penggunaan variabel dan history, juga hanya menyediakan fungsi-fungsi [sin], [cos], [tan], [1/x], [log], [x^2], [x^3], [n!], [MC], [MR], [M+] dan [M–]. Keempat, aplikasi SolveMyMath yang dapat diunduh secara gratis di alamat http://www.solvemymath.com/mobile/scientific_calculator.php. Aplikasi ini masih memiliki banyak kekurangan, antara lain cara memasukkan ekspresi agak sulit dilakukan, angka-angka bisa langsung dimasukkan dari tombol-tombol numerik pada keypad, akan tetapi untuk simbol lain seperti operator, bahkan tanda titik desimal dan tombol fungsi lainnya tersedia secara virtual di layar tetapi harus dipilih satu persatu melalui tombol navigasi arah (tidak mendukung teknologi touchscreen). Cara ini sangat menyulitkan untuk memasukkan ekspresi yang cukup panjang, ditambah dengan hanya tersedia satu baris untuk tempat memasukkan teks ekspresi. Kekurangan lainnya adalah tidak ada fasilitas history, 10 bahkan untuk ekspresi yang terakhir dimasukkan. Juga tidak ada fasilitas penggunaan variabel, dan masih menggunakan variabel tipe float untuk seluruh perhitungan ekspresinya, tidak menggunakan variabel tipe double untuk mendapatkan hasil yang lebih presisi. Untuk kelengkapan fungsi, aplikasi ini hanya mendukung fungsi-fungsi [π], [sin], [cos], [tan], [∛], [√], [asin], [acos], [atan], [ab], [a2], [exp], [ln], [log10], dan [n!]. 1.5 Tujuan Penelitian Penelitian ini dilakukan dengan tujuan mengembangkan aplikasi pemecah ekspresi matematika yang dapat dijalankan pada ponsel yang mendukung J2ME dengan spesifikasi profil MIDP 2.0 dan konfigurasi CLDC 1.1. 1.6 Manfaat Penelitian Manfaat dari penelitian ini adalah: 1. Meningkatkan fungsionalitas telepon-seluler, terutama ponsel lama yang memiliki sumber daya yang terbatas. 2. Menjadi dasar acuan untuk rancangan perangkat-lunak yang lebih kompleks misalnya interpreter bahasa pemrograman tertentu pada ponsel. 11