• Tidak ada hasil yang ditemukan

Source Code Autograder

N/A
N/A
Protected

Academic year: 2021

Membagikan "Source Code Autograder"

Copied!
14
0
0

Teks penuh

(1)

Source Code Autograder

LAPORAN TUGAS AKHIR

Disusun sebagai syarat kelulusan tingkat sarjana

oleh : Ronny / 13503039

PROGRAM STUDI INFORMATIKA

SEKOLAH TEKNIK ELEKTRO DAN INFORMATIKA

INSTITUT TEKNOLOGI BANDUNG

(2)

Lembar Pengesahan

Program Studi Sarjana Teknik Informatika

Source Code Autograder

Tugas Akhir

Program Studi Sarjana Teknik Informatika ITB

Oleh Ronny / 13503039

Telah disetujui dan disahkan sebagai laporan Tugas Akhir di Bandung, pada tanggal Juli 2008

Pembimbing

Dr. Ir. M.M. Inggriani Liem NIP 130796176

(3)

KATA PENGANTAR

Puji syukur ke hadirat Tuhan Yang Maha Esa. Dengan rahmat dan bimbingan-Nya, penulis dapat menyelesaikan Tugas Akhir yang berjudul “Source Code Autograder”.

Pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya pada: 1. Ibu Dr. Ir. M.M. Inggriani Liem selaku pembimbing Tugas Akhir, atas segala pendidikan,

dan bimbingan yang sangat berharga, serta perhatian dan kesabaran selama Tugas Akhir. 2. Ibu Yani Widyani, S.T., M.T., atas bimbingan dan bantuan selama Sidang Tugas Akhir

dan kritik, saran, dan penjelasan yang diberikan selaku penguji seminar dan prasidang sidang Tugas Akhir.

3. (Alm) Ibu Ir. Sri Purwanti, M.Sc, atas segala kritik dan saran yang diberikan selaku penguji presentasi proposal. Semoga Ibu diterima dalam damai abadi di sisiNya.

4. Bapak Riza Satria Perdana, S.T., M.T, atas segala kritik, saran, dan penjelasan yang diberikan selaku penguji sidang Tugas Akhir.

5. Bapak Achmad Imam Kristijantoro, S.T., M.T, atas segala kritik, saran, dan penjelasan yang diberikan selaku penguji sidang Tugas Akhir.

6. Ibu GA. Putri Saptawati dan Bapak Arya Adriansyah, S.T. atas diskusi tentang pengerjaan Tugas Akhir dan penelitian.

7. Cynthia Kustanto, Miridhani Riani Ningrum dan Yudi Rizkiadi untuk segala perhatian, dukungan, dan doa selama pengerjaan Tugas Akhir.

8. Teman seperjuangan pada berbagai masa : Arie Minandar Anggiat, Wulan Widyasari, Dini Rahmawati, Roni Sambiangga, Efendy Chalikdjen, Ridwan, Fitri Meiriza, dan Rindhu Astry.

9. Seluruh rekan-rekan asisten programming, angkatan IF 2003, dan PSM ITB, atas segala kenangan yang diberikan.

10. Semua staf akademik Program Studi Teknik Informatika yang telah memberikan banyak ilmu selama masa perkuliahan, juga semua staf non akademik.

Tidak lupa, penulis mengucapkan banyak terima kasih pada Papa, Mama, dan kakak tercinta atas segala kepercayaan, perhatian, dukungan, dan doanya.

Semoga Tugas Akhir ini dapat memberikan manfaat bagi semua pihak yang membutuhkannya. Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan. Oleh karena itu, saran dan kritik dari pembaca sangat penulis harapkan.

Bandung, Juni 2008 Penulis

(4)

ABSTRAK

Jumlah mahasiswa peserta mata kuliah pemrograman dasar pada Program Studi Sarjana Teknik Informatika ITB (S1-IF-ITB) yang mencapai lebih dari 300 mahasiswa sejak tahun 2006 telah membuat proses penilaian tugas program mahasiswa sangat menghabiskan sumber daya. Dengan demikian, otomasi penilaian terhadap source code serahan tugas siswa menjadi kebutuhan penting dalam proses pengajaran pemrograman. Dengan penilai otomatis (autograder), penilaian dapat dilakukan dengan lebih cepat dan objektif.

Dalam Tugas Akhir ini, akan dibuat suatu autograder diberi nama Phobos yang dirancang untuk mampu menilai secara blackbox dan whitebox. Penilaian blackbox dilakukan terhadap eksekusi program untuk menilai ketepatan program (persentase kasus uji benar) dan efisiensi (rata-rata panjang eksekusi). Penilaian whitebox dilakukan dengan memproses source code untuk menilai aspek kompleksitas solusi (SLoC, kompleksitas siklomatik) dan ketaatan pada standar tipografi (rata-rata jumlah baris dan panjang komentar, rata-rata panjang nama identifier, dan ketepatan indentasi). Bahasa pemrograman yang digunakan pada lingkungan S1-IF-ITB beragam, sehingga proses penilaian dalam Phobos juga dirancang untuk bersifat generik, yaitu dapat menangani lebih dari satu bahasa pemrograman dan dapat dikembangkan untuk menangani bahasa pemrograman lain di masa mendatang. Dalam pengembangannya kini, Phobos telah mampu menangani source code dalam bahasa Pascal dan Lisp. Penanganan source code pada Phobos dilakukan dengan interpretasi menggunakan modul interpreter yang telah dibangun secara khusus dalam Tugas Akhir ini untuk proses penilaian. Interpreter Phobos dirancang secara khusus dengan memperhatikan aspek-aspek pengajaran pemrograman, yaitu untuk mendeteksi kesalahan seperti infinite loop dan variabel yang tidak diinisiasi. Interpreter Phobos dirancang secara moduler agar dapat juga digunakan sebagai library untuk sistem lain atau sebagai alat bantu latihan pemrograman mandiri.

Phobos dikembangkan dengan antarmuka berbasis web menggunakan platform PHP agar diperoleh aksesibilitas dan integrasi yang mudah terhadap Learning Management System

milestone yang telah digunakan di lingkungan lab programming S1-IF-ITB. Autograder engine dan interpreter Phobos dikembangkan menggunakan Java dengan generator parser

Antlr sebagai library untuk memperoleh ekstensibilitas and independensi terhadap platform.

Phobos telah diuji untuk menilai source code serahan tugas yang serupa dengan tugas pemrograman dalam mata kuliah pemrograman dasar pada S1-IF-ITB.

(5)

ii

ABSTRACT

The number of students at the ITB Informatics Engineering Undergraduate Program (S1-IF-ITB) basic programming classes which had exceeded 300 in 2006 has made the assignment grading process very resource intensive. Therefore, automation of source code grading has become an important requirement. Using autograder, grading process can be done faster and more objectively.

In this final project, an autograder named Phobos will be developed to be capable of grading by blackbox methods and whitebox methods. Blackbox marking is performed on program execution to grade program correctness (percentage of correct test cases) and efficiency (average execution length). Whitebox marking is performed by processing the source code to grade solution complexity (SLoC, cyclomatic complexity) and compliance to typographic standards (average comment lines and length, average identifier name length and indentation check). Since programming languages used in S1-IF-ITB varies, Phobos’ marking process is designed to be generic, capable of handling multiple languages and extensible, can easily be developed to handle new languages in the future. In the current development, the languages handled on Phobos are Lisp and Pascal.

Source code handling on Phobos is done using a custom built interpreter which addresses programming education aspects, which are infinite loop detection and uninitialized variables. These interpreters had also been modularly designed with the capability to be used as a library to other systems or as an independent programming teaching tool.

Phobos is developed with a PHP web interface to achieve accessibility and easy integration to the Learning Management System milestone used in S1-IF-ITB environment. The

Phobos autograder engine and interpreters are developed in Java using Antlr parser generator as a library to achieve extensibility and platform independence. Phobos has successfully been tested to grade source codes similar to assignments given in elementary programming courses on Informatics Engineering study program.

Keywords: computer science education, automatic grading, programming exercise tools, multiple programming language, interpreter

(6)

DAFTAR ISI

Lembar Pengesahan Program Studi Sarjana Teknik Informatika ... ii

KATA PENGANTAR ... iii

ABSTRAK...i

ABSTRACT... ii

DAFTAR ISI... iii

DAFTAR LAMPIRAN...vi

DAFTAR GAMBAR ... viii

DAFTAR TABEL ...x

DAFTAR KODE ...xi BAB I PENDAHULUAN ...I-1 1.1 Latar Belakang ... I-1 1.2 Rumusan Masalah ... I-2 1.3 Tujuan ... I-3 1.4 Batasan Masalah... I-3 1.5 Metodologi... I-3 1.6 Sistematika Pembahasan... I-4 BAB II DASAR TEORI & STUDI LITERATUR ... II-1 2.1 Computer Aided Assessment (CAA)...II-1 2.1.1 Ikhtisar CAA...II-1 2.1.2 Penggunaan CAA untuk Pengajaran Pemrograman ...II-2 2.1.3 Implementasi CAA dalam Bentuk Source Code Autograder...II-3 2.1.3.1 ASSYST...II-4 2.1.3.2 CourseMaster ...II-5 2.1.3.3 GAME...II-6 2.1.3.4 Mooshak...II-8 2.2 Metodologi Penilaian Program ...II-9 2.2.1 Pendekatan Blackbox...II-9

(7)

iv

2.2.1.1 Ketepatan Sintaks & Semantik...II-10 2.2.1.2 Analisis Statik ...II-13 2.2.1.3 Analisis Dinamik ...II-13 2.2.1.4 Efisiensi...II-14 2.2.2 Pendekatan Whitebox...II-16 2.2.2.1 Kompleksitas ...II-16 2.2.2.2 Tipografi Kode...II-18 2.3 Bahasa Pemrograman dan Source Code...II-19 2.3.1 Ikhtisar Bahasa Pemrograman...II-20 2.3.2 Implementasi Bahasa Pemrograman...II-21 2.3.3 Teknik Pemrosesan Source Code...II-23 2.3.3.1 Analisis Leksikal ...II-24 2.3.3.2 Analisis Sintaks...II-25 2.4 Ringkasan ...II-30 BAB III ANALISIS...III-1 3.1 Deskripsi Sistem ... III-1 3.2 Penilaian Program Otomatis ... III-4 3.2.1 Proses Penilaian Source Code Manual ... III-5 3.2.2 Proses Penilaian Source Code Otomatis ... III-6 3.3 Spesifikasi Autograder Phobos ... III-8 3.3.1 Model Use Case untuk Phobos ... III-8 3.3.1.1 Diagram Use Case Phobos ... III-8 3.3.1.2 Skenario Penggunaan Phobos... III-10 3.3.2 Spesifikasi Fungsional Phobos... III-13 3.3.3 Spesifikasi Non Fungsional Phobos... III-16 3.3.4 Deskripsi Arsitektural Phobos... III-16 3.3.4.1 Manager... III-19 3.3.4.2 Oracle... III-20 3.3.4.3 WhiteboxMarkers... III-21 3.3.5 Analisis Prosesor Bahasa Pemrograman dalam Phobos... III-21 BAB IV PERANCANGAN ...IV-1 4.1 Autograder Engine ... IV-1 4.1.1 Manager ... IV-4 4.1.2 Oracle... IV-6 4.1.3 WhiteboxMarkers ... IV-7 4.1.4 Perancangan Interaksi Kelas untuk Proses Penilaian ... IV-8

(8)

4.2 Aplikasi Front-End ... IV-10 4.2.1 Halaman Utama ... IV-10 4.2.2 Halaman Formulir Skema Penilaian ... IV-11 4.2.3 Halaman Nilai Source Code... IV-11 4.2.4 Halaman Laporan Nilai ... IV-12 4.2.5 Halaman Hapus Data Penilaian... IV-13 4.3 Penyimpanan Data Persisten... IV-14 4.4 Interpreter Generik Phobos ... IV-14 BAB V IMPLEMENTASI DAN PENGUJIAN... V-1 5.1. Implementasi...V-1 5.1.1 Lingkungan Implementasi dan Pengembangan ... V-1 5.1.2 Batasan Implementasi... V-2 5.1.3 Implementasi Kelas ... V-2 5.1.4 Implementasi Antarmuka dan Penyimpanan Data Persisten... V-2 5.1.5 Implementasi Interpreter Spesifik Bahasa Pemrograman ... V-3 5.1.5.1 Proses Pengembangan Interpreter ... V-3 5.1.5.2 Perancangan Interpreter... V-5 5.1.6 Implementasi Ekstensibilitas Penilaian dan Bahasa Pemrograman ... V-8 5.2. Pengujian...V-9 5.2.1 Lingkungan Pengujian... V-9 5.2.2 Persiapan Pengujian ... V-10 5.2.2.1 Data Uji ... V-10 5.2.2.2 Instalasi Prototipe ... V-11 5.2.3 Kasus Uji ... V-11 5.2.3.1 Pengujian Unit ... V-11 5.2.3.2 Pengujian Fungsional berdasarkan Use Case... V-12 5.2.3.3 Pengujian Non-Fungsional ... V-13 5.2.4 Hasil Pengujian... V-14 BAB VI KESIMPULAN DAN SARAN...VI-1 6.1 Kesimpulan ... VI-1 6.2 Saran... VI-1 DAFTAR REFERENSI...i

(9)

vi

DAFTAR LAMPIRAN

LAMPIRAN A Besaran Kompleksitas Source Code... A-i A.1 Kompleksitas Siklomatik ... A-i A.2 Kompleksitas Halstead... A-ii A.3 Kompleksitas Henry dan Kafura... A-iii LAMPIRAN B Penilaian Tipografi Kode oleh Ceilidh... B-iv LAMPIRAN C Survei Bahasa-Bahasa Pemrograman yang Digunakan pada Program Studi

Sarjana Informatika ITB (S1-IF-ITB)... C-ix C.1 Lisp ... C-ix C.2 Pascal ...C-x C.3 C... C-xi C.4 C++ ... C-xii C.5 Java ... C-xiii LAMPIRAN D Skenario Use Case Phobos... D-xv D.1 Skenario Use Case Membuat Skema Penilaian ... D-xv D.2 Skenario Use Case Menilai Program ... D-xix D.3 Skenario Use Case Melihat Laporan Nilai ... D-xx D.4 Skenario Use Case Menghapus Laporan Nilai ... D-xx LAMPIRAN E Diagram Sequence Phobos...E-xxi E.1 Diagram Sequence Membuat Spesifikasi Tugas ...E-xxi E.2 Diagram Sequence Menilai Source Code ...E-xxii E.3 Diagram Sequence Melihat Laporan Nilai ... E-xxiii E.4 Diagram Sequence Menghapus Laporan Nilai ... E-xxiii LAMPIRAN F Penyimpanan Data Persisten...F-xxiv F.1 Penyimpanan Definisi Skema Penilaian ...F-xxiv F.2 Penyimpanan Laporan Hasil Penilaian ...F-xxvi LAMPIRAN G Panduan Pembuatan Interpreter Phobos... G-xxviii G.1 Spesifikasi Fitur... G-xxviii G.2 Definisi Grammar dan Pembangkitan Kelas-Kelas Prosesor... G-xxix G.3 Perancangan dan Implementasi Kelas-Kelas Eksekusi ... G-xxx LAMPIRAN H Interpreter Lisp Phobos... H-xxxii H.1 Spesifikasi Kebutuhan Fungsional... H-xxxii H.2 Batasan Implementasi Interpreter Lisp Phobos ... H-xxxiii H.3 Grammar Leksikal... H-xxxiii H.4 Grammar Sintaksis ... H-xxxv H.5 Perancangan Kelas-Kelas Eksekusi ... H-xxxv H.6 Pengujian Interpreter Lisp... H-xl LAMPIRAN I Interpreter Pascal Phobos...I-xlii

(10)

I.1 Spesifikasi Kebutuhan Fungsional...I-xlii I.2 Batasan Implementasi Interpreter Pascal Phobos... I-xliii I.3 Grammar Leksikal... I-xliii I.4 Grammar Sintaksis ...I-xlv I.5 Perancangan Kelas-Kelas Eksekusi ...I-xlix I.6 Pengujian Interpreter Pascal...I-lvi LAMPIRAN J Panduan Spesifikasi Tugas untuk Penilaian Automatis... J-lviii

(11)

viii

DAFTAR GAMBAR

Gambar II-1 Proses penilaian pada ASSYST [JAC97] ... II-4 Gambar II-2 Arsitektur Umum CourseMaster [SYM01] ... II-6 Gambar II-3 Arsitektur Umum GAME [BLU04]... II-7 Gambar II-4 Contoh Penerapan Semantik Aksiomatik [AAB04] ... II-12 Gambar II-5 Perbandingan Proses Kompilasi dan Interpretasi [COO03] ... II-22 Gambar II-6 Bagan Proses Kompilasi yang Disederhanakan [COO03] ... II-23 Gambar II-7 Diagram NFA untuk pola regular expression a(b|c)* [COO03] ... II-25 Gambar II-8 Grammar abstrak untuk bahasa pemrograman Wren [SLO95]... II-27 Gambar II-9 Pembangkitan pohon sintaks abstrak dari sebuah kalimat loop [SLO95] ... II-27 Gambar II-10 Ilustrasi Teknik Parsing Top-Down dan Bottom-Up [SLO95] ... II-28 Gambar III-1 Diagram Use-Case Sistem milestone ... III-2 Gambar III-2 Diagram Use CasePhobos... III-9 Gambar III-3 Skenario penggunaan Phobos untuk membuat definisi skema penilaian ... III-11 Gambar III-4 Skenario penggunaan Phobos untuk menilai source code... III-12 Gambar III-5 Skenario penggunaan Phobos untuk melihat laporan nilai... III-12 Gambar III-6 Skenario penggunaan Phobos untuk menghapus hasil penilaian ... III-13 Gambar III-7 Deskripsi Arsitektural Phobos... III-17 Gambar IV-1 Diagram Kelas Perancangan Autograder EnginePhobos... IV-2 Gambar IV-2 Diagram Kelas Perancangan Subsistem Manager bagian manajemen skema dan penilaian... IV-5 Gambar IV-3 Diagram kelas Subsistem Manager bagian manajemen laporan nilai ... IV-6 Gambar IV-4 Diagram Kelas subsistem Oracle ... IV-7 Gambar IV-5 Diagram Kelas subsistem WhiteboxMarkers... IV-8 Gambar IV-6 Diagram Kolaborasi untuk Proses Penilaian dalam Phobos... IV-9 Gambar IV-7 Rancangan generik antarmuka web Phobos... IV-10 Gambar IV-8 Rancangan Halaman Utama Phobos ... IV-10 Gambar IV-9 Rancangan Halaman Formulir Skema Penilaian Phobos ... IV-11 Gambar IV-11 Rancangan Halaman Nilai Source Code Phobos ... IV-12 Gambar IV-12 Rancangan Halaman Laporan Nilai Kolektif Phobos ... IV-12 Gambar IV-13 Rancangan Halaman Laporan Nilai Phobos ... IV-13 Gambar IV-14 Rancangan Halaman Hapus Data Penilaian Phobos ... IV-13 Gambar IV-15 Flowchart Pemrosesan Source Code pada Phobos... IV-15

(12)

Gambar IV-16 Diagram Kelas Perancangan Interpreter Phobos... IV-15 Gambar V-1 Arsitektur Interpreter Phobos ... V-5 Gambar V-2 Lingkungan pengujian Phobos ... V-10 Gambar VI-1 Representasi graf berarah untuk perhitungan kompleksitas siklomatik... A-i Gambar VI-2 Diagram kelas perancangan Interpreter Lisp Phobos... H-xxxvi Gambar VI-3 Diagram kelas perancangan Interpreter Pascal Phobos...I-l

(13)

x

DAFTAR TABEL

Tabel II-1 Format Ujian dengan Bantuan Sistem Komputer [CAR03] ... II-3 Tabel II-2 Kategori Hasil Evaluasi pada Mooshak [MOO08]... II-8 Tabel II-3 Teknik Penjabaran Semantik Program [AAB04] ... II-11 Tabel II-4 Representasi fungsi dalam berbagai model komputasional... II-20 Tabel II-5 Hirarki Chomsky untuk Tata Bahasa [SLO95] ... II-26 Tabel II-6 Ikhtisar Teknik Parsing [GRU98]... II-29 Tabel II-7 Ikhtisar jenis penilaian program, korelasi metode pengukurannya ... II-31 Tabel III-1 Perbandingan fitur proses penilaian manual, autograder yang sudah ada & Phobos

... III-8 Tabel III-2 Definisi Aktor dalam Diagram Use Case Phobos... III-9 Tabel III-3 Definisi Use-Case untuk Phobos... III-10 Tabel III-4 Jenis penilaian otomatis Phobos... III-14 Tabel III-5. Spesifikasi Fungsional Phobos... III-15 Tabel III-6. Pemetaan SRS terhadap Use-Case untuk Phobos... III-15 Tabel III-7. Kebutuhan Non-Fungsional Phobos... III-16 Tabel III-8 Tanggung Jawab Setiap Subsistem pada Autograder Engine Phobos, beserta

masukan yang dibutuhkan dan keluaran yang dihasilkan... III-18 Tabel IV-1. Daftar Kelas Perancangan untuk Autograder Engine... IV-3 Tabel V-1 Pengujian Unit untuk Kelas-Kelas Phobos ... V-11 Tabel V-2 Hasil Pengujian Use Case terhadap Phobos... V-12 Tabel V-3 Hasil Pengujian Kebutuhan Nonfungsional Phobos ... V-14 Tabel VI-1 Perbandingan singkat berbagai bahasa pemrograman ... C-ix Tabel VI-2 Kebutuhan Non Fungsional pada modul Interpreter Phobos ... G-xxix Tabel VI-3 Kebutuhan Fungsional Interpreter Lisp pada Phobos ... H-xxxii Tabel VI-4 Daftar kelas perancangan interpreter Lisp Phobos ... H-xxxvii Tabel VI-5 Hasil Pengujian Unit Interpreter LISP ... H-xl Tabel VI-6 Hasil Pengujian Non Fungsional terhadap Unit Interpreter LISP... H-xli Tabel VI-7 Kebutuhan Fungsional Interpreter Pascal pada Phobos ... I-xlii Tabel VI-8 Daftar Kelas Perancangan Interpreter Pascal Phobos ...I-li Tabel VI-9 Hasil Pengujian Unit Interpreter Pascal ...I-lvi Tabel VI-10 Hasil Pengujian Non Fungsional terhadap Unit Interpreter... I-lvii

(14)

DAFTAR KODE

Kode II-1 Perbandingan Penulisan Fungsi Fibonacci ... II-18 Kode V-1 Aturan Produksi Simbol Nonterminal <ifStatement> pada Pascal... V-7 Kode V-2 Contoh implementasi metode executeStatement pada kelas PascalIfStatement... V-8 Kode VI-1 Contoh Penulisan Kode yang Tepat ... B-vi Kode VI-2 Contoh Kode C yang Mengikuti Panduan Tipografi Ceilidh [ZIN91] ... B-viii Kode VI-3 Sebuah contoh program kecil dalam bahasa Lisp ... C-x Kode VI-4 Sebuah contoh program kecil dalam bahasa Pascal ... C-xi Kode VI-5 Sebuah contoh program kecil dalam bahasa C... C-xii Kode VI-6 Sebuah contoh program kecil dalam bahasa C++ ... C-xii Kode VI-7 Sebuah contoh program kecil dalam bahasa Java ... C-xiv Kode VI-8 Definisi Tipe Dokumen untuk Definisi Skema Penilaian ... F-xxv Kode VI-9 Sebuah contoh file XML untuk definisi skema penilaian ... F-xxv Kode VI-10 Definisi Tipe Dokumen untuk Laporan Hasil Penilaian ...F-xxvi Kode VI-11 Sebuah contoh file XML untuk laporan hasil penilaian ...F-xxvii Kode VI-12 Grammar leksikal untuk bahasa LISP ... H-xxxiv Kode VI-13 Grammar sintaksis untuk bahasa LISP... H-xxxv Kode VI-14 Grammar leksikal untuk bahasa Pascal ...I-xliv Kode VI-15 Grammar sintaksis untuk bahasa Pascal...I-xlix

Referensi

Dokumen terkait

Penelitian ini bertujuan untuk mengetahui pengaruh dan efektivitas implementasi Pendidikan Matematika Realistik dalam setting kooperatif tipe Think Pair Share (TPS) terhadap

Menetapkan : PERATURAN WALIKOTA TENTANG ALOKASI DANA HIBAH UNTUK REPLIKASI PENATAAN LINGKUNGAN PERMUKIMAN BERBASIS KOMUNITAS (REPLIKASI PLPBK) KOTA BANJARMASIN TAHUN

Dalam setiap ayat di bawah terdapat satu kesalahan bahasa aspek

Perceived quality dapat dimanfaatkan untuk melakukan perluasan merek dengan cara menggunakan merek tertentu yang sudah ada ke dalam kategori produk baru.. Alasannya, sebuah merek

..  ,nternational   -ournal of Pharm&#34;ech Research.  Life Sciences and   $edicine Research..  #asar)#asar $irobiologi.  Essentials of &amp;linical Peridontology

Jenis pigmen yang terdapat pada organ karapas dan lapisan epidermis kepiting pantai berbatu (G. albolineatus Lamarck) jantan adalah β-karoten, tipe ekinenon, astaksantin

Hasil penelitian memperlihatkan bahwa peningkatan umur defoliasi dari 30 menjadi 45 dan 60 hari pada rumput gajah umur dua tahun mengakibatkan peningkatan hasil hijauan segar,

2 Mengeksekusi source code 2.1 Eksekusi source code sesuai dengan mekanisme eksekusi source code dari tools pemrograman yang digunakan 2.2 Identifikasi perbedaan antara