Rabu, 24 April 2019

UTS MATAKULIAH TEORI BAHASA DAN OTOMATA


Assalamu'alaikum warahmatullohi wabarakatuh

Alhamdulillahirobbil 'alamiin, telah diselesaikan laporan tugas untuk memenuhi nilai Ujian Tengah Semester V mata Kuliah Teori Bahasa dan Otomata. Adapun Tugasnya adalah membuat mesin Finite State Automata diantaranya Mesin DFA, NFA, dan PDA. Berikut uraiannya :


1.  DFA (Deterministic Finite Automata)
1.1.        Pengertian DFA
        Deterministic Finite Automata merupakan sebuah fungsi yang harus terdefinisi untuk semua pasangan state-input yang ada didalam Q X ∑. Deterministik finite automata (DFA) bersifat deterministik, yang berarti bahwa automata tersebut tidak dapat berada di lebih dari satu state pada saat yang bersamaan.

     1.2.                Membuat mesin DFA
a.    Formal Definition Tuple


b.    Diagram FSA


c.    Uji Input
Untuk melakukan pengujian terhadap mesin NFA diatas, dilakukan 3 sample input yang berbeda,diantaranya :

-          11000


Berdasarkan trace inputan berupa gambar diatas, menunjukan inputan 11000 tidak dapat diterima oleh mesin DFA, karena tidak berakhir pada final state yaitu state q2, inputan diatas berakhir pada state q3.

-          00010


Pada ujicoba input kedua dengan nilai input yang berbeda, inputan diterima karena berakhir pada final state yaitu q2.

-          10011

 Nilai input 10011 diterima mesin DFA karena berakhir pada state akhir.

Berikut adalah tampilan ketika inputan dijalankan.




2.         NFA (Non-Determinaistic Finite Automata)
2.1.        Pengertian NFA
Non-deterministik finite automata (NFA) bersifat non-deterministik, yang berarti bahwa automata tersebut dapat berada di beberapa state pada saat yang bersamaan atau dengan kata lain NFA dapat menebak di state mana dia berikutnya akan berada (Hopcroft et al., 2007).Pada Non-Determinaistic Finite Automata (NFA) dari suatu state bisa terdapat 0,1, atau lebih busur keluar (transisi) berlabel simbol input yang sama. Non-Determinaistic Finite Automata didefenisikan pula dengan lima(5) M=(Q , Σ , δ , S , F )dengan arti yang serupa pada Deterministic Fnite Automata. Disini perbedaan ada padafungsi transisinya, dimana untuk setiap pasangan state-input, kita bisa memiliki 0 (nol) atau lebih pilihan untuk state berikutnya.

2.2.           Membuat mesin NFA
a.        Formal Definition Tuple

b.             Diagram FSA


c.       Uji Input
-          111010 = Diterima, karena berakhir pada final state.


-          110101 = Tidak diterima, karena berakhir pada q2, bukan pada final state q3.


-          101010 =Diterima, Karena berakhir pada final state.


Tampilan hasil ketiga input diatas saat dijalankan.



13.    PDA (PUSH DOWN AUTOMATA)
3.1.    Pengertian PDA

Push Down Automata (PDA)  merupakan mesin otomata dari bahasa bebas konteks.PDA di gambarkan sebagai tempat penyipanan yang tidak terbatas berupa stack/ tumpukan.Stack merupakan kumpulan dari elemen-elemen sejenis dengan sifat penambahan elemen dan pengambilan elemen melalui suatu tempat yang disebut top of stack(puncak stack).Pengambilan elemen dari stack dinyatakan dengan operasi pop sedangkanmemasukkanelemen kedala stack dengan posisi push.

3.2.    Membuat Mesin PDA
a.    Formal Definition Tuple

M3=( Q, Σ, δ, S, F)
Q = {q0, q1, q2, q3, q4}
∑={a,b,Z,λ}
Γ = {b, Z}
δ = {(q0, b, Z, q1, bZ), (q1, b, b, q1, bb), (q1, b, b, q2, λ ), (q2, λ, Z, q3, Z), (q4, a, a, q3, ab)}
S = {q0}
F = {q3}

b.    Diagram PDA

c. Uji Input

INPUT DITERIMA

INPUT DITERIMA

INPUT DITERIMA



Demikian laporan yang bisa saya sampaikan, mohon maaf atas  kekurangannya, semoga bermanfaat untuk khazanah ilmu.

Terimakasih
Salam,

Muhammad Sobari

Jumat, 12 Januari 2018

PROGRAM APLIKASI SEDERHANA PENJUALAN RUMAH MENGGUNAKAN JAVA NETBEANS (SWING GUI)

Assalamu'alaikum wr wb
Alhamdulillahhirobbilalamiin , puji syukur saya panjatkan kehadirat Alloh swt, karena atas rahmat dan bantuannya akhirnya tugas UAS saya selesai.

Baik langsung saja ke pokok bahasan, postingan saya kali ini meneruskan dari postingan sebelumnya (tugas UTS) tentang membuat aplikasi sederhana menggunakan Java Netbeans GUI, aplikasi sederhana yang dibuat adalah Penjualan Rumah, dimana aplikasi ini digunakan diperkantoran developer perumahan.
Fungsi dari aplikasi ini adalah untuk penginputan data ketika ada  transaksi Penjualan Rumah , data yang diinput terdiri dari data pembeli, data rumah yang dibeli, dan metode pembayaran. Didalam penginputan Metode pembayaran tersebut sudah terdapat formula/hitungan mengenai Booking fee, DP, dan sisa pembayaran dan cicilan.
Namun ada beberapa perkembangan, kini program aplikasinya sudah terkoneksi dengan database (sql server), sudah menggunakan fungsi sql, juga sudah bisa menampilkan report dengan mengambil data dari database, berikut dibawah ini adalah program yang dimaksud :

A. FLOWCHART



B. MEMBUAT DATABASE

Membuat database dengan nama ‘db_penjualan_rumah’



Lalu membuat tabel dengan nama ‘tbl_penjualan’ , sekaligus dengan field-field / struktur yang diperlukan :



C. MEMULAI PROJECT DI NETBEANS

1. Frame Login

  • Design


  • Source Code

Pada Source code diatas terdapat validasi username dan password, apabila username dan password tidak sesuai dengan yang ditentukan,maka login tidak berhasil, adapun sebaliknya jika username dan password sesuai, maka login berhasil dan selanjutnya akan membuka Frame Menu Utama.

2. Frame Menu utama

  • Design Frame Menu Utama




  • Source code
Source Code menampilkan jam & tanggal



Source Code Jmenu bar 


3. Frame Penjualan
  • Design Frame



Remark :
 - No Transaksi adalah Primay key pada tbl_penjualan , artinya tidak boleh sama, sehingga  dibuatkan menjadi otomatis.


-Combo box pada pemilihan blok rumah sudah  berisikan data yang diambil dari field blok pada tbl_rumah yang ada didatabase

- Setiap Chechbox pada pemilihan metode pembayaran, sudah diisi formula yang berbeda beda disetiap checkboxnya.


  • Source code


Class untuk koneksi ke mysqlserver


Class untuk membuat kode transaksi otomatis


Class untuk mengambil data field blok rumah , dan class untuk membersihkan textfield

Source Code Formula Cicialn
Source Code Formula Cicilan (2)

Source Code menampilkan data rumah dari combo box berdasarkan blok yang dipilih


Source Code Fungsi Sql Insert untuk menyimpan data ke database


Source Code untuk menampilkan i-Report

4. Membuat Report Wizard

  • Design Report Wizard

Report wizard ini sudah terkoneksi dengan database di Mysqlserver, sehingga data yang ditampilkan dalam report sudah sesuai dengan data yang ada pada database 'db_penjualan_rumah'
  • Preview report




5. Frame Rumah


  • Design Frame



  • Source Code

Source Code Koneksi


Source Code untuk menampilkan data dari tabel rumah pada database kedalam tabel di netbeans



Source Code untuk menyimpan data



Source Code Fungsi Mysql Update




Source Code Fungsi Sql Delete





Demikian program aplikasi sederhana yang saya buat,  karena masih banyak sekali kekurangannya, dimohon  kritik dan saran yang membangun, Terimakasih, semoga bermanfaat.

Salam,

Muhammad Sobari

Sabtu, 04 November 2017

Aplikasi Sederhana Java Netbeans (Swing Gui)

Assalamu'alaikum wr wb

Salam sejahtera untuk kita semua, postingan saya kali ini akan membahas bagaimana cara membuat aplikasi sederhana menggunakan Java Netbeans GUI, aplikasi sederhana yang dibuat adalah Penjualan Rumah, dimana aplikasi ini digunakan diperkantoran developer perumahan.
Fungsi dari aplikasi ini adalah untuk penginputan data ketika ada  transaksi Penjualan Rumah , data yang diinput terdiri dari data pembeli, data rumah yang dibeli, dan metode pembayaran. Didalam penginputan Metode pembayaran tersebut sudah terdapat formula/hitungan mengenai Booking fee, DP, dan sisa pembayaran dan cicilan, berikut dibawah ini adalah program yang dimaksud :

1. Flowchart

2. Desain form dan Source Code
2.1 Menu Login


tambahkan dulu package untuk pendukung JOptionpane; :

Kemudian isikan source kode dibawah ini pada event action performed pada tombol login :


2.2 Menu Utama


Note : Aplikasi masih daam tahap pengembangan, jadi designnya masih sealakadarnya hehe



coding pertama masukan dulu packagesperti dibawah ini :



private void MenuitemPenjualanrumahActionPerformed(java.awt.event.ActionEvent evt) {                                           
    dispose();
    FrmPenjualan gol=new FrmPenjualan();
    gol.setVisible(true);
   
 }   
 private void MenukeluarMouseClicked(java.awt.event.MouseEvent evt) {
    if(JOptionPane.showConfirmDialog(null, "Anda yakin akan keluar?","keluar",JOptionPane.YES_NO_OPTION)
            ==JOptionPane.OK_OPTION){
      dispose();
        FrmLogin log=new FrmLogin();
        log.setLocationRelativeTo(log);
        log.setVisible(true);
        }
    }


2.3 Menu Penjualan Rumah



  private void RdbLakilakiActionPerformed(java.awt.event.ActionEvent evt) {                                         
    jeniskelamin="Laki-laki";
    RdbPerempuan.setSelected(false);

    }                                         

    private void RdbPerempuanActionPerformed(java.awt.event.ActionEvent evt) {                                           
    jeniskelamin="Perempuan";
    RdbLakilaki.setSelected(false);// TODO add your handling code here:
    }                                         

    private void ChkCashKerasActionPerformed(java.awt.event.ActionEvent evt) {                                           

    ChkExecutive.setSelected(false);
    ChkInstallment.setSelected(false);
    cashback=100000000; 
    txtCashback.setText(""+cashback);
    hrg=Integer.parseInt(txtHarga.getText());
    bookingfee = Integer.parseInt(txtBookingFee.getText());
    DP = Integer.parseInt(TxtDP.getText());
    int sisa=(hrg-bookingfee-DP-cashback);
    TxtSisaPembayaran.setText(""+sisa);
    txtCicilan.setText("0");
    }                                         

    private void ChkExecutiveActionPerformed(java.awt.event.ActionEvent evt) {                                           

    TxtSisaPembayaran.setText("0");
    ChkCashKeras.setSelected(false);
    ChkInstallment.setSelected(false);
    cashback=0; 
    txtCashback.setText(""+cashback);
    hrg=Integer.parseInt(txtHarga.getText());
     bookingfee = Integer.parseInt(txtBookingFee.getText());
    DP = Integer.parseInt(TxtDP.getText());
    float hargaexecutive=hrg+(hrg*bungaexecutive);
    float harga=(hargaexecutive-bookingfee)-DP;
    float cicilanexecutive=harga/6;
   txtCicilan.setText(Float.toString(cicilanexecutive));
    }                                         

    private void ChkInstallmentActionPerformed(java.awt.event.ActionEvent evt) {                                             

    ChkExecutive.setSelected(false);
    ChkCashKeras.setSelected(false);
    cashback=0;
    txtCashback.setText(""+cashback);
    hrg=Integer.parseInt(txtHarga.getText());
    bookingfee = Integer.parseInt(txtBookingFee.getText());
    DP = Integer.parseInt(TxtDP.getText());
    float hargainstalment=hrg+(hrg*bungainstalment);
    float harga=(hargainstalment-bookingfee)-DP;
    float cicilaninstalment=harga/12;
   txtCicilan.setText(Float.toString(cicilaninstalment));
    }                                           

private void TxtNIKKeyTyped(java.awt.event.KeyEvent evt) {                                
    char c = evt.getKeyChar();
    if (!((c >= '0') && (c <= '9') && TxtNIK.getText().length() <= 15 ||
            (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
        getToolkit().beep();
        evt.consume();
}       
    }                               

    private void txtNamaKeyTyped(java.awt.event.KeyEvent evt) {                                 
    char c = evt.getKeyChar();
    if (!((Character.isLetter(c)) && txtNama.getText().length() <= 40 ||
            (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE) || (c == KeyEvent.VK_SPACE))) {
        getToolkit().beep();
        evt.consume();
    }           // TODO add your handling code here:
    }                                

    private void txtAlamatKeyTyped(java.awt.event.KeyEvent evt) {                                   
         char c = evt.getKeyChar();
    if (!((Character.isLetter(c)) && txtAlamat.getText().length() <= 30 ||
            (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE) || (c == KeyEvent.VK_SPACE))) {
        getToolkit().beep();
        evt.consume();
    }   
    }                                  

    private void txtpekerjaanKeyTyped(java.awt.event.KeyEvent evt) {                                      
    char c = evt.getKeyChar();
    if (!((Character.isLetter(c)) && txtpekerjaan.getText().length() <= 30 ||
            (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE) || (c == KeyEvent.VK_SPACE))) {
        getToolkit().beep();
        evt.consume();
    }           // TODO add your handling code here:
    }                                     

    private void TxtDPKeyTyped(java.awt.event.KeyEvent evt) {                               
    char c = evt.getKeyChar();
    if (!((c >= '0') && (c <= '9') && TxtDP.getText().length() <= 15 ||
            (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE))) {
        getToolkit().beep();
        evt.consume();
}          
    }                              

    private void BtnProsesActionPerformed(java.awt.event.ActionEvent evt) {
     String a=txtNama.getText();
        JOptionPane.showMessageDialog(this, "Transaksi Berhasil, Terimakasih "+a+ " :)");
      bersih();
    }

 private void BtnkembaliActionPerformed(java.awt.event.ActionEvent evt) {
      dispose();
      FrmMenuUtama frm=new FrmMenuUtama();
      frm.setVisible(true);
    }



3. Penutup

Sekian saja postingan kali ini, mohon maaf sekali banyak kekurangannya, smga bisa diperbaiki dikemudian hari .
Terimakasih

Salam