Sabtu, 14 Juni 2014

Implementasi Teori Bahasa Automata



MAKALAH
Implementasi Teori Bahasa Automata
(Kalkulator sederhana dengan java netbeans)














Nama : Mariyana
Npm    : 43a87006120082



Kata pengantar

Puji syukur kami panjatkan kehadirat Allah SWT yang telah memberikan rahmat serta karunia-Nya kepada kami sehingga kami berhasil menyelesaikan Makalah ini yang berjudul Implementasi Teori Bahasa Automata.
Makalah ini berisikan tentang implementasi teori bahasa automata melalui pembuatan aplikasi kalkulator sederhana menggunakan program java. Diharapkan makalah ini dapat memberikan informasi kepada kita semua tentang kerterkaitan matakuliah teori bahasa automata dengan suatu pemogramanan tertentu, terutama dengan aplikasi kalkulator sederhana ini.
Kami menyadari bahwa makalah ini masih jauh dari sempurna, oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun selalu kami harapkan demi kesempurnaan makalah ini.
Akhir kata kami sampaikan terimakasih semoga Allah SWT selalu senantiasa meridhai segala usaha kita. Amin












Daftar isi


Kata Pengantar
Daftar Isi
Landasan Teori
Teori Bahasa
Contoh Aplikasi
Penutup
Daftar pustaka 










Implementasi Teori Bahasa Dan Automata –Aplikasi Kalkulator Sederhana Dengan Java

Landasan Teori
Teori bahasa dan automata merupakan salah satu komponen ilmu informatika, teori ini merupakan ide dan model fundamental yang mendasari sebuah system komputasi, teori ini juga bisa disebut sebagai sebuah teknik rekayasa untuk perancangan sistem komputasi.
Beberapa bidang ilmu lain yang mendukung pengembangan metode komputasi :

1. Biologi Mempelajari jaringan neuron yang mengilhami ditemukanannya finite automata.

2. Rangkaian Elektronika Mempelajari teori switching sebagai perancangan perangkat keras menggunakan finite automata.

3. Matematika Mengembangkan system logika yang berguna untuk masalah pembuktian automata. Beberapa model komputasi dalam automata:

Finite automata (FA)
Sering juga disebut dengan Finite State Automata (FSA). Terdiri dari Deterministic Finite Automata (DFA) dan Non Deterministik Finite Automata (NDFA). Teori dasar dari FA sangat umum yaitu system pada saat berada di salahsatu state dari sejumlah state bergerak diantara state-state secara dapat diproduksi yang bergantung pada masukan ke system. Salah satu penerapannya adalah kompilasi / translasi bahasa pemograman tingkat tinggi menjadi bahasa mesin yang ekivalen. Finite automata merupakan jenis otomata yang tidak memiliki memori sementara, FA adalah kelas mesin dengan kemampuan paling terbatas.

Pushdown Automata (PA)
Terdiri dari Deterministic Pushdown Automata (DFA) dan Non Deterministik Pushdown Automata (NDFA). PA memiliki memori sementara dengan mekanisme stack LIFO (Last In First Out).

Turing Machine (TM)
Memiliki mekanisme Random Access Memory. 11-9-2010 TBA :Tugas I Dani Rusda Taufani/ 10108645/IF-9 2

Dalam teori bahasa dan Automata digunakan model state (State Machine Model) atau biasa disebut model transisi (State Transition Model), pengembangan teori automata difasilitasi dengan perkembangan bidang Psycho Linguistik.

Teori Bahasa
Teori bahasa membicarakan bahasa formal (formal language), terutama untuk kepentingan perancangan kompilator (compiler) dan pemroses naskah (text processor). Bahasa formal adalah kumpulan kalimat. Semua kalimat dalam sebuah bahasa dibangkitkan oleh sebuah tata bahasa (grammar) yang sama. Sebuah bahasa formal bisa dibangkitkan oleh dua atau lebih tata bahasa berbeda. Dikatakan bahasa formal karena grammar diciptakan mendahului pembangkitan setiap kalimatnya. Bahasa manusia bersifat sebaliknya; grammar diciptakan untuk meresmikan kata-kata yang hidup di masyarakat. Dalam pembicaraan selanjutnya ‘bahasa formal’ akan disebut ‘bahasa’ saja..
Pada pembuatan programnya, saya akan membuat aplikasi kalkulator pertambahan yang mengimplementasikan konsep automata. Secara sederhana programnya akan seperti ini.
S = A + A + A + …
A = 1…n
n = (Max Integer)
Berikut ini gambar DFA program. 





Penjelasannya sebagai berikut.
A = State Awal
B = Final State
A(1…9) -> B
B(0…9) -> B
B(+) -> C
C(1…9) -> B




Berikut adalah contoh program kalkulator yang di buat dengan JAVA netbeans:



 1.



 2.



3.  
 

Berikut adalah codingnya :
package pemrograman3;

import javax.swing.JOptionPane;


public class kalkulator_1 extends javax.swing.JFrame {

    int tambah,kurang,kali;
    Double bagi;
    /** Creates new form kalkulator_1 */
    public kalkulator_1() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jTBil1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jCOperand = new javax.swing.JComboBox();
        jTBil2 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTHasil = new javax.swing.JTextField();
        jBHitung = new javax.swing.JButton();
        jBClear = new javax.swing.JButton();
        jBEit = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
        });

        jTBil1.setText("jTextField1");

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel1.setText("KALKULATOR");

        jCOperand.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jCOperand.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "-- Pilih Item --", "+", "-", "*", "/" }));

        jTBil2.setText("jTextField2");

        jLabel2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N
        jLabel2.setText("=");

        jTHasil.setText("jTextField3");

        jBHitung.setText("Hitung");
        jBHitung.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBHitungActionPerformed(evt);
            }
        });

        jBClear.setText("Clear");

        jBEit.setText("Exit");
        jBEit.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBEitActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(22, 22, 22)
                                .addComponent(jBHitung))
                            .addComponent(jTBil1, javax.swing.GroupLayout.Alignment.TRAILING))
                        .addGap(18, 18, 18)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jCOperand, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jTBil2, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(jLabel2))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(jBClear, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(jBEit, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTHasil, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(158, 158, 158)
                        .addComponent(jLabel1)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(4, 4, 4)
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTBil1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTHasil, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jCOperand, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jTBil2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addGap(28, 28, 28)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jBHitung)
                    .addComponent(jBClear)
                    .addComponent(jBEit))
                .addContainerGap(33, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                       

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                    
// TODO add your handling code here:
    jTBil1.setText("");
    jTBil2.setText("");
    jTHasil.setText("");
}                                   

private void jBEitActionPerformed(java.awt.event.ActionEvent evt) {                                     
// TODO add your handling code here:
    System.exit(0);
}                                    

private void jBHitungActionPerformed(java.awt.event.ActionEvent evt) {                                        
// TODO add your handling code here:
    //equals digunakan untuk menyamakan statement dalam equals dan pilihan combobox
    if(jCOperand.getSelectedItem().equals("+")){
        tambah = Integer.parseInt(jTBil1.getText()) + Integer.parseInt(jTBil2.getText());
        jTHasil.setText(String.valueOf(tambah) );
    }
    if(jCOperand.getSelectedItem().equals("-")){
        kurang = Integer.parseInt(jTBil1.getText()) - Integer.parseInt(jTBil2.getText());
        jTHasil.setText(String.valueOf(kurang));
    }
    if(jCOperand.getSelectedItem().equals("*")){
        kali = Integer.parseInt(jTBil1.getText()) * Integer.parseInt(jTBil2.getText());
        jTHasil.setText(String.valueOf(kali));
    }
    if(jCOperand.getSelectedItem().equals("/")){
        bagi = Double.parseDouble(jTBil1.getText()) / Double.parseDouble(jTBil2.getText());
        jTHasil.setText(String.valueOf(bagi));
    }
   
    //kalau mau menampilkan dg joptionpane
    int pilih = jCOperand.getSelectedIndex();
    //JOptionPane.showMessageDialog(rootPane, "pilih index: "+pilih);
   
    switch(pilih){
        case 1:{
            tambah = Integer.parseInt(jTBil1.getText()) + Integer.parseInt(jTBil2.getText());
            //jTHasil.setText(String.valueOf(tambah) );
            JOptionPane.showMessageDialog(rootPane, tambah);
        }break;
        default:JOptionPane.showMessageDialog(rootPane, "Maaf salah pilih");
    }
}                                       

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(kalkulator_1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(kalkulator_1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(kalkulator_1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(kalkulator_1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new kalkulator_1().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                    
    private javax.swing.JButton jBClear;
    private javax.swing.JButton jBEit;
    private javax.swing.JButton jBHitung;
    private javax.swing.JComboBox jCOperand;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JTextField jTBil1;
    private javax.swing.JTextField jTBil2;
    private javax.swing.JTextField jTHasil;
    // End of variables declaration                  
}








Outputnya :






Penutup

Demikianlah yang dapat kami sampaikan mengenai materi yang menjadi bahasan dalam makalah ini, tentunyabanyak kekurangan dan kelemahan karena terbatasnya pengetahuan kurangnnya rujukan atau referensi yang kami peroleh hubungannya dengan makalah ini. Kami berharap kepada semua pembaca dapat memberikan kritik dan saran yang membangun kepada kami demi sempurnanya makalah ini. Semoga makalah ini bermanfaat untuk kita semua. amin










Daftar pustaka

·         http://eecchhoo.wordpress.com/2009/01/04/teori-bahasa-dan-automata-bikin-aplikasi-kalkulator-pertambahan-pake-java/ Tanggal 10 Sept 2010, Pukul 19.27 WIB
·         http://farhan-hariri88.blogspot.com/2010/07/teori-bahasa-dan-automata.html Tanggal 10 Sept 2010, Pukul 19.30 WIB

Tidak ada komentar:

Posting Komentar