• Tidak ada hasil yang ditemukan

Kategorisasi Bahasa Berbasis Problem Solving dengan Menerapkan Algoritma Running Karp Rabin Greedy String Tiling Sebagai Basis Pengukuran Similaritas.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Kategorisasi Bahasa Berbasis Problem Solving dengan Menerapkan Algoritma Running Karp Rabin Greedy String Tiling Sebagai Basis Pengukuran Similaritas."

Copied!
26
0
0

Teks penuh

(1)

ABSTRAK

Praktikum pemograman dasar bahasa C merupakan praktikum yang wajib diikuti oleh seluruh mahasiswa. Dalam pengerjaan praktikum, mahasiswa mencari sebuah penyelesaian masalah yang diberikan oleh dosen. Dalam pencarian sebuah penyelesaian masalah, terdapat banyak solusi yang dapat digunakan untuk menyelesaikan masalah. Pengelompokan perlu dilakukan untuk mencari berapa kemungkinan solusi yang dapat digunakan dalam satu penyelesaian masalah. Menggunakan algoritma running karp-rabin greedy string tiling akan dicari tabel kemiripan dari kumpulan hasil praktikum mahasiswa. Dari tabel kemiripan yang terbentuk, maka akan dapat terlihat kelompok-kelompok mahasiswa dalam menyelesaikan sebuah permasalahan. Banyaknya kelompok yang akan terbentuk bergantung kepada banyaknya sampel file yang digunakan dan kompleksitas soal yang diberikan. Semakin banyak sampel file dan semakin komplek soal yang diberikan, menghasilkan kelompok yang lebih beragam. Jumlah data yang diuji sebanyak delapan kasus, tigapuluh sampel file, dan satu sampel kelas.

(2)

ABSTRACT

Practical C programming language is a practical basis which shall be

followed by all students. In fullfillment of the practicum, student searching a

solution to the problem solving which given by lecturer. In the search for a

settlement of the problem, there are many solutions that can be used to solve the

problem. Clustering should be done to look at how the potential solutions that can

be used in a probrem solving. Using running karp-rabin greedy string tiling

algorithm to search the table of similarity from the set of student’s practicum result.

From the similarity’s table that is formed, it will show the groups of students in solving a problem. The number of groups that will be formed depends on the amount

of sample files used and the complexity of the given problem. The more sample files

and increasingly complex given problem, generating a more diverse group. The

amount of data that examined is eight cases, thirty sample file, and a sample class.

Keyword : running karp-rabin greedy string tiling algorithm, threshold clustering, problem

(3)

DAFTAR ISI

LEMBAR PENGESAHAN ... i

PRAKATA ... ii

PERNYATAAN ORISINALITAS LAPORAN PENELITIAN ... iv

PERNYATAAN PUBLIKASI LAPORAN PENELITIAN ... v

ABSTRAK ... vi

ABSTRACT ... vii

DAFTAR ISI ... viii

DAFTAR GAMBAR ... xi

DAFTAR TABEL ... xvii

DAFTAR NOTASI/ LAMBANG ... xviii

DAFTAR SINGKATAN ... xx

DAFTAR ISTILAH ... xxi

BAB 1. PENDAHULUAN ... 1

1.1 Latar Belakang ... 1

1.2 Rumusan Masalah ... 2

1.3 Tujuan Pembahasan ... 2

1.4 Batasan Masalah ... 3

1.5 Sistematika Pembahasan ... 4

BAB 2. KAJIAN TEORI ... 6

2.1 Algoritma Running Karp-Rabin Greedy String Tiling ... 6

2.2 Hashing ... 9

2.3 K-gram ... 10

2.4 Similaritas ... 10

2.5 Lexical Analyzer ... 11

2.6 Token ... 11

2.7 Finite State Automata ... 14

2.8 Bahasa C ... 15

2.9 Bahasa Java ... 16

2.10 UML ... 16

2.11 MinGW ... 17

(4)

3.1 Analisis ... 18

3.2 Gambaran Keseluruhan ... 19

3.2.1 Persyaratan Antarmuka Eksternal ... 19

3.2.2 Antarmuka dengan Pengguna ... 19

3.2.3 Antarmuka Perangkat Keras... 21

3.2.4 Antarmuka Perangkat Lunak ... 21

3.2.5 Fitur – fitur Produk Perangkat Lunak ... 22

3.3 Disain Perangkat Lunak ... 28

3.3.2 Disain Penyimpanan Data ... 69

3.3.3 Disain Antarmuka ... 70

BAB 4. PENGEMBANGAN PERANGKAT LUNAK ... 75

4.1 Implementasi Class/Modul ... 75

4.1.1 Class Koneksi ... 75

4.1.2 Class TextFieldLimiter ... 75

4.1.3 Class FindFile... 76

4.1.4 Class CompileFile ... 78

4.1.5 Class CheckingInputOutput ... 82

4.1.6 Class ReadingFile ... 86

4.1.7 Class CekToken... 87

4.1.8 Class Filtering ... 92

4.1.9 Class FiniteStateAutomata ... 93

4.1.10 Class Convertion ... 97

4.1.11 Class HashTable ... 101

4.1.12 Class MatchTiles ... 102

4.1.13 Class Pattern ... 103

4.1.14 Class KarpRabin ... 103

4.1.15 Class Similaritas ... 109

4.1.16 Class SubCategorization ... 111

4.1.17 Class Categorization ... 111

4.2 Implementasi Penyimpanan Data ... 113

4.2.1 Tabel Hasil ... 113

(5)

4.3.1 Tampilan Halaman Utama ... 114

4.3.2 Tampilan Show Seluruh Analisis... 115

4.3.3 Tampilan Analisis Satu Kelas ... 116

4.3.4 Tampilan Analisis Satu Mahasiswa ... 117

4.3.5 Tampilan Analisis Satu Kasus Satu Kelas ... 118

4.3.6 Tampilan Analisis Satu Topik ... 119

4.3.7 Tampilan Analisis Satu Topik Satu Kelas ... 120

4.3.8 Tampilan Halaman Petunjuk ... 121

BAB 5. TESTING DAN EVALUASI SISTEM ... 122

5.1 Rencana Pengujian ... 122

5.2 Pelaksanaan Pengujian ... 122

5.2.1 White Box ... 122

5.2.2 Pengujian Dengan Kasus ... 129

5.2.3 Kesimpulan Pengujian Kasus ... 159

BAB 6. KESIMPULAN DAN SARAN ... 161

6.1 Kesimpulan ... 161

6.2 Saran ... 163

DAFTAR PUSTAKA ... 164

(6)

DAFTAR GAMBAR

Gambar 2.1 Algoritma scanpattern ... 8

Gambar 2.2 Algoritma Running Karp-Rabin Greedy String Tiling ... 9

Gambar 2.3 Perhitungan similaritas... 10

Gambar 2.4 Daftar kata kunci dalam bahasa C ... 12

Gambar 2.5 Daftar penanda escape dalam bahasa C ... 13

Gambar 2.6 Contoh penulisan finite state automata... 15

Gambar 3.1 Use case aplikasi pengkategorisasian bahasa C ... 28

Gambar 3.2 Activity diagram masukan folder direktori ... 29

Gambar 3.3 Activity diagram mencari file ... 31

Gambar 3.4 Activity diagram kompile file ... 33

Gambar 3.5 Activity diagram membaca file ... 34

Gambar 3.6 Activity diagram cek input dan output ... 36

Gambar 3.7 Activity diagram proses ... 37

Gambar 3.8 Activity diagram konversi kode program menjadi token ... 38

Gambar 3.9 Activity diagram pengkonversian kode ... 39

Gambar 3.10 Activity diagram pencocokan ... 41

Gambar 3.11 Activity diagram pengukuran kemiripan ... 42

Gambar 3.12 Activity diagram pengelompokan ... 43

Gambar 3.13 Activity diagram menyimpan analisis ... 44

Gambar 3.14 Activity diagram menampilkan analisis ... 45

Gambar 3.15 Activity diagram menampilkan analisis keseluruhan... 46

Gambar 3.16 Activity diagram menampilkan analisis satu kelas ... 47

Gambar 3.17 Activity diagram menampilkan analisis satu mahasiswa ... 48

Gambar 3.18 Activity diagram menampilkan analisis satu kelas satu kasus ... 49

Gambar 3.19 Activity diagram menampilkan analisis satu topik ... 50

Gambar 3.20 Activity diagram menampilkan analisis satu topik satu kelas ... 51

Gambar 3.21 Activity diagram print ... 52

Gambar 3.22 Class diagram ... 53

Gambar 3.23 Class diagram pada package utility... 54

Gambar 3.24 Class diagram pada package readingfile ... 54

(7)

Gambar 3.26 Class diagram pada package fsa ... 56

Gambar 3.27 Class diagram pada package categorization ... 56

Gambar 3.28 FSA untuk konstanta integer pada bahasa C ... 57

Gambar 3.29 FSA untuk konstanta real pada bahasa C ... 57

Gambar 3.30 FSA untuk konstanta karakter pada bahasa C ... 58

Gambar 3.31 FSA untuk string literals pada bahasa C ... 58

Gambar 3.32 FSA untuk keyword dan identifier pada bahasa C ... 59

Gambar 3.33 FSA untuk operator pada bahasa C ... 59

Gambar 3.34 FSA untuk simbol pada bahasa C ... 60

Gambar 3.35 FSA untuk komentar pada bahasa C ... 60

Gambar 3.36 FSA Keseluruhan ... 61

Gambar 3.37 String kode program mahasiswa satu ... 62

Gambar 3.38 String kode program mahasiswa dua ... 62

Gambar 3.39 Hasil setelah proses filtering string kode program mahasiswa satu 63 Gambar 3.40 Hasil setelah proses filtering string kode program mahasiswa dua. 63 Gambar 3.41 Dice Similarity Coeficiens ... 68

Gambar 3.42 ERD... 69

Gambar 3.43 User interface halaman utama ... 70

Gambar 3.44 User interface menu show seluruh analisis ... 71

Gambar 3.45 User interface menu analisis satu kelas ... 72

Gambar 3.46 User interface menu analisis satu mahasiswa ... 73

Gambar 3.47 User interface menu analisis problem solving ... 74

Gambar 4.1 Implementasi class Koneksi ... 75

Gambar 4.2 Implementasi class TextFieldLimiter ... 76

Gambar 4.3 Implementasi class FindFile... 76

Gambar 4.4 Implementasi method getAllFileC ... 77

Gambar 4.5 Implementasi class CompileFile ... 78

Gambar 4.6 Implementasi method compilingFile ... 79

Gambar 4.7 Implementasi method compileCFile ... 79

Gambar 4.8 Implementasi method getAllFileHasCompile ... 80

Gambar 4.9 Implementasi method getFileHasFailedCompile ... 81

(8)

Gambar 4.11 Implementasi method getFileHasCorrectAnwers ... 83

Gambar 4.12 Implementasi method getFileHasWrongAnwers ... 84

Gambar 4.13 Implementasi method getInputOutput... 84

Gambar 4.14 Implementasi method getFileInputOutput... 85

Gambar 4.15 Implementasi class ReadingFile ... 86

Gambar 4.16 Implementasi method readTheFile ... 86

Gambar 4.17 Implementasi class CekToken ... 88

Gambar 4.18 Implementasi method isAlphabet ... 88

Gambar 4.19 Impelemntasi method isNumber ... 89

Gambar 4.20 Implementasi method isAlphabetNumber ... 89

Gambar 4.21 Implementasi method isOperator ... 90

Gambar 4.22 Implementasi method isSymbol ... 90

Gambar 4.23 Implementasi method isSeparator ... 91

Gambar 4.24 Implementasi method isKeyword ... 91

Gambar 4.25 Implementasi class Filtering ... 92

Gambar 4.26 Implementasi method splitKodeProgram ... 93

Gambar 4.27 Implementasi class FiniteStateAutomata ... 94

Gambar 4.28 Implementasi method generateFSA (1) ... 95

Gambar 4.29 Implementasi method generateFSA (2) ... 96

Gambar 4.30 Implementasi method getListFSA ... 97

Gambar 4.31 Imlementasi class Convertion ... 98

Gambar 4.32 Implementasi method convertForIntoWhile... 99

Gambar 4.33 Implementasi method convertSwitchIntoIf ... 100

Gambar 4.34 Implementasi class HashTable ... 101

Gambar 4.35 Implementasi method add ... 101

Gambar 4.36 Implementasi method get ... 102

Gambar 4.37 Implementasi class MatchTiles ... 102

Gambar 4.38 Implementasi class Pattern ... 103

Gambar 4.39 Implementasi class KarpRabin ... 104

Gambar 4.40 Implementasi method scanPattern ... 105

Gambar 4.41 Implementasi method distToNextTile... 106

(9)

Gambar 4.43 Implementasi method generateHashValue ... 107

Gambar 4.44 Implementasi method markString ... 108

Gambar 4.45 Implementasi method isHavingTheSameMatch ... 108

Gambar 4.46 Implementasi method runningRabinKarpGreedyStringTiling ... 109

Gambar 4.47 Implementasi class Similaritas ... 110

Gambar 4.48 Implementasi method calculateSimilarity ... 110

Gambar 4.49 Implementasi method getLengMatches ... 110

Gambar 4.50 Implementasi class SubCategorization ... 111

Gambar 4.51 Implementasi class Categorization ... 112

Gambar 4.52 Implementasi method generateCategorization ... 112

Gambar 4.53 Implementasi method getSimilarityMatriks ... 113

Gambar 4.54 Tampilan Halaman Utama ... 115

Gambar 4.55 Tampilan Show Seluruh Analisis ... 116

Gambar 4.56 Tampilan Analisis Satu Kelas ... 117

Gambar 4.57 Tampilan Analisis Satu Mahasiswa ... 118

Gambar 4.58 Tampilan Analisis Satu Kasus Satu Kelas ... 119

Gambar 4.59 Tampilan Analisis Satu Topik ... 120

Gambar 4.60 Tampilan Analisis Satu Topik Satu Kelas ... 121

Gambar 4.61 Tampilan Halaman Petunjuk ... 121

Gambar 5.1 Kode program kasus tanpa input user untuk kategori satu ... 130

Gambar 5.2 Kode program kasus tanpa input user untuk kategori dua ... 130

Gambar 5.3 Kode program kasus tanpa input user untuk kategori tiga... 130

Gambar 5.4 Kode program kasus dua input dan dua output untuk kategori satu 131 Gambar 5.5 Kode program kasus dua input dan dua output untuk kategori dua 132 Gambar 5.6 Kode program kasus dua input dan dua output untuk kategori tiga 132 Gambar 5.7 Kode program kasus satu input dan banyak output kategori satu ... 134

Gambar 5.8 Kode program kasus satu input dan banyak output kategori dua .... 134

Gambar 5.9 Kode program kasus satu input dan banyak output kategori tiga .... 135

(10)

Gambar 5.13 Kode program kasus satu input dan banyak output kategori tujuh 137 Gambar 5.14 Kode program kasus satu input dan banyak output kategori

delapan ... 137

Gambar 5.15 Kode program kasus satu input dan banyak output kategori sembilan ... 138

Gambar 5.16 Kode program kasus percabangan untuk kategori satu... 139

Gambar 5.17 Kode program kasus percabangan untuk kategori dua ... 140

Gambar 5.18 Kode program kasus percabangan untuk kategori tiga ... 140

Gambar 5.19 Kode program kasus percabangan untuk kategori empat ... 141

Gambar 5.20 Kode program kasus percabangan untuk kategori lima ... 141

Gambar 5.21 Kode program kasus percabangan untuk kategori enam ... 142

Gambar 5.22 Kode program kasus percabangan untuk kategori tujuh ... 142

Gambar 5.23 Kode program kasus pengulangan (while) untuk kategori satu .... 144

Gambar 5.24 Kode program kasus pengulangan (while) untuk kategori dua ... 144

Gambar 5.25 Kode program kasus pengulangan (while) untuk kategori tiga ... 145

Gambar 5.26 Kode program kasus pengulangan (while) untuk kategori empat . 145 Gambar 5.27 Kode program kasus pengulangan (while) untuk kategori lima .... 146

Gambar 5.28 Kode program kasus pengulangan (for) untuk kategori satu ... 147

Gambar 5.29 Kode program kasus pengulangan (for) untuk kategori dua ... 148

Gambar 5.30 Kode program kasus pengulangan (for) untuk kategori tiga ... 148

Gambar 5.31 Kode program kasus pengulangan (for) untuk kategori empat ... 149

Gambar 5.32 Kode program kasus array satu dimensi untuk kategori satu ... 150

Gambar 5.33 Kode program kasus array satu dimensi untuk kategori dua ... 151

Gambar 5.34 Kode program kasus array satu dimensi untuk kategori tiga ... 151

Gambar 5.35 Kode program kasus array satu dimensi untuk kategori empat .... 152

Gambar 5.36 Kode program kasus array satu dimensi untuk kategori lima... 152

Gambar 5.37 Kode program kasus array satu dimensi untuk kategori enam ... 153

Gambar 5.38 Kode program kasus array satu dimensi untuk kategori tujuh ... 153

Gambar 5.39 Kode program kasus array dua dimensi untuk kategori satu ... 155

Gambar 5.40 Kode program kasus array dua dimensi untuk kategori dua ... 155

Gambar 5.41 Kode program kasus array dua dimensi untuk kategori tiga ... 156

(11)
(12)

DAFTAR TABEL

Tabel 3.1 Tabel kumpulan token dan nilai hashing pada mahasiswa satu... 64

Tabel 3.2 Tabel kumpulan token pada mahasiswa dua ... 65

Tabel 3.3 Tabel kumpulan token yang memiliki kesamaan ... 67

Tabel 4.1 Implementasi tabel hasil ... 113

Tabel 5.1 Tabel pengujian class CekToken ... 122

Tabel 5.2 Tabel pengujan class Convertion ... 123

Tabel 5.3 Tabel pengujian class Filtering ... 124

Tabel 5.4 Tabel pengujian class FiniteStateAutomata ... 126

Tabel 5.5 Tabel pengujian class MatchTiles ... 126

Tabel 5.6 Tabel pengujian class Pattern ... 127

Tabel 5.7 Tabel pengujian class Similaritas ... 127

Tabel 5.8 Tabel pengujian class Categorization ... 128

Tabel 5.9 Tabel pengujian class SubCategorization ... 128

Tabel 5.10 Tabel hasil pengujian kasus tanpa input user ... 129

Tabel 5.11 Tabel hasil pengujian kasus dengan dua input dan dua output ... 131

Tabel 5.12 Tabel hasil pengujian kasus dengan satu input dan banyak output ... 133

Tabel 5.13 Tabel hasil pengujian kasus percabangan ... 138

Tabel 5.14 Tabel hasil pengujian kasus pengulangan dengan while ... 143

Tabel 5.15 Tabel hasil pengujian kasus pengulangan dengan for ... 147

Tabel 5.16 Tabel hasil pengujian kasus array satu dimensi ... 149

(13)

DAFTAR NOTASI/ LAMBANG

Notasi/Lambang Nama Arti

Actor Pengguna yang melakukan interaksi

langsung dengan sistem, bisa manusia, aplikasi atau sistem, ataupun objek lain.

Use Case Digambarkan dengan lingkaran elips

dengan nama use case berada ditengah lingkaran elips.

Association Penghubung actor dengan use case.

Include Terjadi jika terdapat prilaku yang

serupa di lebih dari satu use case.

Extend Menambahkan prilaku use case pada

use case dasar.

Initial State Titik awal untuk memulai aktifitas.

Final State

Titik akhir untuk mengakhiri aktifitas.

Activity Status Menandakan status dari aktifity setelah

melakukan aktifitas.

Activity Menandakan aktivitas dalam aplikasi.

Decision Pilihan untuk mengambil keputusan.

Fork/Join Menunjukkan kegiatan

menggabungkan dua panel aktifitas menjadi satu atau sebaliknya memisahkan satu panel menjadi dua panel aktifitas.

(14)

Notasi/Lambang Nama Arti

Note

Catatan khusus untuk sebuah aktifitas.

Class Blok-blok pembangun program. Bagian

atas class menunjukkan nama dari class, bagian tengah mendefinisikan atribut dari class, dan bagian bawah mendefinisikan method dari sebuah class.

Association Menunjukkan hubungan antar kelas

yang tidak saling bergantung.

Agregation Ketika sebuah class A mengagregasi

class B, maka objek A tidak dapat ada

tanpa objek B, namun objek B dapat ada tanpa kehadiran objek A.

Composition Ketika sebuah class A mengkompisisi

class B, maka objek A tidak dapat ada

tanpa objek B, dan objek B tidak dapat ada tanpa kehadiran objek A.

Dependency Menunjukkan ketergantungan

antara satu class dengan class yang lain.

Generalization Menunjukkan inheritance dari

satu class ke class lain.

(15)

DAFTAR SINGKATAN

ERD = Entity Relational Database FSA = Finite State Automata

GNU = Gnu’s Not Unix

(16)

DAFTAR ISTILAH

Activity diagram = Menjelaskan urutan kegiatan yang mendukung

kegiatan kondisional maupun paralel.

Algoritma = Suatu langkah atau aturan yang tepat dalam mendefinisikan urutan operasi sehingga setiap aturan menjadi lebih efektif dan jelas.

Class diagram = Menjelaskan jenis objek yang terdapat dalam

sistem dan berbagai macam hubungan statis yang terbentuk antar objek tersebut.

Clustering = Pengelompokan data ke dalam suatu kelompok

berdasarkan parameter tertentu, dalam satu kelompok anggota kelompok tersebut memiliki tingkat kemiripan yang tinggi.

Compiler = Sebuah program komputer yang berguna untuk

menerjemahkan program komputer yang ditulis menggunakan bahasa pemograman tertentu menjadi program yang ditulis dalam bahasa pemograman lain.

File = Urutan data yang berisi mengenai informasi

tertentu, yang memiliki atribut seperti nama file, ukuran file, ekstensi file dan lain sebagainnya.

Finite State Automata = Merupakan model matematika yang dapat

menerima masukan dan mengeluarkan keluaran. Model ini memiliki state dalam jumlah tertentu dan dapat berpindah dari satu state ke state yang lain sesuai dengan masukan dan fungsi transisi. Model ini biasa digunakan dalam bahasa mesin.

Hashing = Suatu cara untuk mentransformasi sebuah string

(17)

Lexical analyzer = Proses mengubah kata – kata menjadi token - token.

Pattern = Merupakan pola dari suatu teks atau kalimat

dengan panjang tertentu.

Threshold = Merupakan nilai yang menjadi titik acuan untuk

parameter.

Token = sebuah unit terkecil atau elemen mendasar bahasa komputer dimana unit tersebut tidak dapat dibagi lagi.

User interface = Gambaran mengenai tampilan aplikasi atau sistem

yang akan dibuat.

White Box = pengujian yang didasarkan pada pengecekan

(18)

BAB 1.

PENDAHULUAN

1.1 Latar Belakang

Perkembangan kegiatan belajar mengajar semakin hari akan semakin berkembang. Perkembangan tersebut dimulai dengan adanya fasilitas-fasilitas yang menunjang kegiatan belajar mengajar. Selain dari pada fasilitas yang cukup memadai, perkembangan tersebut terlihat dari kemampuan siswa yang semakin berkembang dalam menyelesaikan permasalahan.

Banyak bidang pendidikan yang dapat ditekuni oleh para mahasiswa, salah satunya adalah bidang teknologi informasi. Bidang teknologi informasi adalah bidang pendidikan yang bergerak dalam pengembangan perangkat lunak dan perangkat keras. Dimana setiap mahasiswa yang menekuni bidang tersebut diharuskan untuk mengembangkan potensi yang mereka miliki untuk membuat sebuah perangkat lunak maupun membangun sebuah perangkat keras.

Pengembangan perangkat lunak dapat dilakukan dengan berbagai cara, salah satunya dengan membuat sebuah program. Program yang dibuat dapat menggunakan berbagai macam bahasa pemograman yang dikuasai oleh mahasiswa, salah satu bahasa pemograman yang mendasar adalah bahasa C.

Dalam pembuatan program terkadang terdapat berbagai macam masalah yang harus dicari solusinya. Dimana setiap solusi yang dibuat oleh masing-masing pembuat program akan berbeda satu dengan yang lain, hal tersebut bergantung dari bagaimana cara pembuat program tersebut untuk menyelesaikan suatu masalah. Sebagai contoh, terdapat sebuah kasus mencari deret bilangan fibbonaci, kita dapat menggunakan cara iteratif atau dengan menggunakan cara rekursif bergantung dari pola pikir mana yang mahasiswa pilih untuk mencapai solusi tersebut.

(19)

2

oleh mahasiswa. Dari pengelompokan hasil kerja mahasiswa, dosen pengajar akan dapat melihat proses kerja mahasiswa dalam mencari solusi kasus yang diberikan. Penulis berharap agar aplikasi yang dibuat dapat membantu dosen pengajar untuk melihat proses kerja dari mahasiswa dalam mencari sebuah solusi permasalahan yang diberikan, dan dapat menemukan berapa banyak solusi yang dapat digunakan untuk menyelesaikan sebuah kasus yang diberikan oleh dosen pengajar.

1.2 Rumusan Masalah

Berdasarkan latar belakang yang telah dijabarkan di atas, maka dapat diambil rumusan masalah :

1. Bagaimana membangun aplikasi yang memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa?

2. Bagaimana membangun aplikasi yang memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa? 3. Bagaimana mengelompokan hasil kerja mahasiswa satu dengan

mahasiswa yang lain, dengan melihat similaritas mahasiswa tersebut dengan mahasiswa yang lain?

1.3 Tujuan Pembahasan

Berdasarkan pokok-pokok masalah yang akan dijawab dan dipecahkan, tujuan yang hendak dicapai adalah :

1. Memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa.

2. Penerapan algoritma Running Karp-Rabin Greedy String Tiling dalam aplikasi sebagai basis pengukuran similaritas.

3. Memudahkan dosen pengajar untuk melihat proses kerja mahasiswa dalam mencari solusi kasus yang diberikan.

(20)

3

5. Memudahkan dosen pengajar untuk melihat hasil kerja mahasiswa dengan kelas yang berbeda untuk menjadikan pembandingan kelas yang memiliki kreatifitas dalam mencari solusi kasus yang diberikan.

6. Membangun aplikasi yang memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa.

7. Pengelompokan hasil kerja mahasiswa satu dengan mahasiswa yang lain, dengan melihat similaritas mahasiswa tersebut dengan mahasiswa yang lain.

1.4 Batasan Masalah

Berdasarkan rumusan masalah yang tersebut, maka terdapat batasan masalah dari penelitian :

1. Setiap pengelompokan kode program dilakukan dengan jumlah sesuai dengan jumlah rata-rata mahasiswa pada setiap kelas, yaitu antara 40 file sampai dengan 50 file kode program.

2. Pengelompokan kode program dilakukan pada satu penyelesaian masalah.

3. Pengukuran similaritas dilakukan terhadap syntax kode program yang umum digunakan oleh mahasiswa.

4. Melakukan konversi beberapa potongan kode program untuk syntax for yang dikonversi menjadi while dan switch case yang dikonversi menjadi if.

5. Berjalan baik pada perangkat keras yang memiliki instalasi compiler bahasa C.

6. Berjalan baik jika file-file hasil praktikum mahasiswa diletakkan pada satu folder direktori.

7. Berjalan dengan baik pada file program C yang memiliki nama sesuai dengan format, yaitu <nama kasus>_nrp.c sebagai contoh satu_1072021.c.

8. Berjalan baik jika path folder direktori tidak terlalu panjang.

(21)

4

10.Pengukuran similaritas dilakukan terhadap kode program yang memiliki input dan output yang sesuai dengan input dan output yang telah

disediakan oleh dosen (jika dosen pengajar menyediakan input dan output).

11.Berjalan baik pada program yang menangani single problem solving, seperti contoh : swaping angka, converting angka, fibbonacci, dan lain sebagainya.

12.Pengukuran akurasi yang tepat dilakukan secara manual. 13.Menangani bilangan interger standar selain eksponensial.

1.5 Sistematika Pembahasan

Dalam penulisan laporan, sistematika penulisan laporan yang akan digunakan adalah :

BAB 1 : PENDAHULUAN

Pada bab ini akan dijelaskan mengenai Latar Belakang, Rumusan Masalah, Tujuan, Batasan Masalah, dan Sistematika Penulisan.

BAB 2 : KAJIAN TEORI

Pada bab ini akan dijelaskan mengenai seluruh teori yang dipakai dan yang relevan terhadap penelitian yang dilakukan. Dimana teori tersebut berhubungan dengan analisis, perancangan, pengembangan, implementasi, sampai dengan pengujian hasil penelitian.

BAB 3 : ANALISIS DAN DISAIN

Pada bab ini akan dijelaskan mengenai analisis sistem, gambaran keseluruhan, fitur dan disain perangkat lunak yang akan dibuat dalam penelitian ini.

BAB 4 : PENGEMBANGAN PERANGKAT LUNAK

Pada bab ini akan dijelaskan mengenai implementasi seluruh hasil rancangan yang sudah dijelaskan pada bab 3, yang terdiri dari class/modul yang didunakan dalam penelitian, simpanan data sampai dengan antarmuka.

BAB 5 : TESTING DAN EVALUASI SISTEM

(22)

5

BAB 6 : KESIMPULAN DAN SARAN

(23)

BAB 6.

KESIMPULAN DAN SARAN

6.1 Kesimpulan

Berikut ini adalah kesimpulan yang didapatkan dari pengerjaan tugas akhir: 1. Perancangan aplikasi kategorisasi bahasa C dapat dilakukan dengan baik melalui penyusunan laporan tugas akhir ini, terbutkri dengan adanya bab 3 sebagai analisis yang di kerjakan oleh penulis sebelum membuat aplikasi sehingga penulis dimudahkan dalam pembuatan aplikasi.

2. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar dalam mengelompokan hasil kerja dari mahasiswa karena aplikasi akan menampilkan nrp-nrp mahasiswa mana yang tergolong dalam satu kelompok, sehingga dosen pengajar tidak perlu melakukan secara manual.

3. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar dalam menemukan berapa banyak kemungkinan yang dapat digunakan untuk menyelesaikan kasus yang diberikan karena aplikasi akan menampilkan jumlah kelompok yang terbentuk saat proses analisis dilakukan.

4. Aplikasi kategorisasi bahasa C ini dapat memudahkan dosen pengajar untuk melihat hasil kerja mahasiswa dengan kelas yang berbeda untuk menjadikan pembandingan kelas yang memiliki kreatifitas dalam mencari solusi kasus yang diberikan karena aplikasi dapat menampilkan hasil analisis untuk setiap kasus yang diberikan pada kelas yang berbeda.

(24)

162

6. Penerapkan algoritma Running Karp-Rabin Greedy String Tiling dapat dilakukan dalam aplikasi sebagai basis pengukuran similaritas.

7. Kelebihan yang dimiliki oleh algoritma Running Karp-Rabin Greedy String Tiling dibandingkan dengan algoritma string matching yang lain

adalah tidak bergantung pada urutan substring yang dicari dalam string teks yang dibandingkan. Algoritma Running Karp-Rabin Greedy String Tiling juga selalu mengutamakan substring identik yang lebih panjang,

sehingga dapat lebih tepat menemukan kesamaan dalam sebuah string teks karena substring yang panjang lebih memungkinkan untuk mendeteksi bahwa kedua string yang dibandingkan memiliki kemiripan yang tinggi. Hal tersebut terbukti pada pembahasan subbab 3.3.1.5. 8. Kelemahan algoritma Running Karp-Rabin Greedy String Tiling yang

ditemukan adalah penentuan panjang minimal-search-length yang merupakan sebuah parameter algoritma Running Karp-Rabin Greedy String Tiling. Semakin kecil nilai minimum-search-length yang

ditentukan, maka kemungkinan sensitivitas deteksi kemiripan akan semangkin tinggi, namun pada kenyataannya hal tersebut belum tentu merupakan sebuah pola yang memiliki arti yang sama. Hal tersebut terbukti pada pembahasan subbab 3.3.1.5.

9. Aplikasi kategorisasi bahasa C dapat memudahkan pengajar menganalisis hasil praktikum yang sudah dikerjakan oleh mahasiswa, karena aplikasi menyimpan data yang disimpan oleh pengguna setelah melakukan analisis. Analisis yang dilakukan pada aplikasi adalah melihat banyaknya kelompok yang terbentuk pada kelas tertentu, melihat banyaknya kelompok yang terbentuk pada mahasiswa tertentu, melihat banyaknya kelompok yang terbentuk pada kelas tertentu dan kasus tertentu, melihat banyaknya kelompok yang terbentuk pada topik tertentu, melihat banyaknya kelompok yang terbentuk pada topik tertentu dan kelas tertentu.

(25)

163

11.Banyaknya kelompok yang akan terbentuk bergantung kepada banyaknya sampel file yang digunakan, kompleksitas soal yang diberikan dan kreatifitas mahasiswa. Semakin banyak sampel file, semakin komplek soal yang diberikan dan semakin tinggi tingkat kreatifitas mahasiswa dalam menjawab kasus yang diberikan, maka akan menghasilkan kelompok yang lebih beragam. Hal tersebut dibuktikan dengan pengujian yang dilakukan pada delapan kasus, tigapuluh sampel file, dan satu sampel kelas. Hasil pengujian dapat dilihat pada subbab 5.2.2.

6.2 Saran

Berikut ini saran yang didapat dengan pengerjaan tugas akhir :

1. Perlu adanya penanganan syntax-syntax yang lebih lengkap dari bahasa C seperti eksponensial, pointer dan lain sebagainya.

2. Perlu dilakukannya konversi potongan kode program yang lebih luas agar perbandingan similaritas lebih maksimal, seperti konversi potongan kode program untuk kasus rekursif.

(26)

DAFTAR PUSTAKA

[1] M. J. Wise, "Running Karp-Rabin Matching and Greedy String Tiling," Department of Computer Science, University of Sidney, Australia, 1993.

[2] P. D. Maharani, "Penilaian Otomatis Praktikum Pemograman dengan Pendeteksi Plagiarisme," Jurnal Sarjana Institut Teknologi Bandung Bidang Teknik Elektro dan Informatika, vol. I, no. 2, p. 60, 2012.

[3] A. G. Konheim, Hashing in Computer Science Fifty Years of Slicing and Dicing, Canada: John Wiley & Sons, Inc, Hoboken, New Jersey, 2010.

[4] S. Schleimer, D. S. Wilkerson and A. Aiken, "Winnowing: Local Algorithms for Document Fingerprinting," SIGMOD, San Diego, 2003.

[5] E. Nugroho, "Perancangan Sistem Deteksi Plagiarisme Dokumen Teks Dengan Menggunakan Algoritma Rabin-Karp," Universitas Brawijaya, Malang, 2011.

[6] A. M. Surahman, "Perancangan Sistem Penentuan Similarity Kode Program Pada Bahasa C dan Pascal Dengan Menggunakan Algoritma Rabin-Karp," Universitas Tanjungpura, 2013.

[7] A. W. Appel and J. Palsberg, Modern Compiler Implementation in Java, 2nd ed., United Kingdom: Cambridge University Press, 2002.

[8] B. W. Kernighan and D. M. Ritchie, The C Programming Language, Prentice-Hall, 1988.

[9] M. V. Lawson, Finite Automata, Edinburgh: Heriot-Watt University, 2009.

Referensi

Dokumen terkait

Hal ini dapat diketahui dari hasil analisis yang menunjukkan bahwa ketuntasan belajar siswa kelas eksperimen memperoleh nilai rata-rata sebesar 78,23, sedangkan

Setiap KI hasil insentif riset yang berhasil dikomersialkan wajib mengikuti pembagian pembayaran royalti dan lisensi sesuai dengan peraturan yang berlaku,

Untuk pengguna pada Admin memiliki menu Dashboard, menu Master Data yang memiliki sub menu Master Data Divisi, Master Data Jabatan, Master Data Karyawan, Master Data User, Master

Seperti yang diungkapkan oleh Hamdani (2013: 21) bahwa “Prestasi belajar merupakan suatu bentuk nyata pencapaian seorang siswa dalam belajar.” Bentuk nyata

langkah-langkah yang dilakukan Badan Pengelola Pajak Dan Retribusi Daerah Kota Medan untuk meningkatkan Pendapatan Asli Daerah yang berasal dari Pajak Bumi Bangunan

Koleksi Perpustakaan Universitas Terbuka... Koleksi Perpustakaan

Aditif yang digunakan meliputi benzotriazol, sulfur elemental, dibutilfosfit, dan 2,5-dimercapto-1,3,4-thiadiazol (DMTD) serta kombinasinya. Hasil-hasil percobaan menunjukkan bahwa

Oleh karena itu, bagi pertanian yang bersifat land base agricultural, ketersediaan lahan merupakan syarat mutlak atau keharusan untuk mewujudkan peran sektor pertanian