Skripsi : Modul Evaluasi Pembelajaran Cerdas
(note: posting pindahan dari blog sebelumnya)
Update: Dokumen skripsi lengkap saya bisa didownload dari repository IPB
http://repository.ipb.ac.id/handle/123456789/33139
Hari rabu kmaren gw ngadep pak marimin (Prof. Dr. Ir Marimin, M.Sc) memberikan progress report skripsi gw. karena gw narsis, jadi gw juga posting progress report skripsi gw di blog ini, hehehe, yha ini kan fungsi utama blog : bernarsis-narsis ria, bwahahha.
OK, pertama gw mo cerita dikit-dikit background dari skripsi ini, byar nanti nggak pada blank tentang apa yang gw ceritain selanjutnya.
Judulnya : Modul Evaluasi Sistem Pembelajaran Cerdas. Secara selintas ada dua buah sistem yang tersirat dalam judul skripsi gw, pertama dalah modul evaluasi dan kedua adalah sistem pembelajaran cerdas. Sistem yang gw buat terbatas pada satu modul saja, yaitu sistem evaluasi. Sedangkan sistem pembelajaran cerdas secara umum dikerjakan oleh dua orang peneliti sebelum gw: Pak Panji dan Anita.
Sistem Pembelajaran Cerdas
Komputer telah digunakan dalam dunia pendidikan lebih dari 20 tahun. Computer-based learning (CBT) dan Computer Aided Instruction (CAD) adalah sistem yang pertama kali diperkenalkan sebagai usaha untuk mengajar siswa menggunakan komputer. Dalam sistem seperti ini, instruksi terhadap siswa tidak diberikan secara unik kepada perseorangan, tetapi instruksi diberikan sama untuk setiap siswa. Keputusan bagaimana mengajarkan materi kepada siswa tidak memperhatikan kemampuan siswa, tetapi hanya sebatas kondisi-kondisi sederhana yang dikandung oleh sistem. Sehingga semua siswa akan diajar dengan cara yang sama, tidak peduli apakah dia siswa yang cepat belajar maupun siswa yang agak lambat menerima materi.
Sistem pembelajaran cerdas menyempurnakan kelemahan tersebut dengan memperhatikan kemampuan siswa, dan mengajarkan materi sesuai dengan kemampuannya. Dengan cara seperti ini proses pembelajaran menjadi semakin efektif. Kemampuan memahami siswa adalah bagian dari “kecerdasan” sistem pembelajaran cerdas, selain itu sistem pembelajaran cerdas juga dapat mengetahui kelemahan-kelemahan siswa, sehingga dapat diambil keputusan pedagogig untuk mengatasinya.
Dilihat dari berbagai sisi, Sistem Pembelajaran cerdas, sangat mirip dengan sistem pembelajaran yang diberikan oleh pengajar. Didasarkan pada ilmu kognitif dan kecerdasan buatan.

Gambar 1. Arsitektur Sistem Pembelajaran Cerdas (Wasmana, 2005)
Sistem Pembelajaran Cerdas (Intelligence Tutoring System, ITS) adalah suatu sistem yang memanfaatkan teknik tingkat lanjut dalam mendeskripsikan dan meningkatkan proses pengajaran. Walaupun demikian pemahaman sistem pembelajaran cerdas telah berkembang menjadi suatu sistem yang mampu “memahami” dan berlaku selayaknya pengajar. Sistem pembelajaran cerdas memberikan fleksibilitas dalam mempresentasikan materi dan kemampuan memahami karakteristik siswa yang lebih besar.
Keunggulan sistem pembelajaran cerdas dibandingkan guru adalah kemampuannya dalam memahami karakteristik unik setiap siswa dan menyampaikan materi pembelajaran sesuai dengan karakteristik siswa tersebut (Franek, 2003). Kecerdasan sistem pembelajaran cerdas diwujudkan dalam kemampuan pedagogignya untuk menyampaikan materi sesuai karakteristik siswa yang diajarnya, memberikan tugas, dan menilai kemampuan siswa.
Bagian gw cuma sebatas modul evaluator, sistem pembelajaran cerdas yang selama ini telah dibuat hanya sebatas evaluasi hasil pembelajaran dengan menggunakan pertanyaan pilihan berganda. Evaluasi tersebut kurang memberikan gambaran sepenuhnya tentang kemampuan siswa, terutama kemampuan siswa dalam membuat program. Jadi tugas gw adalah melakukan evaluasi kemampuan siswa membuat program dengan meminta siswa untuk membuat siswa dan mengkoreksi kerjaanya, beres atau nggak.
Modul Evaluator
Modul evaluator berfungsi dalam proses evaluasi jawaban siswa dari soal yang diberikan oleh sistem. Proses evaluasi dilakukan berdasarkan jenis soal yang diberikan. Untuk jenis soal pilihan terbatas tidak terdapat perlakuan khusus dari sistem dalam proses evaluasi. Sistem mencocokkan jawaban siswa dengsn jawaban seharusnya dan memberikan nilai jika jawaban benar. Untuk kejadian jawaban salah, sistem evaluator akan memberikan penjelasan letak kesalahan yang dilakukan berdasarkan pilihan yang dilakukan siswa.

Gambar 2. Arsitektur Sistem Evaluator (Fatkhan , 2007)
Untuk mengevaluasi pekerjaan siswa, gw dapet ide menggunakan model soal seperti di Olimpiade komputer. Dimana panitia akan menyediakan grader untuk mengoreksi pekerjaan siswanya. Cara kerja grader ini sangat sederhana, setiap program yang dibuat ditetapkan format input dan outputnya, bisa menggunakan standard input (stdin) atau standard out(stdout), atau menggunakan input-output dari file. Kemudian program siswa akan dicompile, kemudian diberi input yang telah ditentukan, lalu output yang dihasilkan oleh siswa dibandingkan dengan output yang telah ditentukan, contohnya seperti ini nih :
buat sebuah aplikasi yang menghitung bilangan faktorial input output 0 1 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880
Kalau programnya dapat melalui tes ini yha nilainya 100 donk, kalau salah yha salah nilainya tergantung berapa tes yang benar dan berapa yang salah. Nah pertanyaanya sekarang, kalau kode siswanya salah sintaks, gimana? apa diserahkan saja sama siswanya untuk memperbaiki sendiri? kalo gitu keadaanya, dimana sisi inteligent dari sistem ini?. Nah disinilah sisi “intelligent” dari modul evaluator yang gw bikin. Kalau ada yang salah dengan kode programnya, Intent recognizer akan memeriksa kodenya, huruf per huruf. Pemeriksaan ini tentu saja memerlukan lexer dan parser.
Gw ga bikin lexer dan parser untuk bahasa C, kalau bikin sendiri gw bisa gila kali yha. Gw menggunakan tools untuk mengenerate lexer dan parser tersebut, namanya ANTLR (ANother TooL for Language Recognizer). Dibuat nyaris sendirian oleh profesor gila Terrence Parr selama kira-kira 15 tahun. Trus gw juga ga bikin grammar untuk Cnya, gw tinggal pake grammar C untuk ANTLR V3 yang dibuat, juga, oleh Terrence.
Pada tahap awal sekali perkembangan skripsi ini, gw bener-bener blank gimana caranya memeriksa kode program siswa. Walaupun begitu gw bener-bener nekat ambil topik ini, yha dasar keras kepala kali ya, atau saking bodohnya?
)” title=”
)” /> whatever lah. Dulu gw berfikir untuk membuat recognizer kode program C menggunakan rule base software. Dengan rule-rule if-then gw bermaksud mengenali program bahasa C, tapi ini bener-bener langkah nekat, waktu itu terlintas di pikiran gw bahwa gw harus bikin ribuan rule untuk mengenali program bahasa C, gila ye?.
Gw blank banged harus digimanain ini topik skripsi, akhirnya gw memutuskan untuk kerja dulu dalam rangka membuka wawasan dan mencari ilmu, selain karena gw bener-bener dalam krisis finansial parah
. Setengah tahun kerja di suatu perusahaan konsultan, gw merasa perkembangan gw ga terlalu signifikan. Suatu saat, gw memutuskan untuk mengikuti kursus java, disini gw ketemu endy. Kemudian gw pindah kerja ke LSM kehutanan untuk bikin software simulasi hutan, karena software simulasi itu ditulis pake java, dan domisili kantornya di bogor. Gw pikir sekalian kerja sekalian nylesein skripsi. Tapi kenyataan berkata lain, karena gw ga kunjung menemukan gimana cara untuk menyelesaikan skripsi gw ini, bahkan pembimbing gw menawarkan untuk cukup membuat algoritma sederhana untuk matching huruf per huruf antara kode program pekerjaan siswa dan kode program kunci jawaban yang disediakan sebelumnya. Tentu saja dengan algoritma ini, tidak bisa memeriksa variasi kode program yang diberikan oleh siswa, gw tidak setuju dengan ide ini.
Sampai suatu saat iseng-iseng gw menemukan artikelnya endy, tentang “Katak dalam tempurung”, disana dya menyebutkan tentang “di luar negeri sana, dosen tidak hanya sekedar mengoceh di dalam kelas menjelaskan Teori Automata. Dia membuat implementasi parser, menyumbangkan parser tersebut menjadi open source, dan tidak lupa memasang foto konyol di website parser tersebut”. Iseng-iseng gw buka linknya, dan tararara gw menemukan ANTLR
. Setelah itu sedikit demi sedikit gw melihat-lihat apa yang bisa dilakukan ANTLR, dan memang ternyata cocok dengan apa yang gw mau.
Pada awalnya bekerja dengan ANTLR sungguh tidak menyenangkan, karena Terrence belum menyediakan IDE untuk develop aplikasi dengan ANTLR. Pertama gw harus bikin bahasa yang namanya Terrence Markup language, yang wujudnya mirip-mirip dengan Regular Expression, seperti ini nih :
class ExprParser extends Parser;
expr: mexpr ((PLUS|MINUS) mexpr)*
;
mexpr
: atom (STAR atom)*
;
atom: INT
| LPAREN expr RPAREN
;
class ExprLexer extends Lexer;
options {
k=2; // needed for newline junk
charVocabulary='\u0000'..'\u007F'; // allow ascii
}
LPAREN: '(' ;
RPAREN: ')' ;
PLUS : '+' ;
MINUS : '-' ;
STAR : '*' ;
INT : ('0'..'9')+ ;
WS : ( ' '
| '\r' '\n'
| '\n'
| '\t'
)
{$setType(Token.SKIP);}
;
Spesifikasi lexer dan parser diatas, secara umum disebut sebagai grammar dan disimpan dalam file dengan ekstensi .g (dot g). Kemudian gw harus mengenerate file ExprParser.java dan ExprLexer.java dari file grammar diatas menggunakan command line, seperti ini :
$ java antlr.Tool expr.g ANTLR Parser Generator Version 2.7.2 1989-2003 jGuru.com $
Setelah proses generate parser dan lexer selesai, tentu saja langkah berikutnya harus mengcompile file yang sudah selesai digenerate tadi. Setelah proses compile sukses, baru program bisa digunakan dan dites menggunakan bahasa yang dispesifikasikan oleh file grammar diatas. Empat langkah tadi harus dilaksanakan secara manual tanpa ada IDE yang membantu sama sekali. Kalau terdapat kesalahan sintaks dalam file grammarnya atau proses generate file atau compile file gagal yha harus dimulai dari awal. Itu kalau kesalahanya kesalahan sintaks, nah kalau kesalahanya kesalahan logika? sedangkan tidak ada tools untuk debuging?
(
Tiga minggu yang lalu gw menemukan antlrworks di website resmi ANTLR. Jean Bovet dan, lagi-lagi, Terrence Parr ternyata udah membuat IDE untuk develop, visualize dan debug program ANTLR, Alhamdulillah, lu emang gila ya Terrence!!. Tools ini benar-benar membantu kerjaan gw, ga perlu lagi langkah-langkah generate lexer dan parser, compile lexer dan parser, mencoba program dengan manual!. Cukup tekan satu tombol debug, maka semua kerjaan itu dilakukan oleh antlrworks. Visualisasi tree parser juga ditampilkan oleh si Antlrworks ini, sehingga kita bisa dengan gampang melihat alur eksekusi program, dari satu rule ke rule yang lain.

Gambar 3. Antlrworks in action
Pada proses debug di AntlrWorks, kita bisa mamasukkan contoh kode program yang harus dikenali oleh si grammar. AntlrWorks akan memeriksa satu persatu huruf dalam kode program tersebut dengan menggunakan lexer dan parser yang digenerate dari file grammar. Setiap kali antlrworks melewati suatu rule dalam grammar, dya akan membuat satu node dalam parse tree visualization, pada akhirnya kita dapat memperoleh gambaran visual bagaimana alur rule-rule tersebut dieksekusi untuk mengenali kode program. Kalau ada kesalahan dalam kode program, ANLTR akan “melemparkan” RecognitionExeption, kita bisa memutuskan untuk meneruskan eksekusi atau berhenti sampai disini. Begitu seterusnya hingga semua huruf dalam kode program diperiksa.
Langkah berikutnya dari modul evaluator ini adalah menjelaskan kesalahan yang terjadi dalam kode program siswa. Sistem Penjelas bertugas untuk menjelaskan dengan sejelas-jelasnya dimana kesalahan tersebut terjadi. Penjelasan yang muncul berdasarkan hasil pemeriksaan kode program oleh lexer dan parser. Sistem penjelas ini, terkadang, tidak dipunyai oleh parser C pada umumnya. Pesan kesalaha parser C pada umumnya terlalu sederhana atau terlalu bertele-tele, dan tentu saja ditulis dalam bahasa inggris. Dari pengalaman gw, programmer yang masih newbies pasti saaaangat kesulitan membaca pesan kesalahan yang diberikan parser. Gw bermaksud untuk membuat sistem penjelas yang mengatasi kesulitan programmer newbies mencari kesalahan programnya. Salah satu strateginya adalah : satu pesan kesalahan per sekali melakukan parse kode program. Mungkin untuk sebagian programmer yang lumayan ahli hal ini menghambat kerjaan, tetapi ingat, ini tools untuk belajar, bukan tools untuk development
Penjelasan dari sistem penjelas tentu saja menggunakan bahasa indonesia, bukan bahasa inggris. Misalnya seperti ini :
terdapat token intt dalam pekerjaan anda, apakah yang anda maksud adalah int?
Tapi sampai saat ini, gw baru bisa translate pesan kesalahan paling sederhana dari ANTLR, belum ada tambahan pesan kesalahan yang signifikan. misalnya seperti ini :
baris 5 kolom 16 tidak ada alternatif yang cocok untuk input ‘intt’
Jadi bagian pintar untuk mencari keyword paling dekat dengan intt yaitu int belum gw implementasikan, but gw harap bisa gw implementasikan sebelum deadline skripsi gw di akhir Mei ini terlewati. Kalau blom bisa gw implementasikan, yha gw simpen untuk S2 nanti
hehehe.
Selain sistem penjelas, bagian tersulit dari skripsi gw adalah membuat sistem perbaikan otomatis. Sistem perbaikan otomatis membantu siswa untuk memperbaiki kesalahanya secara otomatis. Setelah kode program diperiksa, ditemukan kesalaha di dalamnya, dijelaskan kesalahan yang terjadi, maka langkah terakhir adalah memperbaiki kesalahan, siswa bisa memperbaiki kesalahan secara manual atau dengan meminta bantuan pada sistem perbaikan otomatis. Nanti kalau sistem ini benar-benar sudah jadi, akan ada alur interaksi antara siswa dan sistem, alur interaksi ini biasa disebut sebagai “tutorial”. Berikut ini contoh tutorial yang terjadi antara sistem dan siswa :
Misalnya siswa diberi soal : “Tulis sebuah program yang menghitung nilai eksponensial 2N, dimana N adalah input program. Sebagai contoh, jika N=3 maka hasilnya adalah 23=2x2x2=8.”.
Kemudian siswa menjawab dengan kode seperti di bawah ini, yang ternyata terdapat banyak kesalahan didalamnya. Sistem perbaikan otomatis akan membantu siswa memperbaiki kesalahan secara interaktif lewat proses tutorial seperti ini :
inr I,val=1
For( I = 0 ; I <= 4 ; I++{
Val *= 2;
}
ME : “apakah maksud anda adalah keyword “int”?”
Siswa : Ya
Modul Evaluator akan melakukan perubahan terhadap string “inr” menjadi “int” dan parser akan memvalidasi perubahan ini karena user telah mengklarifikasi perubahan.
Hasil perbaikan :
int I,val=1
For ( I = 0 ; I <= 4 ; I++{
Val *= 2;
}
ME : “apakah maksud anda menambahkan “;” setelah “val=1″ “?
Siswa : Ya
Hasil perbaikan :
int I,val=1;
For ( I = 0 ; I <= 4 ; I++{
Val *= 2;
}
ME : “apakah maksud anda adalah keyword “for” ?”
Siswa : Ya
Hasil perbaikan :
int I,val=1;
for ( I = 0 ; I <= 4 ; I++{
Val *= 2;
}
ME : “apakah maksud anda menambahkan “)” diantara “I++” dan “{” “?
Siswa : Ya
Hasil perbaikan :
int I,val=1;
for ( I = 0 ; I <= 4 ; I++){
Val *= 2;
}
ME : “apakah maksud anda adalah variabel “val” “?
Siswa : Ya
Hasil perbaikan :
int I,val=1;
for ( I = 0 ; I <= 4 ; I++){
val *= 2;
}
Proses tutorial ini bersifat dinamik, siswa tidak harus mengikuti proses tutorial hingga semua kesalahan berhasil diperbaiki. Siswa bisa dengan mudah kembali ke teks editor untuk memperbaiki kesalahannya secara langsung tanpa menunggu ME melakukannya, kemudian memproses jawaban yang baru tersebut dari awal.
Ide perbaikan kesalahan sebenernya sudah ada, gw nyontek aja sih, cuman karena gw cuma menemukan papernya saja tanpa ada kode implementasinya, gw akhirnya bikin implementasi sendiri dari awal. Bagian tersulit dari program ini adalah menemukan cara membuat parser dan lexer, yha untunglah gw terbantu dengan adanya ANTLR. Kalau tertarik dengan paper yang idenya gw pake, bisa didapetin disini, sana dan sono.

Gambar 4. Algoritma Perbaikan Kesalahan (Sykes & Franek, 2003)
Untuk membuat sistem seperti ini diperlukan antar muka sistem yang bagus sekali, tampilanya sebaiknya mirip dengan IDE, seperti Eclipse, netbeans atau visual studio. Gw dulu pada awalnya oprek-oprek C development toolkit punyanya si Eclipse, tapi mentok di sisi dokumentasi yang sangat sedikit. Setahun kemudian gw mulai oprek-oprek netbeans, trus ketemu netbeans platform. Gw langsung bergumam “aha!” ini yang gw cari, setelah baca-membaca akhirnya dua minggu terakhir ini gw menghasilkan program ini :

Gambar 5. Modul Evaluator Sistem Pembelajaran Cerdas (Fatkhan, 2007)
Mengingat gw mulai tanpa tahu apa-apa tentang netbeans platform, gw bisa bilang proses pengerjaan program diatas nggak terlalu bikin punggung gw sakit atau jari gw kriting. Kalau gw ga pake netbeans platform trus pengen dapet program dengan kualitas seperti diatas, kira-kira gw akan memerlukan waktu berbulan-bulan dan kode beribu-ribu baris. Dengan netbeans platform cukup 2 minggu dan ga lebih dari 200 baris kode, fantastis!!.
Awalnya gw pikir akan sangat susah membuat aplikasi dengan menggunakan netbeans platform, tetapi ternyata ga sesusah itu. Dokumentasi yang sangat melimpah, komunitas yang sangat aktif dan contoh program yang bertebaran di mana-mana, sangat membantu kerjaan gw. Tutorial yang sangat banyak dapat diperoleh di platform.netbeans.org, pertanyaan akan selalu dijawab di milisnya developer netbeans platform dev@openide.netbeans.org. Javadoc dan deskripsi API bisa dilihat di netbeans.org, kalau mau memperoleh Javadoc dan api secara lengkap bisa didownload dari netbeans update center dengan nama “API Documentation” menggunakan update center tools di netbeans.
Kalau ada yang berminat dengan dokumentasi skripsi gw secara lengkap, silahkan download di sini. Dan kalau ada yang berminat untuk melanjutkan, gw dengan senang hati akan membagi ilmu gw. Kalaupun nanti ga ada yang minat nerusin sepertinya gw punya niat untuk melanjutkan program ini sebagai tesis gw di s2 atau desertasi nanti kalau sempet ambil doktoral
. Atau at least akan terus gw kembangin jadi project di sourceforge.net atau pun di dev.java.net, dengan menambah modul pembelajaran java misalnya. Yha semoga ada yang mau menggunakanya sebagai tools untuk mengajarkan bahasa pemrograman di kampusnya
.
JOSSSSSSSSSSSSS..!! **d
hello mas..
numpang nya nie…
setelah membaca skripsi dari mas ifnu, saya tertarik dengan topik mas yang bisa di bilang kreatif dan mungkin tak terpikirkan bagi kalangan mahasiswa untuk membuat aplikasi semacam ini…
sebagai perkenalan, saya mahasiswa akhir yang skarang ini lgi mau menulis skripsi tpi bingung dengan topik ap…stelah melihat karya mas ifnu sya jadi brpikir untuk meneruskn tulisan mas infu dengan membuat modul pembelajaran java. namu kesulitan saya adalah mengenai Lexer dan parser….apakah saya blh mnta sarannya mas infu??thx sebelumnya mas…
ok silahkan diteruskan, coba kalau bahasanya diganti, dari bahasa C menjadi Java gitu misalnya
nah….tpi msalahx saya bingung menggunakan metode lexer dan parser pada pemograman java
…punya tutorialx gk mas??atw kira” kasus yg pas seperti apa ya? misalx metode pembelajaran Java dengan kasus yang seperti ap, itu jg msh bingung…..hehehehhehe
ya, lexer dan parser itu bukan kerjaan gampang sih, bisa dibilang malah susah banged. Perlu belajar konsepnya dulu baru mulai coding. Sukur-sukur kalau ada mata kuliah lexer dan parser.
[...] Me: oke… gitu dunk. nah dapet rujukan yang menurut gw sangat berarti disini dan juga disono. [...]
Salam mas… sayang sangat seneng sekali waktu nemukan artikel blog yang mas Irfu tulis ni…
saya lagi buat penelitian Java COding Game yang salah satu perangkat game ada yang sama seperti penelitian mas ini.
Yakni melakukan kompilasi pada program dengan melakukan syntax analizer lalu membuat penjelas.
Program yang saya buat dalam program java, yang jadi tantangan saat ini bagaimana melakukan parser dan memsukkan dalam tree sehingga bisa dicheck.
hmm sepertinya menarik? game apa ya? langkah pertama seperitnya harus didefinisikan grammarnya dulu baru dibuat lexer, parser dan akhirnya intepreter.
penelitian ini hampir sama dg punya mas Infu, namun ada pengembangan berupa game edukasinya. Game dg ada skenario-nya sehingga dalam belajar coding lebih nyaman.
Pnelitian hanya dibatasi pada grammar dasar-dasar Pemrograman Java.
Nah, pendefinisian Grammar lalu dibuat lexer dan parser tree-nya itu bagaimana mas??
Sy sebelumnya mau menggunakan Jtree, namun memecahnya kesulitan. Akhirnya ketemu bahan dari mas info ternyata harus menggunakan lexer & parser.
game edukasi mungkin bisa lihat http://www.greenfoot.org/
untuk game engine atau framework sy pke gtge mas.
adalah source buat lexer dan parsernya?
mksud saya ada source buat lexer dan parser???
lah grammar kamu udah jadi belom? atau pake grammar java? lexer dan parser itu dibuat berdasarkan grammer. Kalau di antlr ya buat file .g yang isinya grammar dari bahasa yang berusaha diparsing. Kalau belum ada grammer mana bisa dibuat lexer dan parser.
Grammar sy sdh jadi mas. Grammar bagaimana membuat “hello world” sampai array.
langkah2-nya gmna mas…
berarti sekarang tinggal membuat implementasi grammar ke terrence markup language. Bisa baca bukunya terrence : The definitive ANTLR reference
http://pragprog.com/titles/tpantlr/the-definitive-antlr-reference
Saya dulu juga baca buku itu sampai habis
Selamat pagi-siang-sore-malam mas ifnu…
tulisan mas ifnu sangat mengispirasi…
setelah membaca tugas akhirnya mas ifnu ini jadi kepikir untuk mengembangkannya namun dalam konteks bahsa JAVA..
mau nanya2 sdkit mas….agak bnyak sih..hehehhehe
Grammarnya dibuat sendiri ya mas?
nah…aku lgi belajar2 ANTLR tpi lgi bingung mw buat studi kasus penilitiannya ap..yang aku lgi mikiran sakarang adalah Mengembangkan Sistem Pembelajaran Bahasa Pemograman Java..fokusnya pada pemula..
ilustrasinya seperti ini :
aplikasi yang mw dibuat nanti berupa tool pembelajaran bahasa pemograman java yang nantinya aplikasi menyediakan inputan yang nanti diisi oleh mahasasiswa berupa coding java , kemudian aplikasi akan mengoreksi coding tersebut jika salah, cara coreksinya seperti punya mas ifnu..dan apabila benar, hasil keluaran yang ditampilkan itu berupa penjelasan dari setiap coding..misalkan :
class HelloJava {
public static void main(String [] args){
for(int a=0; a<10; a++){
if(a%2==0){
System.out.println(a);
}
}
}
}
penjelasan yang diberikan aplikasi jika coding benar adalah :
Perulangan : For
Kondisi : If…else
Variable : a
Type Data : Integer
kurang lebih cara cerja sistemnya seperti itu….
menurut mas Infu bagaimana?butuh masukan demi Tugas Akhir mas…hehheheh
Terimah Kasih Sebelumnya mas….
mas ifnu…
pengen nanya nie…
kl mengecek kebenaran syntax kan pke ANTLR..
trus kl menjalankan sintax tersebut dan menampilkan hasil caranya gmn?
trus kl mw mencocokan hasil dengan hasil yang ditentukan caranya gmn?
saya dulu gak sampai sejauh itu, cuma meriksa grammer bahasa C. Kemudian untuk memeriksa hasil eksekusi programnya saya pake turbo C compiler.
Kalau mau bikin bahasa sendiri bisa coba tutorial ini :
http://tech.puredanger.com/2007/01/13/implementing-a-scripting-language-with-antlr-part-1-lexer/
http://tech.puredanger.com/2007/01/15/antlr-2/
http://tech.puredanger.com/2007/01/17/antlr-3/
jangan lupa beli bukunya
:
http://www.amazon.com/Definitive-Antlr-Reference-Domain-Specific-Programmers/dp/0978739256
selamat belajar.
saya sudah punya bukunya… hehheheh
untung aja ada http://www.library.nu jd dapat e-book gratis..
jdi aplikasi akhir diatas itu hanya sbatas memeriksa coding yang diinputkan?trus codingnya disimpan kedalam file lalu di compile dengan aplikasi yang berbeda.. nah setelah saya baca2 jurnalnya mas infu, disitu ada penentuan hasil akhir dari user dengan hasil yng ditentukan…nah itu yng saya msh bngung tentuin benar atau salah dari hasilnya…
sebelumnya makasih mas ifnu..
Jenis software yang mengecek apakah output program benar atau salah dinamakan grader. Saya dulu menentukan benar atau salah berdasarkan output, java bisa menjalankan aplikasi lain dengan menggunakan runtime.exec nah kita bisa memberikan input dan menangkap output dari runtime.exec tersebut, cek di sini caranya :
http://stackoverflow.com/questions/3343066/reading-streams-from-java-runtime-exec
kyakx yang menjadi masalah nantinya adalah kesalahan berupa Logic error.. seperti pda kesimpulannya mas ifnu..
mantap mas…
saya coba explorer lebih jauh..
makasih mas..
Mas kalau saya buat aplikasi/program, yang awalnya user ngetik program seperti ini:
public class hello_world
{
public static void main(String[] args)
{
System.out.println(“Hello World”);
}
}
Setelah itu nanti aplikasi-nya akan nge-cek apakah yang ditulis grammar java-nya benar atau tidak.
Nah, apakah hanya menggunakan antlr atau antlrworks saja bisa mas?
ditunggu jawbannya…