Menurut Lindley R. Higgis & R. Keith
Mobley, maintenance atau pemeliharaan adalah suatu kegiatan yang
dilakukan secara berulang-ulang dengan tujuan agar peralatan selalu
memiliki kondisi yang sama dengan keadaan awalnya. Maintenance juga
dilakukan untuk menjaga peralatan tetap berada dalam kondisi yang dapat
diterima oleh penggunanya. (Maintenance Enginering Handbook, Sixth
Edition McGraw-Hill, 2002)
Rabu, 19 Desember 2012
Senin, 17 Desember 2012
Kasus system manual
Formulir permintaan data (dua rangkap) disiapkan dalam
departemen produksi. Salinan 2 dikirim ke departemen perbaikan dan
pemeliharaan, dan salinan 1 diarsip di departemen produksi.
Dalam departemen perbaikan dan pemeliharaan, salinan kedua
dari permintaan jasa digunakan untuk mengisi formulir order kerja empat
rangkap. Pengisian formulir ini dilakukan secara manual. Salinan 2 dari
permintaan jasa kemudian diarsip di departemen perbaikan dan pemeliharaan.
Salinan 4 dari formulir order kerja dikirim ke departemen produksi sebagai
pemberitahuan bahwa permintaan jasa mereka sedang ditangani. Salinan 3 dari
order kerja diarsip di departemen perbaikan dan pemeliharaan. Karyawan di
departemen perbaikan dan pemeliharaan secara manual mencatat bahan baku dan
bahan habis pakai yang digunakan, serta jam tenaga kerja yang digunakan selam
proses perbaikan kedalam lembar order
kerja rangkap satu dan dua. Pada saat order telah selesai, salinan 1 diarsip
dalam departemen perbaikan dan pemeliharaan, dan salinan 2 dikirim ke
departemen akuntansi.
Karyawan di bagian akuntansi melengkapi rincian
penghitungan biaya dalam formulir order kerja salinan 2 dan membuat laporan
ringkasan order kerja (tiga rangkap). Salinan 2 order kerja diarsip di bagian
akuntansi. Salinan 1 dari ringkasan order kerja dikirim ke departemen produksi.
Salinan 2 ringkasan order kerja dikirim ke departemen perbaikan dan
pemeliharaan, dan salinan 3 dari ringkasan order kerja diarsip di bagian
akuntansi.
Tugas anda:
Buatlah flowchart analitik untuk menggambarkan
prosedur tersebut.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package utspbo2;
import java.text.DecimalFormat;
import sun.text.resources.FormatData;
/**
*
* @author DEGUNG
*/
public class Kalkulator extends javax.swing.JFrame {
boolean koma, mulaiBaru, nolLagi;
double nilai1, nilai2, hasil;
int proses, hasilInt;
DecimalFormat formatData = new DecimalFormat("#.#####");
/**
* Creates new form Kalkulator
*/
public Kalkulator() {
initComponents();
mulaiBaru=true;
koma=false;
nolLagi=true;
nilai1=0;
nilai2=0;
hasil=0;
}
/**
* 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() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
jButton11 = new javax.swing.JButton();
jButton12 = new javax.swing.JButton();
jButton13 = new javax.swing.JButton();
jButton14 = new javax.swing.JButton();
jButton15 = new javax.swing.JButton();
jButton16 = new javax.swing.JButton();
jButton17 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Kalkulator");
jButton1.setText("1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("3");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("4");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("5");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("6");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("7");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("8");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jButton9.setText("9");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jButton10.setText("0");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton10ActionPerformed(evt);
}
});
jButton11.setText(".");
jButton11.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton11ActionPerformed(evt);
}
});
jButton12.setText("=");
jButton12.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton12ActionPerformed(evt);
}
});
jButton13.setText("+");
jButton13.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton13ActionPerformed(evt);
}
});
jButton14.setText("-");
jButton14.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton14ActionPerformed(evt);
}
});
jButton15.setText("*");
jButton15.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton15ActionPerformed(evt);
}
});
jButton16.setText("/");
jButton16.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton16ActionPerformed(evt);
}
});
jButton17.setText("Clear");
jButton17.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton17ActionPerformed(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()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3)
.addGap(18, 18, 18)
.addComponent(jButton13))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton6)
.addGap(18, 18, 18)
.addComponent(jButton14))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton7)
.addComponent(jButton10))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton8)
.addComponent(jButton11))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton12)
.addGap(18, 18, 18)
.addComponent(jButton16))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton9)
.addGap(18, 18, 18)
.addComponent(jButton15)))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton17))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton10, jButton4, jButton7});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton11, jButton2, jButton3, jButton5, jButton6, jButton8, jButton9});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton13, jButton14, jButton15, jButton16});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField1, jTextField2});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(1, 1, 1)
.addComponent(jTextField1))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButton13))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4)
.addComponent(jButton5)
.addComponent(jButton6)
.addComponent(jButton14))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton7)
.addComponent(jButton8)
.addComponent(jButton9)
.addComponent(jButton15)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton10)
.addComponent(jButton11)
.addComponent(jButton12)
.addComponent(jButton16)
.addComponent(jButton17))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("1");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "1");
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("2");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "2");
}
private void jButton17ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
jTextField2.setText("");
mulaiBaru=true;
koma=false;
nolLagi=true;
proses=0;
nilai1=0;
nilai2=0;
hasil=0;
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("3");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "3");
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("4");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "4");
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("5");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "5");
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("6");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "6");
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("7");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "7");
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("8");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "8");
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("9");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "9");
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
if (jTextField2.getText().isEmpty() || nolLagi==true){
jTextField2.setText("0");
nolLagi=false;
}
else{
mulaiBaru=false;
jTextField2.setText(jTextField2.getText() + "0");
}
}
else jTextField2.setText(jTextField2.getText() +"0");
}
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("0.");
koma=true;
mulaiBaru=false;
}
else{
if (!koma){
if (jTextField2.getText().isEmpty())jTextField2.setText("0.");
else jTextField2.setText(jTextField2.getText() + ".");
koma=true;
}
}
}
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " + " );
mulaiBaru=true;
proses=1;
}
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " - ");
mulaiBaru=true;
proses=2;
}
private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " * ");
mulaiBaru=true;
proses=3;
}
private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " / ");
mulaiBaru=true;
proses=4;
}
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {
nilai2 = Double.valueOf(jTextField2.getText());
switch (proses){
case 1:
hasil = nilai1 + nilai2;
break;
case 2:
hasil = nilai1 - nilai2;
break;
case 3:
hasil = nilai1 * nilai2;
break;
case 4:
hasil = nilai1 / nilai2;
break;
default:
break;
}
if (hasil%1==0){
hasilInt = (int)Math.round(hasil);
jTextField2.setText(Integer.toString(hasilInt));
}
else{
hasil = Double.valueOf(formatData.format(hasil));
jTextField2.setText(Double.toString(hasil));
}
jTextField1.setText("");
mulaiBaru=true;
koma=false;
nolLagi=true;
proses=0;
nilai1=0;
nilai2=0;
hasil=0;
}
/**
* @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.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Kalkulator.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().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton11;
private javax.swing.JButton jButton12;
private javax.swing.JButton jButton13;
private javax.swing.JButton jButton14;
private javax.swing.JButton jButton15;
private javax.swing.JButton jButton16;
private javax.swing.JButton jButton17;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package utspbo2;
import java.text.DecimalFormat;
import sun.text.resources.FormatData;
/**
*
* @author DEGUNG
*/
public class Kalkulator extends javax.swing.JFrame {
boolean koma, mulaiBaru, nolLagi;
double nilai1, nilai2, hasil;
int proses, hasilInt;
DecimalFormat formatData = new DecimalFormat("#.#####");
/**
* Creates new form Kalkulator
*/
public Kalkulator() {
initComponents();
mulaiBaru=true;
koma=false;
nolLagi=true;
nilai1=0;
nilai2=0;
hasil=0;
}
/**
* 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() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton10 = new javax.swing.JButton();
jButton11 = new javax.swing.JButton();
jButton12 = new javax.swing.JButton();
jButton13 = new javax.swing.JButton();
jButton14 = new javax.swing.JButton();
jButton15 = new javax.swing.JButton();
jButton16 = new javax.swing.JButton();
jButton17 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Kalkulator");
jButton1.setText("1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton2.setText("2");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("3");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton4.setText("4");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton5.setText("5");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton6.setText("6");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton7.setText("7");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton8.setText("8");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jButton9.setText("9");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jButton10.setText("0");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton10ActionPerformed(evt);
}
});
jButton11.setText(".");
jButton11.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton11ActionPerformed(evt);
}
});
jButton12.setText("=");
jButton12.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton12ActionPerformed(evt);
}
});
jButton13.setText("+");
jButton13.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton13ActionPerformed(evt);
}
});
jButton14.setText("-");
jButton14.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton14ActionPerformed(evt);
}
});
jButton15.setText("*");
jButton15.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton15ActionPerformed(evt);
}
});
jButton16.setText("/");
jButton16.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton16ActionPerformed(evt);
}
});
jButton17.setText("Clear");
jButton17.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton17ActionPerformed(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()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton3)
.addGap(18, 18, 18)
.addComponent(jButton13))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton6)
.addGap(18, 18, 18)
.addComponent(jButton14))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton7)
.addComponent(jButton10))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton8)
.addComponent(jButton11))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jButton12)
.addGap(18, 18, 18)
.addComponent(jButton16))
.addGroup(layout.createSequentialGroup()
.addComponent(jButton9)
.addGap(18, 18, 18)
.addComponent(jButton15)))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 180, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton17))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton10, jButton4, jButton7});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton11, jButton2, jButton3, jButton5, jButton6, jButton8, jButton9});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton13, jButton14, jButton15, jButton16});
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jTextField1, jTextField2});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addGap(1, 1, 1)
.addComponent(jTextField1))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton1)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButton13))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4)
.addComponent(jButton5)
.addComponent(jButton6)
.addComponent(jButton14))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton7)
.addComponent(jButton8)
.addComponent(jButton9)
.addComponent(jButton15)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton10)
.addComponent(jButton11)
.addComponent(jButton12)
.addComponent(jButton16)
.addComponent(jButton17))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("1");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "1");
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("2");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "2");
}
private void jButton17ActionPerformed(java.awt.event.ActionEvent evt) {
jTextField1.setText("");
jTextField2.setText("");
mulaiBaru=true;
koma=false;
nolLagi=true;
proses=0;
nilai1=0;
nilai2=0;
hasil=0;
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("3");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "3");
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("4");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "4");
}
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("5");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "5");
}
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("6");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "6");
}
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("7");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "7");
}
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("8");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "8");
}
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("9");
mulaiBaru=false;
}
else jTextField2.setText(jTextField2.getText() + "9");
}
private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
if (jTextField2.getText().isEmpty() || nolLagi==true){
jTextField2.setText("0");
nolLagi=false;
}
else{
mulaiBaru=false;
jTextField2.setText(jTextField2.getText() + "0");
}
}
else jTextField2.setText(jTextField2.getText() +"0");
}
private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {
if (mulaiBaru){
jTextField2.setText("0.");
koma=true;
mulaiBaru=false;
}
else{
if (!koma){
if (jTextField2.getText().isEmpty())jTextField2.setText("0.");
else jTextField2.setText(jTextField2.getText() + ".");
koma=true;
}
}
}
private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " + " );
mulaiBaru=true;
proses=1;
}
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " - ");
mulaiBaru=true;
proses=2;
}
private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " * ");
mulaiBaru=true;
proses=3;
}
private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) {
nilai1 = Double.valueOf(jTextField2.getText());
jTextField1.setText(jTextField2.getText() + " / ");
mulaiBaru=true;
proses=4;
}
private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {
nilai2 = Double.valueOf(jTextField2.getText());
switch (proses){
case 1:
hasil = nilai1 + nilai2;
break;
case 2:
hasil = nilai1 - nilai2;
break;
case 3:
hasil = nilai1 * nilai2;
break;
case 4:
hasil = nilai1 / nilai2;
break;
default:
break;
}
if (hasil%1==0){
hasilInt = (int)Math.round(hasil);
jTextField2.setText(Integer.toString(hasilInt));
}
else{
hasil = Double.valueOf(formatData.format(hasil));
jTextField2.setText(Double.toString(hasil));
}
jTextField1.setText("");
mulaiBaru=true;
koma=false;
nolLagi=true;
proses=0;
nilai1=0;
nilai2=0;
hasil=0;
}
/**
* @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.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Kalkulator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Kalkulator.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().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton10;
private javax.swing.JButton jButton11;
private javax.swing.JButton jButton12;
private javax.swing.JButton jButton13;
private javax.swing.JButton jButton14;
private javax.swing.JButton jButton15;
private javax.swing.JButton jButton16;
private javax.swing.JButton jButton17;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
Antivirus
adalah sebuah jenis perangkat lunak yang digunakan untuk mendeteksi dan
menghapus virus komputer dari sistem komputer. Disebut juga Virus Protection Software.
Aplikasi ini dapat menentukan apakah sebuah sistem komputer telah
terinfeksi dengan sebuah virus atau tidak. Umumnya, perangkat lunak ini
berjalan di latar belakang (background) dan melakukan pemindaian
terhadap semua berkas yang diakses (dibuka, dimodifikasi, atau ketika
disimpan).Sebagian besar antivirus bekerja dengan beberapa metode yaitu:
*Pendeteksian dengan menggunakan basis
data virus signature (virus signature database): Cara kerja antivirus
ini merupakan pendekatan yang banyak digunakan oleh antivirus
tradisional, yang mencari tanda-tanda dari keberadaan dari virus dengan
menggunakan sebagian kecil dari kode virus yang telah dianalisis oleh
vendor antivirus, dan telah dikatalogisasi sesuai dengan jenisnya,
ukurannya, daya hancurnya dan beberapa kategori lainnya. Cara ini
terbilang cepat dan dapat diandalkan untuk mendeteksi virus-virus yang
telah dianalisis oleh vendor antivirus, tapi tidak dapat mendeteksi
virus yang baru hingga basis data virus signature yang baru
diinstalasikan ke dalam sistem. Basis data virus signature ini dapat
diperoleh dari vendor antivirus dan umumnya dapat diperoleh secara
gratis melalui download atau melalui berlangganan (subscription).
*Pendeteksian dengan melihat
cara bagaimana virus bekerja: Cara kerja antivirus seperti ini merupakan
pendekatan yang baru yang dipinjam dari teknologi yang diterapkan dalam
Intrusion Detection System (IDS). Cara ini sering disebut juga sebagai
Behavior-blocking detection. Cara ini menggunakan policy (kebijakan)
yang harus diterapkan untuk mendeteksi keberadaan sebuah virus. Jika ada
kelakuan perangkat lunak yang “tidak wajar” menurut policy yang
diterapkan, seperti halnya perangkat lunak yang mencoba untuk mengakses
address book untuk mengirimkan e-mail secara massal terhadap daftar
e-mail yang berada di dalam address book tersebut (cara ini sering
digunakan oleh virus untuk menularkan virus melalui e-mail), maka
antivirus akan menghentikan proses yang dilakukan oleh perangkat lunak
tersebut. Antivirus juga dapat mengisolasi kode-kode yang dicurigai
sebagai virus hingga administrator menentukan apa yang akan dilakukan
selanjutnya. Keuntungan dari cara ini adalah antivirus dapat mendeteksi
adanya virus-virus baru yang belum dikenali oleh basis data virus
signature. Kekurangannya, jelas karena antivirus memantau cara kerja
perangkat lunak secara keseluruhan (bukan memantau berkas), maka
seringnya antivirus membuat alarm palsu atau “False Alarm” (jika
konfigurasi antivirus terlalu “keras”), atau bahkan mengizinkan virus
untuk berkembangbiak di dalam sistem (jika konfigurasi antivirus terlalu
“lunak”), terjadi false positive. Beberapa produsen menyebut teknik ini
sebagai heuristic scanning.
Antivirus
yang menggunakan behavior-blocking detection ini masih sedikit
jumlahnya, tapi di masa yang akan datang, kemungkinan besar semua
antivirus akan menggunakan cara ini. Beberapa antivirus juga menggunakan
dua metode di atas secara sekaligus.
Beberapa antivirus yang beredar di pasaranProduk Situs Web
• eSafe http://www.aks.com
• Avast http://www.asw.cz
• Anyware AntiVirus http://www.helpvirus.com
• Ansav http://www.ansav.com/
• AVG Anti-Virus http://www.grisoft.com
• Quick Heal http://www.quickheal.com
• Vexira Antivirus http://www.centralcommand.com
• Command AntiVirus http://www.authentium.com/command/index
• eTrust http://www.ca.com/virusinfo/
• waVe Antivirus http://www.cyber.com
• SpIDer Guard http://www.dials.ru
• NOD32 http://www.nod32.com
• F-Prot Antivirus http://www.f-prot.com
• F-Secure Anti-virus http://www.fsecure.com
• RAV AntiVirus http://www.rav.ro
• AntiVir dan AntiVir Personal Edition http://www.antivir.de
• ViRobot, DataMedic, Live-Call http://www.hauri.co.kr
• WinProof dan ExcelProof http://www.hiwire.com.sg
• Die Klinik http://www.ikarus-software.at
• Kaspersky Anti-Virus (AVP) http://www.kaspersky.com
• VirusBUSTER II http://www.leprechaun.com.au
• email scanning services http://www.messagelabs.com/viruseye/
• eScan http://www.microworldtechnologies.com
• MKS Vir http://www.mks.com.pl
• McAfee Anti-Virus dan McAfee Virus Scan http://www.mcafee.com
• InVircible AV http://www.invircible.com
• Norman Virus Control http://www.norman.no
• Panda AntiVirus dan NanoScan http://www.pandasoftware.com
• Per AntiVirus http://www.persystems.com/antivir.htm
• Protector Plus http://www.pspl.com
• VirusNet PC and VirusNet LAN http://www.safe.net
• BitDefender http://www.bitdefender.com
• Sophos Anti-Virus http://www.sophos.com
• Antigen for Microsoft Exchange http://www.sybari.com
• Norton Antivirus dan Symantec Antivirus Corporate Edition http://www.symantec.com
• Trend Virus Control System dan PC-Cilin http://www.trendmicro.com
• VirusBuster http://www.vbuster.hu
• ClamAV http://www.clamav.org
• PCMAV -
• Windows Live OneCare dan Microsoft ForeFont http://onecare.live.com
• ZoneAlarm AntiVirus http://www.zonealarm.com/
• BullGuard Antivirus http://www.bullguard.com/
Sumber: http://daun-komputer.blogspot.com/2011/02/pengertian-antivirus.html
• Avast http://www.asw.cz
• Anyware AntiVirus http://www.helpvirus.com
• Ansav http://www.ansav.com/
• AVG Anti-Virus http://www.grisoft.com
• Quick Heal http://www.quickheal.com
• Vexira Antivirus http://www.centralcommand.com
• Command AntiVirus http://www.authentium.com/command/index
• eTrust http://www.ca.com/virusinfo/
• waVe Antivirus http://www.cyber.com
• SpIDer Guard http://www.dials.ru
• NOD32 http://www.nod32.com
• F-Prot Antivirus http://www.f-prot.com
• F-Secure Anti-virus http://www.fsecure.com
• RAV AntiVirus http://www.rav.ro
• AntiVir dan AntiVir Personal Edition http://www.antivir.de
• ViRobot, DataMedic, Live-Call http://www.hauri.co.kr
• WinProof dan ExcelProof http://www.hiwire.com.sg
• Die Klinik http://www.ikarus-software.at
• Kaspersky Anti-Virus (AVP) http://www.kaspersky.com
• VirusBUSTER II http://www.leprechaun.com.au
• email scanning services http://www.messagelabs.com/viruseye/
• eScan http://www.microworldtechnologies.com
• MKS Vir http://www.mks.com.pl
• McAfee Anti-Virus dan McAfee Virus Scan http://www.mcafee.com
• InVircible AV http://www.invircible.com
• Norman Virus Control http://www.norman.no
• Panda AntiVirus dan NanoScan http://www.pandasoftware.com
• Per AntiVirus http://www.persystems.com/antivir.htm
• Protector Plus http://www.pspl.com
• VirusNet PC and VirusNet LAN http://www.safe.net
• BitDefender http://www.bitdefender.com
• Sophos Anti-Virus http://www.sophos.com
• Antigen for Microsoft Exchange http://www.sybari.com
• Norton Antivirus dan Symantec Antivirus Corporate Edition http://www.symantec.com
• Trend Virus Control System dan PC-Cilin http://www.trendmicro.com
• VirusBuster http://www.vbuster.hu
• ClamAV http://www.clamav.org
• PCMAV -
• Windows Live OneCare dan Microsoft ForeFont http://onecare.live.com
• ZoneAlarm AntiVirus http://www.zonealarm.com/
• BullGuard Antivirus http://www.bullguard.com/
Sumber: http://daun-komputer.blogspot.com/2011/02/pengertian-antivirus.html
Rabu, 24 Oktober 2012
Merge
Sort
Ide algoritma ini hampir mirip
dengan QuickSort, yaitu melakukan partisi.
Kecuali bahwa algoritma ini
melakukan partisi tanpa kriteria.
Jadi, data set (X[l] ... X[r]) di
partisi langsung ke du sub data set dengan jumlah data yang
sama (X[l] ... X[(l+r)/2], dan
X[(l+r)/2+1] ... X[r]).
Lalu secara rekursif melakukan
Merge Sort untuk masing-masing data set.
Karena kedua data set itu bisa
overlapping (tidak seperti pada Quick Sort) maka setelah
kedua sub data set terurut masih
memerlukan proses penggabungan (Merging).
Merging ini memerlukan ruang
tambahan yaitu suatu array yang sama panjangnya dengan
panjang kedua subset untuk
menyimpan hasilnya.
void MergeSort(int l,int r) {
if (l < r) {
MergeSort(l, (l+r)/2);
MergeSort((l+r)/2,r);
Merging();
MergeSort((l+r)/2,r);
Merging();
}
}
Algoritma ini memiliki kompleksitas
O(n log n).
Algoritma Merge Sort
Algoritma Merge adalah algoritma yang dijalankan sebagai
akibat dari terlalu banyaknya daftar yang diurutkan, dengan menghasilkan lebih
banyak daftar yang diurutkan sebagai output. Algoritma merge ini disesuaikan
untuk mesin drive tape. Penggunaannya dalam akses memori acak besar yang
terkait telah menurun, karena banyak aplikasi algoritma merge yang mempunyai
alternatif lebih cepat ketika kamu memiliki akses memori acak yang menjaga
semua data mu. Hal ini disebabkan algoritma ini membutuhkan setidaknya ruang
atau memori dua kali lebih besar karena dilakukan secara rekursif dan memakai
dua tabel.
Algoritma merge sort membagi tabel menjadi dua tabel yang
sama besar. Masing-masing tabel diurutkan secara rekursif, dan kemudian
digabungkan kembali untuk membentuk tabel yang terurut. Implementasi dasar dari
algoritma merge sort memakai tiga buah tabel, dua untuk menyimpan elemen dari tabel
yang telah di bagi dua dan satu untuk menyimpan elemen yang telah terurut.
Namun algoritma ini dapat juga dilakukan langsung pada dua tabel, sehingga
menghemat ruang atau memori yang dibutuhkan.
Algoritma Merge umumnya memiliki satu set pointer p0..n yang
menunjuk suatu posisi di dalam satu set daftar L0..n . Pada awalnya mereka
menunjuk item yang pertama pada setiap daftar. Algoritmanya sebagai berikut:
Selama p0..n masih menunjuk data yang di dalam sebagai
pengganti pada akhirnya:
1. Melakukan sesuatu
dengan data item yang menunjuk daftar mereka masing-masing.
2. Menemukan
pointers points untuk item dengan kunci yang paling rendah; membantu salah satu
pointer untuk item yang berikutnya dalam daftar.
Daftar isi
[sembunyikan]
* 1 Pseudocode
* 2 Implementasi
Algoritma Merge menggunakan MATLAB
* 3 Analisis
* 4 Penggunaan
* 5 Referensi
Suatu implementasi pseudocode sederhana yang tak berulang
dari penggabungan dengan dua daftar yang mungkin tertulis sebagai berikut:
function
merge(a, b)
var list result
var int i, j := 0
while (i < length(a)) and (j <
length(b))
if a[i] < b[j]
add a[i] to result
i := i + 1
else
add b[j] to result
j := j + 1
while i < length(a)
add a[i] to result
i := i + 1
while j < length(b)
add b[j] to result
j := j + 1
return result
[sunting] Implementasi Algoritma Merge menggunakan MATLAB
M-File
function p=merge(a,b)
% MERGE Penggabungan
% MERGE(A,B)
menggabungkan dua list
if nargin<2
error('Kekurangan
argumen input');
end % pengecekan
error
a=a(:); %
meyakinkan bahwa input merupakan vektor baris
b=b(:);
na=length(a); %
menemukan panjang a dan b
nb=length(b);
df=a+b; % hasil
dari daftar
ndf=length(df);
p=[zeros(1,nb-na)
a]+[zeros(1,na-nb) b];
Command window
>> a=[1 2 3]
a =
1
2 3
>> b=[2 3 4]
b =
2
3 4
>> merge(a,b)
ans =
3
5
7
>> p=[3 5 7]
p =
3
5 7
>> for i=1:3
x=a(i)+p(i)
end
x =
4
x =
7
x =
10
>> for j=1:3
y=b(j)+p(j)
end
y =
5
y =
8
y =
11
Pada umumnya algoritma merge berjalan dalam waktu
proposional untuk penjumlahan pada panjangnya daftar; Algoritma merge
beroperasi pada bilangan besar dalam daftar yang akan segera mengalikan
penjumlahan panjangnya daftar pada saat itu untuk keluaran gambar pointers
points yang mana menunjuk pada item yang paling rendah, yang dapat terpengaruhi
dengan suatu heap(tumpukan) yang didasarkan prioritas antrian dalam O(lg n)
waktu, untuk O(m lg n) waktu (dimana n adalah bilangan pada daftar yang
digabungkan, m adalah penjumlahan panjangnya daftar, dan lg adalah log basis
2). Ketika menggabungkan panjang m dua daftar, terdapat suatu perbandingan
lompatan yang lebih rendah 2m-1 yang ada dalam kasus terburuk.
Keluaran data item Merge klasik (satu yang digunakan dalam
merge sort) dengan kunci yang paling rendah pada langkah masing-masing,
memberikan beberapa daftar yang diurutkan, hasil daftar yang diurutkan berisi
semua unsur-unsur di dalam daftar input manapun, dan hal itu dilakukan agar
waktunya proporsioal untuk input penjumlahan panjangnya daftar.
Penggabungan dapat
juga digunakan untuk berbagai hal:
* Diberikan satu set saldo-saldo rekening
yang beredar dan satu set transaksi, kedua-duanya disortir oleh nomor rekening,
menghasilkan satu saldo-saldo rekening baru setelah transaksi diterapkan; ini
selalu diperlukan untuk mempercepat ”transaksi baru” penunjuk ketika keduanya
mempunyai kunci yang sama, dan menambahkan semua angka-angka pada tape yang
manapun dengan nomor rekening yang sama untuk menghasilkan saldo yang baru.
* Menghasilkan
suatu daftar catatan yang disortir dengan menyajikan kunci disemua daftar ini
yang memerlukan outputting kapan saja suatu catatan yang semua kunci p0..n
adalah sama.
* Dengan cara yang
sama untuk menemukan bilangan besar pada satu tape yang lebih kecil
dibandingkan masing-masing nomor pada satu tape yang lainnya (contoh untuk
mengeluarkan gambar pengelompokan pajak masing-masing orang di dalamnya).
* Dengan cara yang
sama untuk menghitung perbedaan set semua arsip dalam satu daftar dengan arsip
yang tidak sesuaian dengan yang lainnya.
* Operasi
penyisipan dalam mesin pencarian untuk menghasilkan suatu indeks balikkan.
* Menggabungkan
permainan-permainan adalah suatu peranan pusat dalam fungsi pemrograman teknik
Dijkstra untuk menghasilkan bilangan-bilangan tetap.
Source Code Merge Sort
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
void
printv(char* in, int *v, int n) {
printf("%s", in);
int i = 0;
for (; i < n; ++i)
printf("%d ",
v[i]);
printf("\n");
}
void
merge(int *v, int p, int q, int r) {
int i = p;
int j = q + 1;
int *tmp = (int*)malloc((r - p + 1)
* sizeof(int));
int k = 0;
while ((i <= q) && (j
<= r)) {
if (v[i] < v[j])
tmp[k++] =
v[i++];
else
tmp[k++] =
v[j++];
}
while (i <= q)
tmp[k++] = v[i++];
while (j <= r)
tmp[k++] = v[j++];
memcpy(v + p, tmp, (r - p + 1) *
sizeof(int));
free(tmp);
}
void
mergeS(int *v, int p, int r) {
if (p < r) {
int q = (p + r) / 2;
mergeS(v, p, q);
mergeS(v, q + 1, r);
merge(v, p, q, r);
}
}
int
main(int argc, char *argv[]) {
int n = 10;
int v[] = {9, 8, 7, 6, 5, 5, 4, 3,
2, 1};
printv("V: ", v, n);
mergeS(v, 0, n - 1);
printv("V: ", v, n);
return 0;
}
Langganan:
Postingan (Atom)