5
BAB II
TINJAUAN PUSTAKA
2.1 Algoritma Pengacakan fisher-Yates
Pengacakan Fisher-Yates adalah algoritma yang dapat menciptakan permutasi acak dari kumpulan yang terhingga, atau bisa mengacak kumpulan tersebut. Prosedur dasar Fisher-Yates hampir sama juga dengan prosedur acak tiket bernomor yang keluar dari tumpukan [7].
Fisher-Yates Shuffle dapat dipakai dengan cara original methode atau bisa juga dengan cara modern methode [10]. Metode original dikenalkan tahun 1983, cara kerjanya yaitu dengan pengambilan secara terus menerus dari unsur daftar inputan serta dituliskannya ke dalam daftar outputan kedua. Cara pendekatan ini digunakan secara umum oleh orang-orang dengan selembar kertas dan pensil.
Metode modern dapat diuraikan dalam bentuk digital (komputer/laptop/tablet) yang diperkenalkan oleh Richard Durstenfield di tahun 1964. Alasan metode modern diperkenalkan adalah penggunaannya lebih mudah dan unggul daripada metode original. Algoritma ini berbeda dengan originalnya, karena bersifat digital dan sangat matematis. Cara yang dilakukan oleh metode ini adalah dengan memindahkan nilai angka yang terakhir ke dalam angka yang dikeluarkan, dan merubah nilai angka yang dikeluarkan menjadi nilai angka terakhir yang tetap dan tidak akan terambil lagi. Hal ini berlaku untuk setiap pengambilan dan akan berlaku untuk seterusnya [8].
Proses pengacakan Algoritma Fisher-Yates Shuffle yang akan dijabarkan dengan Flowhart dapat dilihat pada Gambar 2.1 berikut:
6 Gambar 2.1 Flowchart Algoritma Fisher-Yates Shuffle
Pada Gambar 2.1 dapat dilihat algoritma Fisher-Yates Shuffle berfungsi sebagai pengacak urutan data dengan awal penentuan angka N untuk rentan 1-N.
kemudia menentukan angka acak k dari rentan 1-N, angka 0 dan angka yang melebihi nilai N tidak diperbolehkan. Posisi k ditukar dengan angka yang terakhir rentan 1-N diposisi yang terpisah. Selanjutnya mengatur ulang N, N=1. Jika N menunjukkan nilai 0, maka pengacakan akan dihentikan [8].
2.2 Penelitian Terkait
Terdapat penelitian yang sudah mencoba mengembangkan aplikasi ujian online atau test online dengan implementasi algoritma pengacakan fisher yates yang dilakukan oleh M. A. Hasan, Supriadi, Zamzami, dalam jurnal yang berjudul
”Implementasi Algoritma Fisher-Yates Untuk Mengacak Soal Ujian Online Penerimaan Mahasiswa Baru (Studi Kasus : Universitas Lancang Kuning Riau)”
pada riset ini menggunakan beberapa langkah metode penelitian diantaranya Identifikasi Masalah, Melakukan Studi Literatur, Mengumpulkan Data, Menganalisa Data, Menganalisa Algoritma, Mendesain Sistem, Implementasi Sistem, Menguji hasil. Metode tersebut dapat ditemukan hasil dimana seluruh pertanyaan akan diproses atau diacak dengan algoritma lalu akan mendapatkan
7 suatu pertanyaan-pertanyaan dengan perubahan posisi. Oleh karena itu para peserta ujian tidak sama bentuk dan urutan soalnya. [12]
Pengacakan soal merupakan suatu proses mengubah urutan soal-soal sehingga teracak untuk membentuk paket-paket soal. Dengan menggunakan algoritma Fisher-Yates membuat soal-soal diacak secara random. [12]
Tahap berikutnya setelah memasukan atribut dari contoh pertanyaan yang telah dibuat, hal pertama yang dilakukan adalah menentukan artribut soal dalam deret nilai atau list pertanyaan yang akan terpilih, Lalu proses selanjutnya membuat rentan atau total pertanyaan yang akan terpilih, selanjutnya melakukan pengacakan, kemudian menampilkan gulir (untuk pertanyaan-pertanyaan yang telah terpilih dari seluruh pertanyaan yang ada). Hal selanjutnya adalah pertanyaan-pertanyaan terpilih diletakkan kedalam hasil (hasil dari pertanyaan yang telah diacak). Dari proses manual pengacakan dapat dibuatkan tabel dengan total pertanyaan sebanyak 10 buah dapat dilihat pada tabel 2.1 berikut ini:
Tabel 2.1 Tabel Soal Pengacakan Algoritma Fisher-Yates
Rentan Gulir Deret Nilai Hasil
1,2,3,4,5,6,7,8,9,10 1 – 10 4 1,2,3,5,6,7,8,9,10 4
1 – 9 7 1,2,3,5,6,7,9,10 8,4
1 – 8 6 1,2,3,5,6,9,10 7,8,4
1 – 7 2 1,3,5,6,9,10 2,7,8,4
1 – 6 4 1,3,5,9,10 6,2,7,8,4
1 – 5 5 1,3,5,9 10,6,2,7,8,4
1 – 4 1 3,5,9 1,10,6,2,7,8,4
1 – 3 3 3,9 5,1,10,6,2,7,8,4
1 – 2 2 3 9,5,1,10,6,2,7,8,4
3,9,5,1,10,6,2,7,8,4 Pada penelitian selanjutnya dilakukan oleh J. M. Hudin, Y. Farlina, E. Wati, dalam jurnal yang berjudul “Penerapan Metode Fisher Yates Shuffle Untuk Sistem Informasi Ujian Online Pada Smkn P 1 Sukaraja,” dengan menggunakan tambahan metode Rapid Application Development. Aplikasi ini dekembangkan dengan menggunakan prototype sebagai yang mempercepat analisa kebutuhan pada desain sistem. Penelitian ini menerapkan algoritma Fisher-Yates Shuffle di dalam metode pengacakan soalnya, letak jawaban memiliki pengeluaran di tiap tingkatan. Soal-
8 soal yang telah diacak oleh algoritma Fisher-Yates Shuffle menjadi berbeda dari sebelumnya untuk pengurutan soalnya, fungsi tersebut membuat soal tidak muncul secara berulang dan pengguna tidak bosan jika mengerjakan soal karena tidak mendapatkan soal yang berbeda [3].
Adapun tahapan proses pengacakannya yaitu pertama penentuan angka N untuk rentan 1-N. kemudia menentukan angka acak x dari rentan 1-N, angka 0 dan angka yang melebihi nilai N tidak diperbolehkan. Posisi k ditukar dengan angka yang terakhir rentan 1-N diposisi yang terpisah. Selanjutnya mengatur ulang N, N=1. Jika N menunjukkan nilai 0, maka pengacakan akan dihentikan
Pengacakan soal dan jawaban untuk game matematik dengan 2 operan dan 1 operator, dimana setiap operan A dan B diacak.
Operan A dan B memiliki aray sendiri dalam hal mengacak, angka (operan) adalah isi dari array A dan B. Sehingga pengeluaran angkanya teracak. Pengacakan selanjutnya yaitu jawabannya. Pengacakan ini merupakan pengacakan jawaban yang posisinya akan diacak dengan jawaban yang salah, serta melakukan penambahan atau pengurangan, yaitu dengan -1, + 1 dan + 2. Ini dapat menjadikan pengguna untuk lebih cermat menjawab soal-soalnya. Untuk acak jawabannya dibuatkan aray seperti ini {nilai, nilai– 1, nilai+1, nilai+2}.
2.3 Ujian Pretest dan Posttest Kursus Pembina Pramuka
Berdasarkan petunjuk penyelenggaraan Kwartir Nasional Gerakan Pramuka No. 48 Tahun 2018 tentang sistem Pendidikan dan Pelatihan Gerakan Pramuka, ujian pretest dan posttest dilakukan untuk mengetahui tngkat pengetahuan peserta kursus sebelum mengikuti kursus serta setelah mengikuti kursus. Ujian pretest dilaksanakan sebelum kursus dimulai untuk mengetahui tingkat pengetahuan awal peserta kursus. Sedangkan ujian posttest dilakukan setelah proses kursus selesai atau dilakukan diakhir kursus untuk mengetahui tingkat penguasaan materi yang diterima oleh peserta [15]
9 2.4 Java
Java merupakan bahasa pemrograman yang bisa dipakai di perangkat elektronik seperti komputer, hand phone serta perangkat lain yang mendukung penggunaan bahasa java. Java bisa dibuka di semua system operasi meliputi windows, linux, macintosh dan sebagainya. Java dikenal memiliki selogan yang berbunyi “tulis sekali, jalankan dimanapun”. Pertama adanya bahasa java yaitu dari seseorang bernama James Gosling saat dia berada di Sun Microsystem yang sekarang termasuk kedalam bagian Oracle dan rilis tahun 1995. Bahasa java banyak menggunakan sintak yang ada merupakan bahasa dari pemograman C dan C++
akan tetapi lebih sederhana.
Java merupakan bahasa mesin tingkat tinggi, Bahasa java disusun dari bagian yang disebut kelas. Kelas pada bahasa java terdiri dari bebrapa metode yang melakukan pekerjaan dan mengembalikan informasi. Java juga mempunya pustaka kelas yang dikenal dengan API (application programing interface), sekumpulan kelas itu dikelompokkan menjadi package. Kelas adalah satu-satunya cara untuk mengeksekusi program. dalam pengembangan aplikasi ini, digunakan bahasa pemrograman java sebagai pendukung pembuatan aplikasi pada android studio.
2.5 Database
Database adalah sekumpulan data yang dapat diatur sehingga data tersebut bisa dirubah, didapatkan, dan dicari dengan cepat. database disini juga mempunyai isi metadata. Metadata merupakan data yang menjabarkan struktur dari data seperti, data nama kolom dan tipe yang ditampilkan. Database mempunyai model- model lain diantaranya yaitu model relasional. Model relasional tabel-tabel terletak pada suatu database biasanya saling berkaiatan anatara satu sama lain. Relasi antar tabel bisa dibuat dengan menggunakan kolom yang ada pada tabel-tabel yang terkait, yang dilalui pendefinisian constraint (primary key dan foreign key).
Constraint dapat memberikan izin pada pengguna sebagai penjaga integritas data dan sebagai penyaring data yang tersimpan pada database. Constraint merupakan pendefinisi nilai atau yang bisa disimpan pada database dengan operasi insert, update, atau delete.
10 Primary key merupakan sebuah aturan yang memastikan dalam setiap baris data pada sebuah table bersifat unik. Penerapan Primary key yaitu pada kolom- kolom yang akan diterapkan sebagai pembeda. Foreign key sendiri difungsikan sebagai pendefinisi kolom-kolom pada sebuah tabel dimana nilainya mengacu terhadap tabel lain. Kolom-kolom yang pendefinisiannya sebagai foreign key nilainya dapat diambil dari nilai kolom yang terdapat pada tabel lain. Apabila nilai yang di inputkan kedalam tabel foreign key tidak terdapat pada tabel yang telah diacu maka yang terjadi server database otomatis menolaknya.
Unique pada database pada dasarnya mempunyai kesamaan seperti primary key, yaitu sebagai yang memastikan bahwasanya pada tiap baris data yang terdapat pada sebuah tabel yang mempunyai sifat unik (berbeda). Adapaun perbedaan pada unique pengguna dibolehkan menginput nila null.
Check pada database difungsikan sebagai pembatas nilai-nilai yang dapat diinputkan kedalam kolom didalam tabel itu sendiri antara lain, kolom jenis kelamin dapat dibatasi yang berupa pria dan wanita, apabila selain nilai tersebut maka akan terjadi penolakan oleh server database.
Indeks pada database merupakan sebuah objek database yang berguna untuk proses pengambilan data agar lebih cepat, pengurutan ataupun pencarian data dalam suatu tabel pada database. Data pada tabel yang telah diindeks akan dilakukan pengurutan yang berdasarkan kolom indeks. Dalam pembuatan aplikasi ini, database berguna sebagai penyimpanan data yang diinput oleh peserta,pemateri maupun admin.
2.6 MYSQL
MYSQL adalah software RDBMS atau (server database) yang bisa melakukan pengolahan database secara cepat, selain itu MYSQL bisa menyimpan data dengan kapasitas yang besar, dan dapat dilihat oleh semua pengguna, dan dapat memeroses secara bersamaan. Terdapat dua versi dari MYSQL yaitu versi open source yang gratis dan versi komersial yang harus bayar. Dalam pembuatan aplikasi pada skripsi ini MYSQL akan menjadi aplikasi pengolah database yang digunakan.
11 2.7 Android
Android adalah sistem yang pada dasarnya adalah Linux yang ditujukan untuk handphone smart phone serta tablet. Android menyajikan platform open source yang berguna untuk developer untuk membuat aplikasinya sendiri.
Mulanya Google Inc. Mengakusisi Android Inc., kemudian android dikembangkan lagi dengan bentuk Open Handset Alliance. Penerbitan android awalnya tanggal 05 november 2007. Perkembangan versi android dari tahun 2007 sampai tahun 2018 mulai dari Android versi 1.1, Android versi 1.5 (Cupcake), Android versi 1.6 (Donut), Android versi 2.0/2.1 (Eclair), Android versi 2.2 (Froyo/Frozen Yogurt), Android versi 2.3 (Gingerbread), Android versi 3.0/3.1 (Honeycomb), Android versi 4.0 - 4.0.4 (ICS/Ice Cream Sandwich), Android versi 4.1 – 4.3.1 (Jelly Bean), Android versi 4.4 (Kitkat), Android versi 5.0 (Lollipop), Android versi 6.0 (Marshmallow), Android versi 7.0 (Nougat), Android versi 8.0 (Oreo).
Terdapat fitur yang disediakan di android, antaralain:
Bentuk aplikasi: dapat membuat pengguna android untuk menghapus dan menambah elemen yang telah ada.
Mesin virtual dalvik: pengoptimalan pada mesin virtual untuk perangkat mobile.
Grafik: grafik 2D dan 3D didasarkan oleh OpenGL.
Sqlite: berguna untuk menyimpan data.
Media: android juga telah didukung oleh media diantaranya, audio, video, serta beberapa format gambar seperti MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF, dan sebagainya.
2.8 Android Studio
Menurut pengembang android studio merupakan lingkungan development terpadu atau sering disebut IDE. diperuntukkan sebagai pengembang aplikasi android yang didasarkan oleh intelliJ IDEA. Android studio berguna untuk pengedit kode intelliJ serta sebagai gawai pengembang yang mempunyai daya guna, fitur- fitur android studio adalah sebagai berikut:
12
Versi sistem yang berbasis grandle dan lebih fleksible.
Memiliki kecepatan emulator yang cukup dan kaya akan fitur.
Pengembangan bagi semua perangkat android disatukan dalam satu lingkungan.
Untuk memberikan aplikasi yang sedang berjalan tanpa perlu membuat APK baru perubahan, maka menggunakan instant run.
Membuat fitur yang sama pada aplikasi dan mengambil ke contoh maka menggukana template kode dan integrasi GitHub.
Android studio memiliki alat yang digunakan untuk pengujian dan bagan kerja yang ekstensif.
Untuk menaikkan kualitas kerja, manfaat, kompatibilitas versi maka bisa menggunakan alat lint.
Android studio juga didukung dengan bahasa pemrograman C++ dan NDK.
Didukung dengan bawaan untuk Google Cloud Platform.
proyek pada android studio berisi beberapa modul dengan sumber kode file dan sumber daya file. Jenis modul yang membackup antaralain:
Modul aplikasi android.
Modul pustaka.
Modul Google App Engine.
Disetiap aplikasi modul android berisi folder berikut:
Manifest yang didalamnya memiliki file AndroidManifest .xml
Java yang didalamnya memiliki kode sumber java, kode pengujian Junit juga termasuk didalamnya.
Res yang didalamnya memiliki segala sumber daya bukan kode, seperti tata letak XML, string, UI, dan gambar bitmap.
Pada Software ini memakai Grandle untuk landasan dari sistem versi. Selain versi android yang berbeda-beda pengguna juga bisa merancang berbagai APK berdasar padatnya layar atau ABI menggunakan pemisah APK. Dalam android studio penyusun sumber daya akan otomatis menghilangkan sumber daya yang tak
13 terpakai di aplikasi. Android studio adalah software yang dipakai penulis untuk merancang apliaksi ini.
2.9 Android SDK
Android SDK (software development kit) merupakan set alat untuk membuat atau mengembakngkan aplikasi android. Android SDK memiliki komponen seperti pustaka yang diperlukan oleh android, debugger, emulator, sumber kode dan dokumentasi untuk aplkikasi android atau API.
Android SDK bisa membuat program menggunakan fitur yang terbaru, developer wajib memiliki SDK dengan versi yang sesuai dengan ponsel tertentu.
Oleh sebabitu itu saat Google merilis versi baru dari android, maka akan ada android SDK baru yang dirilir juga.