Blogroll

Rabu, 19 Desember 2012

Maintenance

Posted by Unknown On 17.48 1 comment
Maintenance

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)
Menurut Sisjono dan Iwan Koswara, Perawatan (maintenance) ialah suatu kegiatan yang dilakukan secara sengaja (sadar) terhadap suatu fasilitas dengan menganut suatu sistematika tertentu untuk mencapai hasil telah ditetapkan (Sisjono dan Iwan Koswara, 2004).
intinya, Maintenance adalah suatu kegiatan yang di lakukan manusia untuk menjaga atau merawat sebuah benda/perangkat (keras ataupun lunak) agar dapat terus di gunakan.
(source: 

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.

program kakulator menggunakan java

Posted by Unknown On 17.47 No comments
/*
 * 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

Rabu, 24 Oktober 2012

Merge Sort

Posted by Unknown On 18.43 No comments
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();
}
}
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;
}


Site search

    Blogger news

    Blogroll

    About