LAMPIRAN 1. Listing Program

dokumen-dokumen yang mirip
BAB 4 IMPLEMENTASI DAN EVALUASI PROGRAM. dengan perangkat yang digunakan. Beberapa kriteria standar ditentukan agar sistem

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM. dirancang dan selanjutnya dapat diketahui gambaran dan kemampuan sistem secara

Belajar ArrayList di Java

TEORI BAHASA DAN AUTOMATA

MODUL III ARRAYLIST TUGAS PENDAHULUAN

BAHASA PEMROGRAMAN JAVA

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

LAMPIRAN A. Universitas Sumatera Utara

Praktikum KPLBO Final Object Concept I

FINITE STATE AUTOMATA

2 TIPE DATA DAN VARIABEL

Score: 94.0 Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

Badiyanto, S.Kom., M.Kom. PBO java

Modul Praktikum 3 Pemograman Berorientasi Objek

1, 2, 3

Percabangan & Perulangan

BAB II VARIABEL DAN TIPE DATA

Membuat dan Menggunakan Class

Praktikum Stack. A. Stack Collection di java.util.collection. Percobaan 1. Percobaan 2. import java.util.iterator; import java.util.

B.1 Mengurutkan Objek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

Pengenalan JavaScript

FINITE STATE MACHINE / AUTOMATA

Permainan Remi Sederhana

B.1 Mengurutkan Obyek String Terdapat array dengan tipe String, untuk mengurutkan data String pada array gunakan Arrays.sort().

Exception Handling and Multithreading

DASAR PEMOGRAMAN JAVA

Pemrograman Berorientasi Obyek. Dasar Pemrograman Java

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

Java Generic & Collection

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

SUMBER BELAJAR PENUNJANG PLPG

Bahasa Pemrograman :: Polimorfism and Abstraction

Gambar 1. Single Linked List

Teori Bahasa Formal dan Automata

Gambar 1. Ilustrasi Stack

BAB 1 PENDAHULUAN. sederhana adalah kelas bahasa reguler (regular languages). Bahasa reguler dapat dengan

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Elemen Dasar Dalam Bahasa Java

Grouping Object. Viska Mutiawani, M.Sc

Pada akhir pertemuan ini, diharapkan mahasiswa memiliki kemampuan untuk: Menggunakan struktur kendali pencabangan bersyarat dalam bahasa pemrograman.

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Non-Deterministic Finite Automata

Gambar 1. Single Linked List

Gambar 1. Single Linked List

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

NonDeterministic Finite Automata. B.Very Christioko, S.Kom

PERCOBAAN 1 : Ketik program di bawah ini, bila terjadi kasalahan waktu compile dan runtime, betulkan!

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Bab Hasil Pembuatan Aplikasi

Tipe if : If tanpa else (if) If dengan else (if-else) Nested if

Pemrograman Berorientasi. Array dan Collections

IF PEMROGRAMAN LANJUT PERULANGAN. Oleh : Andri Heryandi, M.T.

PEMROGRAMAN JAVA. Yoannita, S.Kom. Input Kondisi (IF-ELSE, SWITCH)

A. Judul Percobaan/praktikum Tipe Data, Keyword, Variabel, Operator dan Teknik Konfersi

Lab. Common Computing Universitas Trunojoyo Madura. Praktikum Pengantar Algoritma Pemrograman (ALPRO) [MODUL]

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Pemrograman Berorientasi Obyek (IT251) Ramos Somya, S.Kom., M.Cs.

Praktikum KPLBO Relasi Objek I

Perulangan / Looping

Percabangan dan Perulangan

PEMAHAMAN DASAR DASAR JAVA

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

1. Pelajari program berikut,kemudian modifikasi program dengan ketentuan berikut

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

Riwayat Pendidikan: SDK Lemuel II, Pos Pengumben, Jakarta Barat SMPK Lemuel, Pos Pengumben, Jakarta Barat SMUN 78, Kemanggisan, Jakarta Barat

Inheritance dan Kata Kunci static

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

Pemrograman Fery Updi,M.Kom

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Obyektif : KONTROL ALUR PROGRAM

IKG2I4 / Software Project I

Pengenalan Bahasa Pemrograman Java

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

INSTITUT TEKNOLOGI SUMATERA COLLECTION: SET DAN MAP

TEORI BAHASA DAN AUTOMATA

Politeknik Elektronika Negeri Surabaya

MODUL 4: Nondeterministic Finite Automata

Anonymous Inner Class

Pertemuan 2 Struktur Kontrol Percabangan

Kelompok 12. Thread Java

Modul 2 Dasar Pemrograman Java. Oleh: Mike Yuliana PENS-ITS

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

BAB IV HASIL PENELITIAN DAN PENERAPAN

- Menuliskan business logic dari aplikasi untuk mengakses data source

Tutorial Pemrograman dengan Bahasa Java

Deterministic Finite Automata

PEMODELAN PERANGKAT LUNAK UNTUK PENGERTIAN DETERMINISTIC FINITE AUTOMATA DAN NON-DETERMINISTIC FINITE AUTOMATA

Praktikum tentang Collection Permainan Remi

Jobsheet 16 String dan Collection (List, Set, Map)

MATERI PRAKTIKUM 2 ARRAY

KONSEP DASAR PEMROGRAMAN BERORIENTASI OBYEK

Pemrograman Berorientasi Object

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pertemuan 2 (2) : Membuat Class dan mengakses Anggota Class

Nanik Tolaram

Transkripsi:

96 LAMPIRAN 1 Listing Program FAAlphabet.java package edu.usfca.vas.machine.fa; import edu.usfca.vas.app.preferences; import edu.usfca.xj.foundation.xjxmlserializable; import java.util.iterator; import java.util.linkedhashset; import java.util.set; public class FAAlphabet implements XJXMLSerializable protected Set symbols = new LinkedHashSet(); protected transient FAMachine machine = null; public void setmachine(famachine machine) this.machine = machine; public void setsymbolsstring(string s) symbols.clear(); for(int c=0; c<s.length(); c++) symbols.add(string.valueof(s.charat(c))); public String getsymbolsstring() String s = ""; Iterator iterator = symbols.iterator(); s += iterator.next(); return s;

97 public void addsymbol(string s) symbols.add(s); public void setsymbols(set symbols) this.symbols = symbols; public Set getsymbols() if(machine!= null && machine.gettype() == FAMachine.MACHINE_TYPE_NFA) symbols.add(preferences.getepsilontransition()); return symbols;

98 FAMachine.java package edu.usfca.vas.machine.fa; import edu.usfca.xj.foundation.xjxmlserializable; import java.util.hashset; import java.util.iterator; import java.util.list; import java.util.set; public class FAMachine implements XJXMLSerializable public static final int MACHINE_TYPE_DFA = 0; public static final int MACHINE_TYPE_NFA = 1; protected FAStates states = new FAStates(); protected FAAlphabet alphabet = new FAAlphabet(); protected FATransitions transitions = new FATransitions(); protected Set stateset; protected int type = MACHINE_TYPE_DFA; protected transient String debugstring; protected transient String debuglastsymbol; public FAMachine() init(); public FAMachine(Set statesset, Set transitionsset, String startstate, List finalstates) init(); addstate(statesset, startstate, finalstates); addtransitions(transitionsset); public void init() alphabet.setmachine(this); alphabet.setsymbolsstring("01"); stateset = new HashSet();

99 public void setstates(fastates states) this.states = states; public FAStates getstates() return states; public void setalphabet(faalphabet alphabet) this.alphabet = alphabet; alphabet.setmachine(this); public FAAlphabet getalphabet() return alphabet; public void settransitions(fatransitions transitions) this.transitions = transitions; public FATransitions gettransitions() return transitions; public void addstate(fastate s) states.addstate(s); public void addstate(set set, String startstate, List finalstates) Iterator iterator = set.iterator(); Set stateset = (HashSet)iterator.next(); FAState state = new FAState(stateSet.toString()); for(int f=0; f<finalstates.size(); f++)

100 if(stateset.contains(finalstates.get(f))) state.accepted = true; break; if(state.name.equals(startstate)) state.start = true; addstate(state); public void removestate(fastate s) states.removestate(s); transitions.removestate(s.name); public void renamestate(fastate s, String oldname, String newname) s.name = newname; transitions.renamestate(oldname, newname); public boolean containsstatename(string name) return states.contains(name); public List getstatelist() return states.getstates(); public List getstatenames() return states.getstatenames(); public void settype(int type) this.type = type; public int gettype()

101 return type; public void setsymbolsstring(string s) alphabet.setsymbolsstring(s); public String getsymbolsstring() return alphabet.getsymbolsstring(); public void addsymbol(string s) alphabet.addsymbol(s); public Set getsymbols() return alphabet.getsymbols(); public void addtransitionpattern(string s1, String pattern, String s2) transitions.addtransitionpattern(s1, pattern, s2); public boolean containstransition(string s1, String symbol, String s2) return transitions.containstransition(s1, symbol, s2); public void addtransitions(set set) Iterator iterator = set.iterator(); transitions.addtransition((fatransition)iterator.next()); public void removetransitionpattern(string s1, String pattern, String s2) for(int i=0; i<pattern.length(); i++) transitions.removetransition(s1, pattern.substring(i, i+1), s2);

102 public void clear() states.clear(); transitions.clear(); public String check() if(type == MACHINE_TYPE_DFA) String error = states.check(); if(error!= null) return error; error = transitions.check(alphabet.getsymbols().size(), states); if(error!= null) return error; return null; public boolean accept(string s) reset(); stateset = getstartstates(); for(int i=0; i<s.length(); i++) put(s.charat(i)); return isacceptedstate(stateset); public boolean isaccepting() return isacceptedstate(stateset); public void setstateset(set stateset) this.stateset = stateset; public Set getstateset() return stateset;

103 public Set getlasttransitionset() return gettransitions().getlasttransitionset(); public Set getstartstates() return transitions.getepsilonclosurestateset(states.getstartstate()); public Set getnextstateset(set stateset, String symbol) return getstateset(stateset, symbol); public boolean isacceptedstate(string state) return states.isaccepted(state); public boolean isacceptedstate(set stateset) return states.isaccepted(stateset); // *** Conversion public FAMachine convertnfa2dfa() Set dfastatesset = new HashSet(); Set transitionsset = new HashSet(); String startstate = states.getstartstate(); Set startset = new HashSet(); startset.add(startstate); dfastatesset.add(startset); recursivebuilddfa(startset, dfastatesset, transitionsset); return new FAMachine(dfaStatesSet, transitionsset, startset.tostring(), states.getfinalstates()); public void recursivebuilddfa(set statesset, Set dfastatesset, Set transitionsset) Iterator iterator = alphabet.getsymbols().iterator();

104 String symbol = (String)iterator.next(); Set newset = getstateset(statesset, symbol); if(newset.size()>0) transitionsset.add(new FATransition(statesSet.toString(), symbol, newset.tostring())); if(!dfastatesset.contains(newset) && newset.size()>0) dfastatesset.add(newset); recursivebuilddfa(newset, dfastatesset, transitionsset); public Set getstateset(set statesset, String symbol) Set newstateset = new HashSet(); Iterator iterator = statesset.iterator(); String state = (String)iterator.next(); Set set = transitions.getclosurestateset(state, symbol); if(set.size()>0) newstateset.addall(set); return newstateset; // *** Debug methods public void debugreset(string s) reset(); debugstring = s; public boolean debugstepforward() if(debugstring.length() == 0) return false; if(stateset.isempty()) stateset = getstartstates();

105 transitions.getlasttransitionset().clear(); put(debugstring.charat(0)); debuglastsymbol = debugstring.substring(0, 1); debugstring = debugstring.substring(1); if(stateset.isempty()) return false; else return debugstring.length() > 0; public String debuglastsymbol() return debuglastsymbol; public String debugstring() return debugstring; public String tostring() String s = "Description of the machine:\n"; s += states; s += transitions; return s; // *** Processing methods public void reset() stateset.clear(); transitions.getlasttransitionset().clear(); debuglastsymbol = ""; public void put(char c) stateset = getnextstateset(stateset, String.valueOf(c));

106 FAState.java package edu.usfca.vas.machine.fa; import edu.usfca.xj.foundation.xjxmlserializable; public class FAState implements XJXMLSerializable public String name = null; public boolean start = false; public boolean accepted = false; public static FAState createstate(string name) return new FAState(name); public static FAState createstartstate(string name) return new FAState(name, true, false); public static FAState createacceptedstate(string name) return new FAState(name, false, true); public FAState() public FAState(String name) this.name = name; public FAState(String name, boolean start, boolean accepted) this.name = name; this.start = start; this.accepted = accepted; public String getname() return name;

107 public void setname(string name) this.name = name; public boolean isstart() return start; public void setstart(boolean start) this.start = start; public boolean isaccepted() return accepted; public void setaccepted(boolean accepted) this.accepted = accepted; public String tostring() String s = ""; s += "< name = "+name+">"; s += "< start = "+start+">"; s += "< accepted = "+accepted+">"; return s;

108 FAStates.java package edu.usfca.vas.machine.fa; import edu.usfca.vas.app.localized; import edu.usfca.xj.foundation.xjxmlserializable; import java.util.arraylist; import java.util.iterator; import java.util.list; import java.util.set; public class FAStates implements XJXMLSerializable protected List states = new ArrayList(); public FAStates() public void addstate(fastate s) states.add(s); public void removestate(fastate s) states.remove(s); public void setstates(list states) this.states = states; public List getstates() return states; public ArrayList getstatenames() ArrayList names = new ArrayList(); for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); names.add(wrapper.name);

109 return names; public boolean contains(string name) for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.name.equals(name)) return true; return false; public void clear() states.clear(); public int numberofstartstates() int count = 0; for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.start) count++; return count; public int numberofacceptedstates() int count = 0; for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.accepted) count++; return count; public String check() if(numberofacceptedstates() == 0)

110 return Localized.getString("faNoAcceptedState"); if(numberofstartstates() == 0) return Localized.getString("faNoStartState"); if(numberofstartstates() > 1) return Localized.getString("faMultipleStartStates"); return null; public String getstartstate() for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.start) return wrapper.name; return null; public List getfinalstates() List finalstates = new ArrayList(); for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.accepted) finalstates.add(wrapper.name); return finalstates; public boolean isaccepted(string state) for(int i=0; i<states.size(); i++) FAState wrapper = (FAState)states.get(i); if(wrapper.name.equals(state)) return wrapper.accepted; return false; public boolean isaccepted(set stateset) Iterator iterator = stateset.iterator();

111 if(isaccepted((string)iterator.next())) return true; return false; public String tostring() String s = "* states *\n"; for(int i=0; i<states.size(); i++) FAState state = (FAState)states.get(i); s += state+"\n"; return s;

112 FATransition.java package edu.usfca.vas.machine.fa; import edu.usfca.xj.foundation.xjxmlserializable; public class FATransition implements XJXMLSerializable public String s1; public String symbol; public String s2; public FATransition() public FATransition(String s1, String symbol, String s2) this.s1 = s1; this.symbol = symbol; this.s2 = s2; public String gets1() return s1; public void sets1(string s1) this.s1 = s1; public String getsymbol() return symbol; public void setsymbol(string symbol) this.symbol = symbol; public String gets2() return s2;

113 public void sets2(string s2) this.s2 = s2; public String tostring() return "<"+s1+", "+symbol+" -> "+s2+">";

114 FATransitions.java package edu.usfca.vas.machine.fa; import edu.usfca.vas.app.localized; import edu.usfca.vas.app.preferences; import edu.usfca.vas.machine.tool; import edu.usfca.xj.foundation.xjxmlserializable; import java.util.*; public class FATransitions implements XJXMLSerializable protected List transitions = new ArrayList(); protected transient Set lasttransitionset = new HashSet(); public static transient String epsilonsymbol = null; public FATransitions() public String getepsilonsymbol() if(epsilonsymbol == null) return Preferences.getEpsilonTransition(); else return epsilonsymbol; public void addtransitionpattern(string s1, String pattern, String s2) Iterator iterator = Tool.symbolsInPattern(pattern).iterator(); addtransition(s1, (String)iterator.next(), s2); public void addtransition(string s1, String symbol, String s2) transitions.add(new FATransition(s1, symbol, s2)); public void addtransition(fatransition transition) transitions.add(transition);

115 public boolean containstransition(string s1, String symbol, String s2) Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(s1) && w.s2.equals(s2) && w.symbol.equals(symbol)) return true; return false; public void settransitions(list transitions) this.transitions = transitions; public List gettransitions() return transitions; public void removetransition(string s1, String symbol, String s2) Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(s1) && w.s2.equals(s2) && w.symbol.equals(symbol)) transitions.remove(w); iterator = transitions.listiterator(); public void removestate(string s) Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(s) w.s2.equals(s)) transitions.remove(w);

116 iterator = transitions.listiterator(); public void renamestate(string oldname, String newname) Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(oldname)) w.s1 = newname; if(w.s2.equals(oldname)) w.s2 = newname; public void clear() transitions.clear(); public int transitioncountforstate(string s) int count = 0; Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(s)) count++; return count; public String check(int requirednumberoftransitions, FAStates states) if(transitions.size() == 0) return Localized.getString("faNoTransition"); Iterator iterator = states.getstatenames().listiterator(); String s = (String)iterator.next(); if(transitioncountforstate(s)!= requirednumberoftransitions) Object[] args = s, new Integer(requiredNumberOfTransitions) ;

117 return Localized.getFormattedString("faStateNeedTransition", args); return null; public Set getnextstateset(string state, String symbol) Set stateset = new HashSet(); Iterator iterator = transitions.iterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(state) && w.symbol.equals(symbol)) lasttransitionset.add(w); stateset.add(w.s2); return stateset; public void epsilonclosurestateset(string state, Set stateset) Iterator iterator = transitions.iterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(state) && w.symbol.equals(getepsilonsymbol())) if(!stateset.contains(w.s2)) lasttransitionset.add(w); stateset.add(w.s2); epsilonclosurestateset(w.s2, stateset); public Set getepsilonclosurestateset(string state) Set stateset = new HashSet(); stateset.add(state); epsilonclosurestateset(state, stateset); return stateset;

118 public Set getclosurestateset(string state, String symbol) Set stateset = new HashSet(); Iterator iterator = transitions.iterator(); FATransition w = (FATransition)iterator.next(); if(w.s1.equals(state) && w.symbol.equals(symbol)) lasttransitionset.add(w); stateset.add(w.s2); epsilonclosurestateset(w.s2, stateset); return stateset; public Set getlasttransitionset() return lasttransitionset; public String tostring() String s = "* transitions *\n"; Iterator iterator = transitions.listiterator(); FATransition w = (FATransition)iterator.next(); s += "<"+w.s1+", "+w.symbol+" -> "+w.s2+">\n"; return s;

119 LAMPIRAN 2 Kuesioner Kuesioner Skripsi Sebelum Aplikasi Diuji 1. Manakah yang dibawah ini, menurut anda yang paling sukar? a. Konstruksi DFA b. Konstruksi NFA 2. Pada nomor 1, bila anda menjawab Konstruksi DFA, apakah yang menjadi kesulitan anda? a. Dalam membuat diagram transisi DFA b. Dalam melakukan transformasi ekspresi regular ke DFA c. Dalam melakukan transformasi DFA ke minimasi DFA d. Lainnya 3. Pada nomor 1, bila anda menjawab Konstruksi NFA, apakah yang menjadi kesulitan anda? a. Dalam membuat diagram transisi NFA b. Dalam melakukan transformasi DFA ke NFA c. Dalam melakukan pengecekkan inputan string d. Lainnya 4. Apakah pembahasan yang dibuat dari Bina Nusantara University mengenai teori bahasa dan automata, khususnya DFA dan NFA dapat dimengerti? a. Dapat dimengerti b. Cukup dimengerti c. Tidak dapat dimengerti

120 5. Apakah contoh yang diberikan dari Bina Nusantara University mengenai teori bahasa dan automata, khususnya DFA dan NFA sudah cukup untuk dimengerti? a. Dapat dimengerti b. Cukup dimengerti c. Tidak dapat dimengerti 6. Menurut anda, sebaiknya slide dari Bina Nusantara University mengenai teori bahasa dan automata, khususnya DFA dan NFA perlu ditambahkan dengan apa? a. Contoh yang lebih banyak b. Pembahasan yang lebih banyak c. Lainnya 7. Menurut anda, apakah slide dari Bina Nusantara University mengenai teori bahasa dan automata, khususnya DFA dan NFA menggunakan bahasa Inggris lebih baik? a. Sangat baik b. Cukup baik c. Tidak perlu 8. Apakah anda mengalami kesulitan dalam membuat matriks transisi? a. Ya b. Tidak 9. Apakah anda mengalami kesulitan dalam membuat diagram transisi? a. Ya b. Tidak 10. Apakah anda mengalami kesulitan dalam menentukan 5-tuple apa? a. Q = state b. = simbol input c. δ = fungsi transisi d. Lainnya

121 Kuesioner Skripsi Sesudah Aplikasi Diuji 1. Menurut Anda, apakah interface aplikasi ini sudah menarik? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju 2. Menurut Anda, apakah aplikasi ini sudah sesuai dengan kebutuhan materi yang telah ditentukan dari Bina Nusantara University? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju 3. Menurut Anda, apakah aplikasi ini sudah interaktif? a. Sangat setuju b. Setuju c. Tidak setuju a. Sangat tidak setuju 4. Menurut Anda, apakah aplikasi ini mudah untuk digunakan? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju 5. Menurut Anda, apakah aplikasi ini berguna untuk Anda dalam memahami DFA dan NFA? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju

122 6. Menurut Anda, apakah aplikasi ini termasuk user friendly? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju 7. Menurut Anda, apakah aplikasi ini memiliki running time yang cepat dalam melakukan eksekusi terhadap suatu intruksi? a. Sangat setuju b. Setuju c. Tidak setuju d. Sangat tidak setuju 8. Bagaimana menurut Anda, jika ada suatu aplikasi yang mampu mengkonstruksi DFA dan NFA yang dapat membantu Anda dalam memahami DFA dan NFA? a. Sangat tertarik b. Tertarik c. Biasa saja d. Tidak tertarik 9. Bagaimana menurut Anda, jika aplikasi ini dibuat dalam bentuk web? a. Sangat baik b. Cukup baik c. Tidak perlu 10. Fitur apa saja yang ingin ditambahkan dalam aplikasi tersebut?

123