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