You are on page 1of 11

ii

PENTAKSIR AUTOMATIK LATIHAN ASAS PENGATURCARAAN C


MENGGUNAKAN TEKNIK PERBANDINGAN KOD PSEUDO

KHIRULNIZAM ABD RAHMAN

TESIS YANG DIKEMUKAKAN UNTUK MEMENUHI SEBAHAGIAN


DARIPADA SYARAT MEMPEROLEH IJAZAH
SARJANA TEKNOLOGI MAKLUMAT

FAKULTI TEKNOLOGI DAN SAINS MAKLUMAT


UNIVERSITI KEBANGSAAN MALAYSIA
BANGI

2008
iii

PENGAKUAN

Saya akui karya ini adalah hasil kerja saya sendiri kecuali nukilan dan ringkasan yang
setiap satunya telah saya jelaskan sumbernya.

26 Oktober 2008 KHIRULNIZAM ABD RAHMAN


P 22180
iv

PENGHARGAAN

Dengan nama Allah yang Maha Pemurah lagi Maha Penyayang.

Alhamdulillah, dengan izin Allah saya diperkenankan untuk menyiapkan tesis ini.
Terima kasih kepada penyelia, Prof Madya Dr Md Jan Nordin, bekas penyelia Dr
Juzaidin Abd Aziz dan pemeriksa Prof Madya Dr Zarina Shukur. Tunjuk ajar dan
panduan yang telah diberikan sangat berguna dalam usaha menyiapkan tesis ini, amat
dihargai.

Terima kasih atas tajaan (sebahagian yuran pengangajian) yang diberikan oleh Kolej
Universiti Islam Antarabangsa Selangor (KUIS). Serta rakan-rakan pensyarah Fakulti
Teknologi dan Sains informasi kerana memberi ruang masa, menyumbang idea dan
tenaga, serta sokongan yang amat membantu dalam penghasilan tesis ini.

Terima kasih atas doa dan sokongan Hj Abd Rahman Martawi dan Hjh Poniam
Mengun, ibu bapa saya yang sangat dikasihi. Juga kepada keluarga yang dicintai,
Mahani Ma’mum, Muhammad Luqman, Muna Majidah, Amir Yusuf. Terima kasih
atas pengorbanan, dorongan dan inspirasi.
v

ABSTRAK

Latihan pengaturcaraan adalah satu aktiviti yang amat penting dalam subjek bahasa
pengaturcaraan komputer. Salah satu cara yang baik untuk menguasai subjek ini ialah
dengan banyak membuat latihan pengaturcaraan. Walau bagaimana pun semakin banyak
latihan bermaksud semakin bertambah beban pengajar untuk memeriksa dan menilai
latihan-latihan tersebut. Beban tersebut boleh dikurangkan sekiranya pengajar dibantu
dengan alatan yang boleh memeriksa semua latihan aturcara tersebut secara automatik.
Penilaian aturcara secara automatik adalah antara salah satu kaedah untuk mengurangkan
beban pengajar tersebut. Kaedah ini boleh digunakan untuk memeriksa dan memberi
markah latihan aturcara pelajar dalam subjek pengaturcaraan tanpa perlu menyemak
secara manual setiap satu jawapan pelajar. Projek yang dibangunkan ini ialah satu
perisian pemeriksa latihan aturcara pelajar, untuk bahasa pengaturcaraan C. Tujuan
projek ini dibangunkan ialah untuk memberi markah, dalam bentuk peratus kesamaan,
latihan aturcara yang dihantar oleh pelajar. Kaedah yang digunakan ialah dengan
menterjemah atur cara jawapan pelajar dan juga aturcara skema jawapan pengajar
kepada kod pseudo. Kemudian kod pseudo pelajar dan pengajar yang terhasil akan
dibandingkan untuk mencari peratus persamaannya. Penilaian adalah dalam bentuk
peratus persamaan antara kod pseudo pelajar dan kod pseudo pengajar. Pengujian telah
dilaksanakan untuk melihat perbandingan markah yang diberi oleh pengajar dengan
markah yang diberi oleh perisisan. Keputusannya adalah markah yang diberi oleh
perisian adalah 95 peratus sama dengan markah yang diberi oleh pengajar secara manual.
Hasil kajian ini akan dapat membantu pengajar kursus pengaturcaraan untuk memeriksa
jawapan latihan aturcara yang banyak secara automatik melalui kaedah perbandingan kod
pseudo.
vi

AUTOMATED PROGRAMMING ASSESSMENT FOR FUNDAMENTALS OF


C PROGRAMMING LANGUAGE USING PSEUDOCODE
COMPARISON TECHNIQUE

ABSTRACT

Programming exercise is an important activity in learning any programming language.


In order to acquire the skill to program is by doing a lot of programming exercises.
However, if the instructors give more exercises, the more workload they will bear to
check and grade all the exercises submitted by their students. The workload can be
reduced if the instructors are provided with a tool that can assesses and grades the
programming exercises automatically. Automated programming assessment is a
method to evaluate and to grade students’ programming exercises without the hassle
of doing it manually. This application is developed to assess student C programming
exercises based on the pseudocodes. The purpose of this project is to find the
percentage of the pseudocode similarity between student’s answer and the instructor’s
scheme. The method used in the software is by translating the students’ programming
answer and all the instructors’ answer schemes into pseudocode. The software will
compare the students’ pseudocode with all the pseudocode from the instructors’
answer schemes. The highest percentage of similarities will be chosen for the mark. A
test has been carried out to compare marks given by the software with the marks given
manually by the instructor. The result is 95% of the marks given by the software are
similar to the marks given by the instructor. From this research, programming
instructor could assess their students’ programming answer automatically in a faster
and more efficient manner.
vii

KANDUNGAN

Halaman

PENGAKUAN ii
PENGHARGAAN iii

ABSTRAK iv
ABSTRACT v

KANDUNGAN vi
SENARAI JADUAL ix
SENARAI RAJAH x
SENARAI SINGKATAN xii

BAB I PENDAHULUAN
1.1 Pengenalan 1
1.2 Pernyataan Masalah 2
1.3 Objektif Kajian 3
1.4 Skop Kajian 3
1.5 Metodologi Kajian 6
1.6 Rekabentuk Penyelesaian Masalah 7
1.7 Ringkasan Hasil Dan Sumbangan Kajian 7
1.8 Struktur Tesis 8

BAB II KAJIAN LITERATUR: PENYEMAKAN AUTOMATIK TUGASAN


PENGATURCARAAN MENGGUNAKAN PENDEKATAN ANALISIS
STATIK
2.1 Pengenalan 10
2.2 Kelebihan Menggunakan PATP 11
2.3 Pendekatan Yang Digunakan Dalam Penyemakan Automatik Aturcara 12
2.3.1 Pendekatan Analisis Dinamik 13
2.3.2 Pendekatan Analisis Statik 13
2.4 Analisis-analisis Menggunakan Pendekatan Statik 13
2.4.1 Penentuan Gaya Pengaturcaraan 12
2.4.2 Pengesanan Ralat Atur cara (Sintaksis atau Semantik) 14
2.4.3 Penilaian Metrik Perisian 15
2.4.4 Penilaian Struktur Atur cara 16
viii

2.4.5 Penilaian Bukan-struktur. 16


2.4.6 Penilaian dengan Kata Kunci 16
2.4.7 Pengesanan Plagiarisme 17
2.4.8 Penilaian Diagram 17

2.5 Kelebihan Dan Kelemahan Pendekatan Analisis Statik 18


2.5.1 Kelebihan 18
2.5.2 Kelemahan 18
2.6 Kajian-kajian Berkaitan Pengujian Menggunakan Pendekatan Statik 19
2.6.1 Ceilidh/CourseMaster 19
2.6.2 ELP 19
2.6.3 WAGS 21
2.6.4 Sumbangan aplikasi kepada bidang kajian 23
2.7 Rumusan 23

BAB III REKA BENTUK PENYELESAIAN


3.1 Pendahuluan 25
3.2 Reka bentuk Kelas dalam UML 25
3.2.1 Rajah Kes Penggunaan 26
3.2.2 Rajah Hubungan Kelas 27
3.2.3 Kelas Antaramuka Input 28
3.2.4 Kelas Penganalisis Leksikal 28
3.2.5 Kelas Penjana Kod pseudo 31
3.2.6 Kelas Perbandingan Kod pseudo 35
3.2.7 Kelas Antaramuka Output 38
3.3 Algoritma-algoritma Penting 39
3.3.1 Algoritma Penganalisis Leksikal 39
3.3.2 Algoritma Penjana Kod pseudo 47
3.3.3 Algoritma Perbandingan Kod pseudo 55
3.4 Rumusan 38

BAB IV IMPLEMENTASI DAN PENGUJIAN


4.1 Pendahuluan 58
4.2 Keperluan Implementasi 58
4.2.1 Keperluan Pelayan 58
4.2.2 Keperluan Pengguna (Klien) 59
4.3 Antaramuka Aplikasi 59
4.3.1 Antara muka Input 59
4.3.2 Antara muka Output 60
4.4 Pengujian 61
4.4.1 Objektif Pengujian 61
ix

4.4.2 Kaedah Pengujian 62


4.4.3 Soalan-soalan Dalam Pengujian 63
4.4.4 Keputusan Pengujian 66
4.4.5 Rumusan Pengujian 67
4.5 Kesimpulan 68

BAB V KESIMPULAN
5.1 Pendahuluan 70
5.2 Hasil Kajian 70
5.3 Sumbangan Kajian 70
5.4 Perluasan Kajian Pada Masa Akan Datang 71
5.5 Rumusan 71

RUJUKAN 73

LAMPIRAN
A. Senarai Metod dan Atribut Semua Kelas Terlibat 77
x

SENARAI JADUAL

No. Jadual Halaman


2.1 Beberapa contoh metrik perisian 15
2.2 Penilaian metrik kejuruteraan perisian dalam ELP 20
3.1 Contoh penamaan semula pembolehubah 31
3.2 Peraturan terjemahan kod aturcara kepada kod pseudo 33
3.3 Contoh pengiraan persamaan pengisytiharan 36
pembolehubah
3.4 Perbandigan kualitatif antara fungsi similar_text dan 38
levenshtein
4.1 Panduan gred untuk markah yang diperolehi bagi soalan 2 64
4.2 Panduan nombor dan nama bulan bagi soalan 3 64
4.3 Markah pelajar 1 66
4.4 Markah pelajar 2 66
4.5 Markah pelajar 3 67
xi

SENARAI RAJAH

No. Rajah Halaman


2.1 AST dalam format XML yang dicadangkan oleh Parr 21
(2006)
2.2 Algoritma yang dicadangkan oleh Norshuhani et. al. 22
(2005)
3.1 Rajah kes penggunaan 26
3.2 Rajah hubungan kelas 27
3.3 Kod sumber diproses menjadi senarai token melalui kelas 28
PenganalisisLeksikal
3.4 Spesifikasi token dalam format BNF 29
3.5 Struktur data dalam kelas Token 30
3.6 Kod aturcara C diterjemah kepada kod pseudo 32
3.7 Spesifikasi sintaks dalam BNF 32
3.8 Proses perbandingan kod pseudo pelajar dengan kod 37
pseudo skema
3.9 Kod pseudo bagi ringkasan proses 39
3.10 Kod pseudo bagi fungsi PENGANALISISLEKSIKAL 40
3.11 Kod pseudo bagi fungsi Katakunci 41
3.12 Kod pseudo bagi fungsi Pembolehubah 41
3.13 Kod pseudo bagi fungsi PenamaanSemulaPembolehubah 41
3.14 Kod pseudo bagi fungsi Nombor 42
3.15 Kod pseudo bagi fungsi NilaiLiteralAksara 42
3.16 Kod pseudo bagi fungsi NilaiLiteralRentetan 42
3.17 Kod pseudo bagi fungsi ProsesOperatorBahagi 43
3.18 Kod pseudo bagi fungsi ProsesOperatorDarab 43
3.19 Kod pseudo bagi fungsi ProsesOperatorModulo 43
3.20 Kod pseudo bagi fungsi ProsesOperatorTambah 44
3.21 Kod pseudo bagi fungsi ProsesOperatorTambah 44
3.22 Kod pseudo bagi fungsi KomenBaris 44
3.23 Kod pseudo bagi fungsi KomenBlok 45
3.24 Kod pseudo bagi fungsi ProsesOperatorSama 45
3.25 Kod pseudo bagi fungsi ProsesOperatorBesar 45
3.26 Kod pseudo bagi fungsi ProsesOperatorKecil 46
3.27 Kod pseudo bagi fungsi ProsesOperatorTak 46
3.28 Kod pseudo bagi fungsi ProsesOperatorDan 46
3.29 Kod pseudo bagi fungsi ProsesOperatorAtau 47
3.30 Kod pseudo bagi fungsi PENJANAKODPSEUDO 48
3.31 Kod pseudo bagi fungsi DeclarationStatement 49
3.32 Kod pseudo bagi fungsi AssignmentOperation 49
3.33 Kod pseudo bagi fungsi DirectAssignment 49
3.34 Kod pseudo bagi fungsi CompoundStatement 50
3.35 Kod pseudo bagi fungsi AssignmentOperationX 50
3.36 Kod pseudo bagi fungsi PrintfStatement 51
3.37 Kod pseudo bagi fungsi ScanfStatement 51
xii

3.38 Kod pseudo bagi fungsi IfStatement 51


3.39 Kod pseudo bagi fungsi IfElseStatement 52
3.40 Kod pseudo bagi fungsi ElseStatement 52
3.41 Kod pseudo bagi fungsi SwitchStatement 52
3.42 Kod pseudo bagi fungsi CaseStatement 53
3.43 Kod pseudo bagi fungsi DefaultStatement 53
3.44 Kod pseudo bagi fungsi DoWhileStatement 53
3.45 Kod pseudo bagi fungsi WhileStatement 54
3.46 Kod pseudo bagi fungsi ForStatement 55
3.47 Kod pseudo bagi fungsi PEMBANDINGKODPSEUDO 55
3.48 Kod pseudo bagi fungsi TukarKepadaTatasusunan 56
3.49 Kod pseudo bagi fungsi PemisahIsytiharPembolehubah 56
3.50 Kod pseudo bagi fungsi BandingPembolehubah 57
3.51 Kod pseudo bagi fungsi BandingProses 57
4.1 Antara muka untuk memuat naik fail-fail atur cara 60
4.2 Antara muka untuk memaparkan keputusan perbandingan 61
4.3 Jawapan pelajar di sebelah kanan mengandungi kesalahan 68
major

SENARAI SINGKATAN

AC Attributes Complexity
ASSYST Assessment System
AST Abstract Syntax Tree
BOSS BOSS Online Submission System
CAP Code Analyzer for PASCAL
ELP Environment to Learning Programming
GB Gigabyte
HTML Hyper Text Markup Language
IDE Integrated Development Environment
IIS Internet information System
KUIS Kolej Universiti Islam Antarabangsa Selangor
LCS Longest Common Subsequence
MB Megabyte
NOC Number of Classes
OpCom Operator Complexity of classes
PATP Penyemak Automatik Tugasan Pengaturcaraan
PHP PHP Hypertext Pre-processor
RKR-GST Running Karp-Rabin Greedy String Tiling
SIZE2 Number of properties
UML Unified Modeling Language
WAGS Web-based Automated Grading System
XML Extended Markup Language
YAP Yet Another Plague

You might also like