• Tidak ada hasil yang ditemukan

Bahasa Pemrogaman untuk Mendefinisikan Rule bagi Generator Soal Matematika

N/A
N/A
Protected

Academic year: 2017

Membagikan "Bahasa Pemrogaman untuk Mendefinisikan Rule bagi Generator Soal Matematika"

Copied!
16
0
0

Teks penuh

(1)

Bahasa Pemrograman Untuk Mendefinisikan Rule Bagi

Generator Soal Matematika

High Level Programming Language for Rule Defintion

for Math Problem Generator

Moh. Sofyan S. Thayf1, Retantyo Wardoyo2 Program Studi Ilmu Komputer

Program Pascasarjana Universitas Gadjah Mada

ABSTRACT

The research aim to develop a high level programming language for mathematics rule definition that will be use in mathematical problem generator that generate mathematical problem collections in easier and efficient way. The compiler and problem generator program also developed to evaluate the programming language.

The programming language are created by a grammar definition according to an approach to mathematics multiple choice problem creation circumstances, and limited to arithmetic problems only. The compiler are built by using Java Compilers Compiler (JavaCC) tools that generates lexical analyzer and syntax analyzer based on defined grammar and some defined semantic rules in Java classes.

As the result, the compiler and the problem generator successfully generate thousands of mathematical problems using the rules that written in the new programming language, less than 10 seconds.

Keywords: programming language, compiler, problem generator, mathematics

1 Pengajar pada STMIK KHARISMA Makassar

2 Pengajar pada Program Magister dan Doktor Ilmu Komputer FMIPA

(2)

1. Latar Belakang

Permasalahan utama dari aktifitas belajar, latihan, dan pengujian

kemampuan matematika adalah kebutuhan akan tersedianya koleksi soal dalam

jumlah yang besar dengan beragam variasi soal. Pengembangan bank soal

matematika, tidak jarang harus melibatkan tim kerja yang besar dan jam kerja

yang relatif panjang untuk menghasilkan soal yang valid dalam jumlah besar.

Program aplikasi generator soal matematika telah banyak dikembangkan

dan bisa didapatkan dengan mudah, akan tetapi generator soal yang tersedia

tersebut memiliki beberapa permasalahan, antara lain:

1. Software generator soal umumnya dikembangkan oleh pengembang software,

research team, task force, atau perorangan, yang fokus pada satu bidang atau

cabang matematika tertentu, dan generator soal yang dibangun akan

menghasilkan koleksi soal yang terbatas hanya dalam domain cabang

matematika tersebut. Sehingga untuk keperluan pembelajaran atau pengujian

kemampuan matematika yang lebih luas, bisa jadi dibutuhkan lebih dari satu

generator soal dari pengembang yang berbeda dengan kebijakan penggunaan

yang berbeda pula, terkait dengan harga software, lisensi, limitasi, dan

sebagainya.

2. Untuk dapat meng-generate soal, generator soal memiliki sejumlah rule sesuai

dengan formulasi matematika dari soal-soal yang akan dibentuk. Tetapi rule

ini merupakan algoritma yang sudah dituliskan sebagai kode program yang

(3)

melakukan modifikasi atau penambahan rule baru untuk kasus atau formula

matematika yang berbeda.

3. Untuk dapat mengembangkan software generator soal sendiri yang sesuai

dengan kebutuhan, dibutuhkan kemampuan sebagai seorang programer

komputer yang umumnya tidak selalu dimiliki oleh guru atau dosen yang

mengajarkan matematika

Dari permasalahan yang telah diuraikan di atas, maka perlu dipikirkan

untuk merancang dan mengembangkan suatu bahasa pemrograman khusus yang

mudah dipahami dan digunakan, atau bahasa pemrograman tingkat tinggi yang

bersifat deklaratif untuk mendefinisikan rule atau formula matematika.

Selanjutnya sejumlah rule yang telah dituliskan dalam bahasa yang

dirancang dapat dikoleksi sebagai sebuah library untuk digunakan oleh generator

soal yang untuk menghasilkan soal-soal berdasarkan koleksi rule yang tersedia.

2. Permasalahan

Berdasarkan uraian permasalahan di atas, maka dalam penelitian ini akan

dibahas: bagaimana mendefinisikan sebuah bahasa pemrograman yang dapat

memudahkan penulisan rule untuk pembentukan soal-soal matematika secara

otomatis menggunakan generator soal.

3. Cara Penelitian

Metode penelitian yang digunakan dalam penyusunan tesis ini terdiri atas :

1. Library Research, yakni metode penelitian yang dilakukan dengan cara

(4)

dan retrieving data dan informasi, dan masalah-masalah berkaitan dengan

teori dan kaidah pembentukan bahasa serta teknik kompilasi

2. Prototyping, yaitu melakukan pengembangan prototipe program aplikasi yakni

program compiler dan program generator soal, untuk keperluan uji coba

penerimaan sistem bahasa, pembentukan rule, dan uji coba pembentukan bank

soal dari rule yang ditulis dalam bahasa yang dirancang.

4. Pendekatan Bahasa Pemrograman 4.1. Pendekatan Struktur Bahasa

Sebuah formula atau rumus matematika, pada prinsipnya menunjukkan

hubungan antara satu nilai dengan satu atau beberapa nilai lainnya. Setiap nilai

biasanya dinyatakan dalam bentuk variabel dalam notasi rumusnya. Dengan

memberikan nilai berbeda kepada satu atau beberapa variabel yang dimiliki

sebuah rumus matematika, maka akan didapatkan nilai hasil yang berbeda-beda

pula. Berdasarkan konsep ini, maka sebuah generator soal matematika dapat

menghasilkan sejumlah soal matematika yang dibentuk dari satu rumus

matematika dengan cara memberikan nilai yang dibangkitkan secara acak kepada

variabel-variabelnya.

Bahasa yang dirancang pada prinsipnya adalah untuk merepresentasikan

sebuah formula matematika beserta semua variabel-variabel dari nilai yang

mempengaruhinya, yang diharapkan dapat memberikan kemudahan dalam

penulisan pada sisi penulis atau pembuat soal, dan dapat membentuk naskah soal

(5)

Sebuah soal dalam test matematika yang berbentuk multiple-choice

biasanya memiliki bentuk umum seperti pada contoh listing 1

J i k a d i k e t a h u i j a r i - j a r i l i n g k a r a n = 5 , h i t u n g l u a s l i n g k a r a n ( PI = 3 , 1 4 ) a . 2 5

b . 2 5 , 5 c . 7 8 d . 7 8 , 5

Listing 1. Contoh soal matematika bentuk multiple-chioce

Jari-jari dan PI adalah variabel dan konstanta yang menentukan nilai luas

lingkaran setelah dihitung menggunakan rumus luas lingkaran. Jadi terdapat dua

komponen utama dari sebuah rumus yaitu: (1) Variabel-variabel dan

konstanta-konstanta, dan (2) formulasi atau rumus itu sendiri.

Dapat diasumsikan bahwa sebuah bahasa untuk mendefinisikan rule

sebagai acuan untuk pembentukan soal matematika berbentuk multiple-choice

harus memiliki komponen-komponen:

1. deklarasi variabel dan konstanta,

2. definisi rule dalam bentuk formula,

3. rule untuk menghasilkan opsi pilihan

4.2. Pendekatan Statement dan Ekspresi

Statement adalah pembentuk program berupa perintah yang akan

dieksekusi untuk tujuan merubah nilai dari variabel-variabel. Sejumlah bahasa

mengimplemetasi command dalam bentuk:

- assignment (penugasan, pemberian nilai),

- procedure calls (pemanggilan prosedur),

- sequential command (perintah berurutan),

(6)

- conditional command (pemilihan perintah), dan

- iterative command (perulangan perintah).

Dalam rangka merubah nilai variabel, digunakan ekspresi (expression)

yeng bertujuan untuk mengevaluasi satu nilai. Ekspresi dapat berbentuk:

- literal, contoh: 10 (contoh dalam statement: a = 10 )

- construct, contoh: 2 * 10 (contoh dalam statement: a = 2 * 10 )

- function calls, contoh: sin(45)

- conditional expressions, contoh: a >= 0

- constant and variabel accesses, contoh a = b

Dalam konteks rule pembentuk soal matematika, dipertimbangkan bahwa:

1. Terdapat rule untuk rumus matematika tertentu yang membutuhkan proses

perulangan, seperti pada perhitungan nilai faktorial, atau sistem deret. Untuk

itu dibutuhkan tersedianya iteratif command atau statement perulangan

2. Terdapat rule untuk rumus matematika tertentu yang membutuhkan proses

seleksi atau pemilihan, untuk itu, dibutuhkan tersedianya sarana untuk

conditional command dan conditional expressions .

3. Terdapat rule untuk rumus matematika yang membutuhkan penggunaan

fungsi-fungsi tertentu, yang sulit atau tidak memungkinkan untuk dikonstruksi

sendiri dalam definisi rule, maka dibutuhkan tersedianya sejumlah fungsi siap

pakai (buit-in function) dan mekanisme function call.

4. Kerena berorientasi pada rumusan matematika, maka bahasa harus sedapat

mungkin mengimplementasi semua bentuk ekspresi dan penggunaan operator

(7)

5. Rancangan Prototipe Aplikasi

Rancangan sistem, secara garis besar digambarkan dalam use case

diagram pada gambar 1.

Gambar 1. Use case diagram

Prototipe aplikasi terdiri tiga bagian utama, yaitu:

1. Program kompilasi (compiler) yang memiliki fungsi utama melakukan

kompilasi terhadap kode sumber dari rule yang ditulis dapat diterima dan

digunakan sebagai rule untuk generator soal,

2. Program generator soal berfungsi untuk membentuk soal-soal dari rule yang

tersedia dalam jumlah yang diinginkan oleh pengguna

3. Program kompilasi dan generator soal melibatkan sebuah class HillParser

(8)

5.1. Prototipe Program Compiler

Pada program compiler, pengguna dapat melakukan dua aktifitas utama,

yaitu: (1) melakukan kompilasi source code dari rule, dan (2) melakukan test,

yakni melihat beberapa contoh soal yang dapat dibangkitkan dari rule tersebut.

Aktifitas dan proses kompilasi yang berlangsung di dalam program

compiler dapat dilihat pada sequence diagram pada gambar 2.

Gambar 2. Sequence diagram dari rancangan prototipe compiler

5.2. Prototipe Program Generator Soal

Program generator soal berfungsi untuk membangkitkan/membentuk

sejumlah soal dari sejumlah source code rule yang sudah bebas error berdasarkan

hasil dari program kompilasi. Proses pembangkitan soal oleh generator soal

(9)

Gambar 3. Sequence diagram dari rancangan prototipe generator soal

Untuk menjalankan proses generator soal, penguna harus menyiapkan

beberapa hal sebagai parameter bagi proses pembentukan soal, yaitu:

1. Memilih rule mana yang akan dilibatkan dalam proses pembentukan soal

2. Menentukan berapa jumlah soal yang akan dibentuk

3. Menentukan tipe output dari hasil pembentukan soal.

4. Menentukan nama file dimana soal-soal yang terbentuk akan disimpan

Untuk fleksibilitas, prototipe generator soal direncanakan dapat

menghasilkan output berupa naskah soal sesuai jumlah yang diinginkan dalam

beberapa format, yaitu:

1. format text file (*.txt)

2. format HTML (*.html)

3. format PDF (*.pdf), dan

(10)

5.3. Program Parser

Bahasa pemrograman untuk definisi rule, program Kompilasi, dan

program Generator Soal, semuanya melibatkan satu program utama yang sangat

penting, yaitu program parser sebagai inti dari sebuah compiler yang bertugas

untuk melakukan analisa leksikal, analisa sintaksis, dan analisa semantik terhadap

source code yang ditulis dalam suatu bahasa pemrograman.

Untuk memudakan pembuatan progam parser, digunakan tools Parser

Generator yaitu Java Compilers Compiler (JavaCC) beserta utilty JJTree yang

tergabung dalam paket JavaCC. Dalam membangun sebuah parser dengan

JavaCC dan JJTree dilakukan langkah-langkah sebagai berikut:

1. Menyusun grammar dari bahasa yang akan dirancang

2. Membuat sejumlah Java class untuk penanganan node dan semantik

3. Melakukan kompilasi dengan JJTree

4. Melakukan kompilasi dengan JavaCC

5. Melakukan kompilasi dengan Java Compiler

Setelah proses kompilasi, maka semua class buatan maupun class yang

auto-generate, akan membentuk program parser yang mekanisme dari proses

(11)

Gambar 4. Activity diagram program parser

Interpretasi semantik yang paling utama dalam parser yang dibangun

adalah proses pembentukan soal yang meliputi:

1. Pembentukan nilai acak terhadap variabel-variabel,

2. Perhitungan hasil dari operasi berdasarkan rumus yang didefinisikan,

3. Pembentukan opsi untuk pilihan jawaban,

4. Pembentukan naskah soal.

6. Implementasi

6.1. Rancangan Bahasa Pemrograman

Kode sumber (source code) dari rule soal matematika ditulis sebagai file

text dan diberi ekstensi *.r sebagai pengenal. Struktur kode sumber adalah dapat

(12)

/*deklarasi rule */

Listing 2. Struktur kode sumber bahasa definisi rule soal matematika

Bahasa yang dirancang relatif memiliki struktur yang sederhana tetapi

cukup lengkap, dilihat dari koleksi reserved word, literal tipe data, operator, dan

built-in function, dengan perincian sebagai berikut:

1. tiga belas buah reserved word, yaitu:

a. definisi rule: rule

b. deklarasi variabel dan konstanta: hidden, const, option

c. proses seleksi: if, elseif, else

d. kendali perulangan: for, to, step, repeat, until, while

2. dua keyword untuk literal tipe data, yaitu:

a. untuk tipe data integer: int

b. untuk tipe data real: real

3. lima belas buah operator, yaitu:

a. operator-operator aritmetika: + , - , * , / , ^ , mod,

(13)

4. built-in function, yaitu:

a. fungsi-fungsi trigonometri: sin( ), cos( ), tg( ), asin( ), acos( ), atg( )

b. fungsi-fungsi untuk pembulatan: round( ), integer( )

c. fungsi-fungsi array: asort( ), asum( )

6.2. Prototipe Program Kompilasi

Tampilan user interface dari prototipe program kompilasi dapat dilihat

pada gambar 5.

Gambar 5. User interface program kompilasi

Pada prototipe ini melayani proses kompilasi terhadap file kode sumber

yang sudah dipilih. Jika proses kompilasi sukses, maka pengguna dapat melihat

contoh soal yang dapat dibentuk dari rule yang didefinisikan dalam file kode

sumber bersangkutan melalui fasilitas test.

Disediakan fasilitas registrasi untuk melakukan pencatatan terhadap file

kode sumber yang telah berhasil dikompilasi dan bebas error, dan dapat

(14)

1. Mendaftarkan nama file kode sumber yang baru

2. Meng-copy file kode sumber ke direkori koleksi kode sumber rule

Tujuan proses registrasi kode sumber adalah: (1) memastikan file yang

akan digunakan untuk pembentukan bank soal adalah file yang telah bebas error

dan (2) memastikan perubahan terhadap file kode sumber yang telah diregistrasi

harus melalui proses kompilasi ulang.

6.3. Prototipe Program Generator Soal

User interface dari prototipe program generator soal dapat dilihat pada

gambar 6.

Gambar 6. User interface program generaor soal

User interface memungkinkan pengguna untuk melakukan aktifitas setting

(15)

1. memilih rule yang akan dilibatkan pada prose pembentukan

2. menentukan jumlah soal yang ingin dihasilkan

3. menentukan format output yang akan dihasilkan.

4. menentukan di mana kunci jawaban dari tiap soal akan diletakkan

5. menentukan nama file dimana soal hasil akan disimpan

7. Penutup

Dari penelitian dan pembahasan yang telah dilakukan di atas, dapat ditarik

beberapa kesimpulan sebagai berikut:

1. Bahasa pemrograman untuk mendefinisikan rule bagi generator soal

matematika berhasil dibentuk, dan rule yang ditulis dalam bahasa

pemrograman ini dapat digunakan untuk menghasilkan bank soal matematika

dengan mudah dan cepat.

2. Struktur bahasa yang dirancang, sangat sederhana karena hanya memiliki 13

reserved word diluar built-in function dan operator, serta dua literal tipe data.

Jumlah baris kode untuk mendefinisikan satu rule hanya berkisar antar 5

sampai dengan 15 baris, di luar baris-baris komentar, bergantung pada tingkat

kerumitan rumus/rule yang didefinisikan.

3. Berdasarkan hasil uji coba, dari koleksi rule yang telah tersedia proses

pembentukan hingga 1500 buah soal dapat dilakukan dalam waktu kurang dari

10 detik, sehingga dapat dikatakan bahwa bahasa pemrograman yang

dirancang, bersama-sama dengan generator soalnya, dapat mengefisienkan

(16)

8. Daftar Pustaka

_____________, JJTree Reference Documentation

(diakses 14/12/2008)

Aho, A.V., Sethi, R., dan Ullman, J.D., 2002, Compilers, Principles, Technique,

and Tools, Prentice Hall, New Jersey, USA.

Appel, A.W., dan Palsberg, J., 2002, Modern Compiler Implementation in Java

(2nd ed.), Cambridge University Press.

Martin, J.C., 1997, Introduction to Languages and The Theory of Computation

(2nd ed.), McGraw-Hill Companies, Inc.

Scott, M.L., 2002, Programming Languages Pragmatics, Morgan Kaufman

Publisher

Terry, P.D., 2000, Compilers and Compiler Generators – an introduction with

C++, EB

Thayf, M.S., Bahasa Pemrograman Untuk Mendefinisikan Rule Bagi Generator

Soal Matematika, Tesis, Magister Ilmu Komputer Universitas Gadjah

Mada, Yogyakarta.

Watt, D. A., dan Findlay, W., 2004, Programming Language Design Concept,

Gambar

Gambar 1. Use case diagram
Gambar 2. Sequence diagram dari rancangan prototipe compiler
Gambar 3. Sequence diagram dari rancangan prototipe generator soal
Gambar 4. Activity diagram program parser
+3

Referensi

Dokumen terkait

Sementara kebanyakan guru di SD selama ini dalam melaksanakan proses pembelajaran masih menggunakan metode pembelajaran yang konvensional, artinya guru masih mengajarkan

Saya merasa pilihan saya untuk bekerja pada perusahaan ini sangat tepat dibandingkan dengan perusahaan lain yang sudah saya pertimbangkan sebelumnya2. Kepedulian saya terhadap

Untuk mendirikan sebuah perusahaan, diperlukan sejumlah modal. Modal tidak hanya dalam bentuk uang tetapi juga termasuk lahan, bangunan, dan alat-alat produksi yang

Penelitian ini membahas mengenai pemaknaan kartu BPJS kesehatan di kalangan masyarakat pendhalungan pada peserta Penerima Bantuan Iuran (PBI) di kelurahan Mangli kecamatan

INTISARI: Berat Badan Lahir Rendah (BBLR) merupakan salah satu faktor penyebab stunting .Prevalensi kejadian stunting di Wilayah Kerja Puskesmas Kalasan mencapai

Sesuai dengan tujuan dari penelitian ini, yaitu memperoleh pemaparan yang objektif mengenai efektivitas iklan Indihome pada media sosial Instagram dengan menggunakan metode

Sebaliknya, penelitian oleh Puspitawati (2008) menunjukkan bahwa komunikasi yang baik antara orang tua dengan remaja dapat menjadi penya- ring terhadap pengaruh buruk

Tabel 2 menunjukan hasil pengamatan bentuk sinyal pada bagian input dan output blok sink separator. Adapun beberapa point analisa adalah sebagai berikut. Pada pengamatan bagian