Tampilkan postingan dengan label Algoritma. Tampilkan semua postingan
Tampilkan postingan dengan label Algoritma. Tampilkan semua postingan

Sabtu, 24 Agustus 2019

Soal-Soal Algoritma & Pemrograman Fungsi Rekursif

Buatlah program untuk masing-masing soal berikut ini, dengan menggunakan fungsi rekursif


  1. Buat program yang mengandung fungsi untuk menghitung perkalian. Nama fungsi : kali(a, b). Input : a dan b. a dan b bilangan bulat. Outputnya adalah hasil perkalian a dengan b.
  2. Buat program yang mengandung fungsi untuk menghitung faktorial. Nama fungsi : faktorial(n). Input : n. n adalah bilangan bulat positif. Outputnya adalah hasil dari fakrotial n.
  3. Buat program yang mengandung fungsi untuk menghitung permutasi. Nama fungsi : permutasi(a, b). Input : a dan b. a dan b adalah bilangan bulat positif. Outputnya adalah hasil dari permutasi a dan b.
  4. Buat program yang mengandung fungsi untuk menghitung kombinasi. Nama fungsi : kombinasi(a, b). Input : a dan b. a dan b adalah bilangan bulat positif. Outputnya adalah hasil dari kombinasi dan b.
  5. Buatlah program untuk mencari berapa angka ke-n dari deret Fibonacci. Nama fungsi : fibonacci(n). Input : n. n adalah urutan angka / no. urut / suku ke-n, yang ada dalam deret Fibonacci. Output : angka dari dalam deret Fibonacci sesuai dengan urutan yang diinput.

Senin, 28 November 2016

Source Code Program Java Animasi Frame Bitmap

Saya bagikan source code bahasa pemrograman Java yang diperoleh dari internet yang menganimasikan gambar-gambar bitmap (1 pose 1 file).

import java.awt.geom.AffineTransform;
import javax.imageio.ImageIO;
import java.net.URL;
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class AnimatedFramesDemo extends JPanel {
   static final int CANVAS_WIDTH = 640;
   static final int CANVAS_HEIGHT = 480;
   public static final String TITLE = "Animated Frame Demo";
 
   private String[] imgFilenames = {
         "images/pacman_1.png", "images/pacman_2.png", "images/pacman_3.png"};
   private Image[] imgFrames;
   private int currentFrame = 0;
   private int frameRate = 5;
   private int imgWidth, imgHeight;
   private double x = 100.0, y = 80.0;
   private double speed = 8;          
   private double direction = 0;      
   private double rotationSpeed = 1;  
   private AffineTransform transform = new AffineTransform();
 
   public AnimatedFramesDemo() {
      loadImages(imgFilenames);
      Thread animationThread = new Thread () {
         public void run() {
            while (true) {
               update();
               repaint();
               try {
                  Thread.sleep(1000 / frameRate);
               } catch (InterruptedException ex) { }
            }
         }
      };
      animationThread.start();
      setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
   }
 
   private void loadImages(String[] imgFileNames) {
      int numFrames = imgFileNames.length;
      imgFrames = new Image[numFrames];  
      URL imgUrl = null;
      for (int i = 0; i < numFrames; ++i) {
         imgUrl = getClass().getClassLoader().getResource(imgFileNames[i]);
         if (imgUrl == null) {
            System.err.println("Couldn't find file: " + imgFileNames[i]);
         } else {
            try {
               imgFrames[i] = ImageIO.read(imgUrl); 
            } catch (IOException ex) {
               ex.printStackTrace();
            }
         }
      }
      imgWidth = imgFrames[0].getWidth(null);
      imgHeight = imgFrames[0].getHeight(null);
   }
 
   public void update() {
      x += speed * Math.cos(Math.toRadians(direction));
      if (x >= CANVAS_WIDTH) {
         x -= CANVAS_WIDTH;
      } else if (x < 0) {
         x += CANVAS_WIDTH;
      }
      y += speed * Math.sin(Math.toRadians(direction));
      if (y >= CANVAS_HEIGHT) {
         y -= CANVAS_HEIGHT;
      } else if (y < 0) {
         y += CANVAS_HEIGHT;
      }
      direction += rotationSpeed;  
      if (direction >= 360) {
         direction -= 360;
      } else if (direction < 0) {
         direction += 360;
      }
      ++currentFrame; 
      if (currentFrame >= imgFrames.length) {
         currentFrame = 0;
      }
   }
 
   public void paintComponent(Graphics g) {
      super.paintComponent(g);
      setBackground(Color.WHITE);
      Graphics2D g2d = (Graphics2D) g;
      transform.setToIdentity();
      transform.translate(x - imgWidth / 2, y - imgHeight / 2);
      transform.rotate(Math.toRadians(direction),
            imgWidth / 2, imgHeight / 2);
      g2d.drawImage(imgFrames[currentFrame], transform, null);
   }
 
   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            JFrame frame = new JFrame(TITLE);
            frame.setContentPane(new AnimatedFramesDemo());
            frame.pack();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
         }
      });
   }
}

Berikut ini file-file bitmap yang digunakan progam tersebut :



 [[ file tugas unduh di sini ]] selamat mengerjakan. Mata Kuliah Pemrograman Game, Kampus Universitas Respati Indonesia Jakarta Timur.

Senin, 31 Oktober 2016

Source Code Balon (Bakal Calon) Game Balap Mobil

Berikut source code program Java untuk bakal calon game balap mobil.

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class AnimasiGrafik extends JFrame {
    final int LEBAR = 900, TINGGI = 650;
    double kecepatan = .5;
    final int UP = 0, RIGHT = 1, DOWN = 2, LEFT = 3;
    int arah = UP;

    //menentukan koordinat kotak area hijau sekeliling window
    Rectangle kiri = new Rectangle(0, 0, LEBAR / 9, TINGGI);
    Rectangle kanan = new Rectangle((LEBAR / 9) * 8, 0, LEBAR / 9, TINGGI);
    Rectangle atas = new Rectangle(0, 0, LEBAR, TINGGI / 9);
    Rectangle bawah = new Rectangle(0, (TINGGI / 9) * 8, LEBAR, TINGGI / 9);
    Rectangle tengah = new Rectangle((int) ((LEBAR / 9) * 2.5), 
                                     (int) ((TINGGI / 9) * 2.5),
                                     (int) ((LEBAR / 9) * 5), (TINGGI / 9) * 4);

    //menentukan koordinat kotak penghalang
    Rectangle rintangan1 = new Rectangle(LEBAR / 2, (int) ((TINGGI / 9) * 7), 
                                         LEBAR / 10, TINGGI / 9);
    Rectangle rintangan2 = new Rectangle(LEBAR / 3, (int) ((TINGGI / 9) * 5), 
                                         LEBAR / 10, TINGGI / 4);
    Rectangle rintangan3 = new Rectangle(2 * (LEBAR / 3),
                                         (int) ((TINGGI / 9) * 5), 
                                         LEBAR / 10, TINGGI / 4);
    Rectangle rintangan4 = new Rectangle(LEBAR / 3, TINGGI / 9, 
                                         LEBAR / 30, TINGGI / 9);
    Rectangle rintangan5 = new Rectangle(LEBAR / 2, (int) ((TINGGI / 9) * 1.5), 
                                         LEBAR / 30, TINGGI / 4);
    Rectangle finish = new Rectangle(LEBAR / 9, (TINGGI / 2) - TINGGI / 9, 
                                     (int) ((LEBAR / 9) * 1.5), TINGGI / 70);
    Rectangle pemain1 = new Rectangle(LEBAR / 9, TINGGI / 2, LEBAR / 30, 
                                      LEBAR / 30);

    public AnimasiGrafik() {
        super("Balap Mobil Kotak");
        setSize(LEBAR, TINGGI);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

        GerakPemain1 m1 = new GerakPemain1();
        m1.start();
    }
    
    public void paint(Graphics g) {
        super.paint(g);
        //gambar kotak latar
        g.setColor(Color.DARK_GRAY);
        g.fillRect(0, 0, LEBAR, TINGGI);
        //gambar garis
        g.setColor(Color.GREEN);
        Rectangle lineO = new Rectangle(LEBAR / 9, TINGGI / 2, 
                                        (int) ((LEBAR / 9) * 1.5) / 2, 
                                        TINGGI / 140);
        Rectangle lineI = new Rectangle(((LEBAR / 9) + 
                                        ((int) ((LEBAR / 9) * 1.5) / 2)),
                                        (TINGGI / 2) + (TINGGI / 10), 
                                        (int) ((LEBAR / 9) * 1.5) / 2, 
                                        TINGGI / 140);

        g.fillRect(kiri.x, kiri.y, kiri.width, kiri.height);
        g.fillRect(kanan.x, kanan.y, kanan.width, kanan.height);
        g.fillRect(atas.x, atas.y, atas.width, atas.height);
        g.fillRect(bawah.x, bawah.y, bawah.width, bawah.height);
        g.fillRect(tengah.x, tengah.y, tengah.width, tengah.height);
        g.fillRect(rintangan1.x, rintangan1.y, rintangan1.width, 
                   rintangan1.height);
        g.fillRect(rintangan2.x, rintangan2.y, rintangan2.width, 
                   rintangan2.height);
        g.fillRect(rintangan3.x, rintangan3.y, rintangan3.width, 
                   rintangan3.height);
        g.fillRect(rintangan4.x, rintangan4.y, rintangan3.width, 
                   rintangan4.height);
        g.fillRect(rintangan5.x, rintangan5.y, rintangan5.width, 
                   rintangan5.height);

        //gambar garis start
        g.setColor(Color.WHITE);
        g.fillRect(lineO.x, lineO.y, lineO.width, lineO.height);
        g.fillRect(lineI.x, lineI.y, lineI.width, lineI.height);

        //gambar garis finish
        g.setColor(Color.YELLOW);
        g.fillRect(finish.x, finish.y, finish.width, finish.height);

        //gambar mobil
        g.setColor(Color.BLUE);
        g.fill3DRect(pemain1.x, pemain1.y, pemain1.width, pemain1.height, true);
    }

    private class GerakPemain1 extends Thread implements KeyListener {
        public void run() {
            addKeyListener(this);
            while (true) {
                try {
                    repaint();
                    if (pemain1.intersects(kiri)
                        || pemain1.intersects(kanan)
                        || pemain1.intersects(atas)
                        || pemain1.intersects(bawah)
                        || pemain1.intersects(rintangan1)
                        || pemain1.intersects(rintangan2)
                        || pemain1.intersects(rintangan4) 
                        || pemain1.intersects(rintangan5)) {
                        kecepatan = -4;
                    }

                    if (pemain1.intersects(tengah)) {
                        kecepatan = -2.5;
                    }

                    if (kecepatan <= 5) {
                        kecepatan += .2;
                    }

                    if (arah == UP) {
                        pemain1.y -= (int) kecepatan;
                    }

                    if (arah == DOWN) {
                        pemain1.y += (int) kecepatan;
                    }

                    if (arah == LEFT) {
                        pemain1.x -= (int) kecepatan;
                    }

                    if (arah == RIGHT) {
                        pemain1.x += (int) kecepatan;
                    }

                    Thread.sleep(75);
                } catch (Exception e) {
                    break;
                }
            }
        }

        public void keyPressed(KeyEvent event) {
        }

        public void keyReleased(KeyEvent event) {
        }

        public void keyTyped(KeyEvent event) {
            if (event.getKeyChar() == 'a') {
                arah = LEFT;
            }
            if (event.getKeyChar() == 's') {
                arah = DOWN;
            }
            if (event.getKeyChar() == 'd') {
                arah = RIGHT;
            }
            if (event.getKeyChar() == 'w') {
                arah = UP;
            }
        }
    }

    public static void main(String[] args) {
        new AnimasiGrafik();
    }
}

Sabtu, 29 Oktober 2016

Tugas Mata Kuliah Pemrograman Grafis Sesi 6 #20161009

Berikut tugas mata kuliah Pemrograman Grafis buat mahasiswa Fakultas Teknologi Informasi, Universitas Respati Indonesia (URINDO), Kampus A Bambu Apus, Jakarta Timur.

Buatlah program untuk menggambar seperti berikut ini (klik gambar untuk memperbesar) :

Tugas dikumpulkan sebelum batas waktu yang telah ditentukan, yaitu sehari sebelum hari kuliah mata kuliah ini. Selamat mengerjakan!

Rabu, 19 Oktober 2016

Tugas Mata Kuliah Pemrograman Dasar 2 Sesi 5 #20161019

Berikut salah satu tugas mata kuliah di program studi Sistem Informasi Universitas Respati Indonesia (URINDO) Jakarta Timur mengenai pemahaman flowchart dan pemrogramannya. Buatlah sebuah program berdasarkan flowchart berikut ini (klik gambar untuk memperbesar) :


Tugas dikumpulkan tepat waktu, paling lambat sehari sebelum hadir kuliah berikutnya. Terima kasih.

Senin, 17 Oktober 2016

Belajar Memahami Diagram Alir (Flowchart) Untuk Membuat Program Komputer

Mas bro dan mbak sis... saya punya sebuah diagram alir (flowchart) sebagai berikut : (klik gambar untuk memperbesar)


Salah satu hard skill yang wajib dimiliki oleh programmer adalah bisa "membaca" dan memahami diagram alir (flowchart). Karena flowchart merupakan penggambaran algoritma program komputer. Skill ini diperlukan agar kita dapat membuat atau memodifikasi algoritma atau program komputer dengan lebih mudah. Berikut tips untuk belajar memahami suatu diagram alir (flowchart).

Pertama kali, hal yang paling penting adalah, kita tahu arti dan kegunaan simbol-simbol flowchart. Kalau belum hafal ya bisa sambil buka buku. Setelah itu jika mungkin, cari tahu proses flowchart tersebut untuk apa.


Kedua, carilah mana input, mana proses, mana output pada flowchart tersebut. Suatu program komputer biasanya mengandung elemen input, proses, dan output. Dengan mengetahui input, proses, dan output pada flowchart, dapat membantu kita untuk memahami logika dari algoritma atau flowchart tersebut.



Ketiga, dari gambar flowchart sebelumnya, diketahui mana input, proses, dan output. Simulasikan langkah-langkah yang ada di flowchart tersebut dengan membuat suatu tabel seperti berikut ini :

Lalu tentukan variasi nilai-nilai yang mungkin diinput oleh user jika menggunakan program yang dibuat berdasarkan flowchart tersebut, baik nilai yang benar maupun yang salah. Berikut contoh variasi nilai-nilai yang mungkin diinput oleh user.

Runut nilai tiap baris, pada flowchart, sesuai dengan alirannya (disimulasikan). Sampai semua nilai dirunut, sehingga menghasilkan isi tabel seperti berikut ini :

Berikut gambaran simulasi umur = 17, tinggi badan = 170 (baris pertama di tabel) dan umur = 10, tinggi badan = 100.




Jika sudah memahami logika dari flowchart / algoritma tersebut, coding (pembuatan source code) bisa dimulai. Berikut contoh potongan source code sesuai dengan flowchart (bahasa pemrograman yang dapat dipakai C++) :

if (umur >= 17) {
   if (tinggiBadan >= 160) {
      cout << "sudah bisa daftar";
   } else {
      cout << "belum bisa daftar";
   }
} else {
   cout << "belum bisa daftar";
}

atau alternatif lain dengan menggunakan operator boolean

if (umur >= 17 && tinggiBadan >= 160) {
   cout << "sudah bisa daftar";
} else {
   cout << "belum bisa daftar";
}

Tabel variasi nilai-nilai yang telah dibuat, nantinya dapat digunakan untuk menguji coba program jika sudah selesai. Selamat belajar!

Selasa, 11 Oktober 2016

Tugas Mata Kuliah Pemrograman Dasar 2 Sesi 4 #20161010

  1. Buatlah flowchart dan program untuk menentukan suatu angka, bilangan positif atau negatif. Pengguna harus menginput bilangan menggunakan keyboard (menggunakan IO stream)!
    Contoh tampilan :

    Masukkan suatu bilangan : 3
    3 adalah bilangan positif


    Catatan : angka 3 pada contoh, diinput oleh user menggunakan keyboard!
  2. Buatlah flowchart dan program untuk menentukan suatu angka bilangan positif atau negatif. Pengguna harus menginput bilangan menggunakan keyboard (menggunakan class Scanner)!
  3. Buatlah flowchart dan program untuk menentukan suatu tahun adalah kabisat atau bukan. Pengguna harus menginput bilangan menggunakan keyboard (menggunakan class Scanner)!
  4. Buatlah program untuk menghitung volume dari tengki penyimpan minyak kelapa seperti pada gambar berikut : 
Tugas, dikumpulkan melalui e-mail ke tugasilmubiner@gmail.com sebelum batas akhir yaitu sebelum datang kuliah mata kuliah ini di Prodi Sistem Informasi, URINDO, Bambu Apus, Jakarta Timur. Terima kasih.

Rabu, 05 Oktober 2016

Tugas Mata Kuliah Pemrograman Grafik Sesi 3 #20161005

Berikut tugas dari dosen mata kuliah pemrograman grafik yang saat ini sedang berlangsung di fakultas teknologi informasi Universitas Respati Indonesia (URINDO).

  1. Unduh materi presentasi di sini, kemudian cobalah contoh program untuk menggambar garis menggunakan algoritma DDA dan Bresenham.
  2. Buatlah program untuk menampilkan gambar seperti berikut
    dengan menggunakan algorita brute force, DDA, dan Bresenham
  3. Buatlah program untuk menampilkan nama anda menggunakan garis lurus!
Sebelum anda hadir kuliah mata kuliah ini di kampus A URINDO Bambu Apus, tugas harus telah dikirim melalui e-mail sehari sebelumnya. Terima kasih.

Selasa, 04 Oktober 2016

Tugas Mata Kuliah Pemrograman Game Sesi 3 #2016103

Mata kuliah Pemrograman Game merupakan salah satu mata kuliah yang diajarkan kepada mahasiswa fakultas Teknologi Informasi di Universitas Respati Indonesia (URINDO) yang terletak di Bambu Apus Jakarta Timur. Berikut tugas bagi para mahasiswa.

Pilih secara acak tiga buah video game pada internet. Unduh, install, dan mainkan (jika game online, langsung mainkan). Kemudian tentukan genre masing-masing game tersebut. Setelah itu analisis aspek-aspek negatif dan positif pada setiap game. Sebutkan juga kontroversi-kontroversi yang menonjol pada setiap game. Sebutkan juga aturan permainan yang ada masing game.

Tugas harus sudah dikirim sehari sebelum anda datang di #urindo untuk kuliah mata kuliah ini. Untuk melihat apa saja program studi di #urindojakartatimur, silahkan klik di sini, dan tugas dikirim ke e-mail : tugasilmubiner@gmail.com, sebelum tengat waktu. Terima kasih.

Senin, 03 Oktober 2016

Tugas Mata Kuliah Pemrograman Dasar II Sesi 3 #20161003

Perpustakaan di URINDO (Universitas Respati Indonesia) yang berada di daerah Bambu Apus, Cipayung, Jakarta Timur akan dibuatkan sistem informasinya. Lakukan analisis dan rancangan sistem informasi untuk perpustakaan di tersebut menggunakan pendekatan berorientasi objek. Buatlah class-class diagram dari objek-objek yang ditemukan pada saat tahap analisis dan lakukan generalisasi atau spesialisasi pada tahap desain. Setelah itu buatlah source code dari class-class tersebut menggunakan bahasa pemrograman Java.

Tugas mata kuliah prodi Sistem Informasi #sisteminformasiurindo ini dikirim via e-mail sesuai deadline yang ditentukan, ke alamat e-mail yang telah ditentukan juga. Selamat mengerjakan.

Rabu, 19 Agustus 2015

Cetak Halaman Web Sekali Klik Tombol, Tanpa Muncul Window Opsi Printer dan Tanpa Mencetak Header dan Footer

The story behind... ada kebutuhan membuat aplikasi berbasis web menggunakan PHP untuk mencetak struk pembelian oleh kasir (struk yang dicetak sama dengan tampilan pada web browser). Kebutuhannya adalah, kasir tinggal "menekan tombol" untuk mencetak struk pembelian. Kenyataannya aplikasi berbasis web menggunakan PHP sulit melakukan hal demikian. Putar otak... aha! pakai bantuan JavaScript. Searching dikit... voila! ketemu perintahnya yaitu : window.print(). Terus kutak-katik program... berhasil... tapi... header dan footer halaman web-nya tercetak terus "tombol"-nya ikut tercetak juga!!! Searching lagi... hmm, dapet... kutak-katik programmnya lagi... tes lagi... berhasil!

Algoritmanya : saat kasir klik "tombol" yang berupa link maka akan menjaankan suatu function yang isinya; a) perintah untuk menghapus "tombol" (link) dan, b) perintah untuk mencetak halaman web. Sedangkan header dan footer disembunyikan dengan menambahkan atribut pada tag <html> (lihat gambar).

Berikut ini gambar source code sederhana agar bisa mencetak halaman web sekali klik, "tombol"-nya (link) tidak ikut tercetak, demikian pula header dan footer tidak ikut tercetak pula. Perhatikan baik-baik baris yang di-highlight warna kuning. Klik gambar untuk memperbesar. WARNING : source code jalan dengan baik di Mozilla Firefox dan belum pernah diuji coba di web browser lainnya.


Semoga bermanfaat

Update : Di bawah ini tambahan CSS pada blok <head> yang katanya berfungsi pada web browser Chrome dan Safari... katanya lho :p coba sendiri aja ya :)
<style media="print" type="text/css">
  @page {
    size: auto;   /* nilai awal ukuran halaman */
    margin: 0mm;  /* mengubah margin printer */
  }

  body {
    background-color:#FFFFFF; 
    margin: 0px;  /* mengubah margin konten */
    padding: 0.25in 0.5in; /* mengubah padding konten */
  }
</style>
Selamat belajar!

Sabtu, 05 Juli 2014

Apakah Data Mining itu? : Sebuah Penjelasan Sederhana

Wah saya merasa sangat bersalah... karena pertanyaan dalam kotak komentar dari salah satu pengunjung blog ini tidak segera terjawab... penyebabnya adalah, karena memang saya tidak mendapat notifikasi kalau ada komentar yang masuk! mohon maaf bagi para komentator, bahwasannya saya tidak memantau terus menerus blog ini :(

Gara-gara kesalahan saya itu, kali ini saya ingin menebusnya dengan suatu (percobaan) penjelasan yang sederhana mengenai pengertian data mining buat seseorang di sana yang secara tak sengaja saya cuekin (semoga sudi memaafkan saya juga) dan bagi para pembelajar di Indonesia pada umumnya... yuk tariikkkk maaangggg...!

data mining berasal dari dua kata yaitu data dan mining (ya iya lah..!). data (menurut KBBI online) adalah keterangan yang benar dan nyata. Menurut Merriam-Webster online, data adalah factual information (as measurements or statistics) used as a basis for reasoning, discussion, or calculation (terjemahan menurut Google Translate : informasi faktual (sebagai pengukuran atau statistik) digunakan sebagai dasar untuk penalaran, diskusi, atau perhitungan). mining berasal dari kata dasar mine yang berarti tambang, mendapat akhiran -ing sehingga menjadi kata kerja yaitu menambang atau penambangan. Jadi kalau diartikan asal-asalan bin ngaco bin ngawur oleh bukan pakar bahasa, arti data mining adalah menambang data atau penambangan data (:p)

Nah sekarang kita lihat apa kata pakar IT di bidang data mining :

Data mining is synonymous with knowledge discovery in databases, knowledge extraction, data or pattern analysis, data archeology, data dredging, data snooping, data fishing, information harvesting, and business intelligence (Hand et al., 2001; Giudici, 2003; Han & Kamber, 2006) -Wang, John, Encyclopedia of Data Warehousing and Mining Second Edition, p. lxiv-

Terjemahan : Data mining ini identik dengan penemuan pengetahuan dalam database, ekstraksi pengetahuan, analisis data atau pola, arkeologi data, pengerukan data, menyadap data (seperti menyadap getah pohon karet), memancing data, memanen informasi, dan intelijen bisnis.

Itulah arti kata data ming dan pengertian data mining menurut pakar.... udah jelas kan? pasti beluuummmm... iya kaannnn...??? :)

Sekarang dengerin (maksudna : baca) dongeng saya mengenai data mining ...

Once upon a time (...halah!) ada suatu toko kelontong (eh, masih ada yang tahu arti kata kelontong ga ya? cari ndiri di KBBI online yak! :p ) yang laris manis, yang menjual barang sebanyak 1234 item setiap hari dari pagi sampe malem selama satu tahun cuma libur lebaran dan natal doang ( ...kesian amat pegawainya ya?!), melayani ribuan pembeli tiap harinya, dari sabang sampai merauke... merdeka!!!

Om Joni si empunya toko kelontong ini untungnya sudah melek TI... biar gampang ngitung kes flo (cash flow) dan laba rugi jualannya, om Joni menggunakan sistem terkomputerisasi. Semua data transaksi penjualan dan kulakannya disimpan pada database. Jadi tiap mau tutup toko atau tiap minggu atau tiap bulau atau tiap tahun, om Joni bisa langsung tahu kes flo dan laba ruginya dengan cepat, akurat.

Nah, pada chapter (...halah!) dongeng di atas tuh, yang diceritain adalah sistem informasi akuntansi pada toko kelontong om Joni... trus data miningnya mana??? sabar jooo... makan dulu tuh kacang goreng sama minum black coffee-nya! :p

Namanya bisnis, pasti punya saingan. Dari waktu ke waktu muncul toko-toko kelontong saingan toko om Joni... dan om Joni pun merasa terancam... kekhawatirannya terbukti dengan menurunnya omset penjualannya yang tampil di setiap laporan mingguan. Om Joni cari akal putar otak. Tiiiinnnggg! muncul ide gimana kalau barang-barang yang paling laku yang dibeli bersamaan dipajang bersebelahan sehingga si pembeli bisa langsung comat-comot tanpa keliling toko kelontongnya yang luas, dengan harapan agar bisa menaikkan omset penjualannya.

Untuk dapat mengetahui barang-barang yang paling laku yang dibeli secara bersamaan om Joni mendaulat programmernya untuk membuat query SQL untuk data transaksi satu tahun terakhir guna mengetahui barang-barang yang paling laku yang dibeli secara bersamaan. Dengan jurus sakti dan senjata pamungkas, si programmer secepat kilat mendapatkan data yang diinginkan om Joni ...jebreettt!!!

Om Joni apalagi programmernya bingung... ternyata barang yang laku yang dibeli secara bersamaan dalam kurun waktu satu tahun terakhir banyak bingiits cuyy!!! Melihat bossnya yang melongo bin garuk-garuk kelapa eh kepala... si programmer langsung mengontak bala bantuan kakak seperguruan, seorang jawara ilmu sakti statistika.

Bahu membahu, si programmer dan kakak perguruannya, jungkir balik mengerahkan segala daya dan kemampuannya mengolah data transaksi yang berukuran besar tersebut untuk mendapatkan hasil yang diinginkan. Akhirnya selama dua hari dua malam, dua pedjoeang tersebut berhasil memecahkan masalah yang dihadapi bossnya... kkrraaakkk!!!

Om Joni tidak langsung senang, dengan mimik serius, om Joni langsung mengawasi penataan barang-barang yang dijual di tokonya sesuai dengan hasil dari programmer dan jawara statistika.

Hari demi hari, minggu demi minggu, omset penjualan toko kelontong om Joni mulai merangkak naik. Wajah om Joni yang tadinya mendung kelabu berubah menjadi cerah ceria... programmer dan kakak seperguruannya dianugerahi tanda jasa berupa Bintang Satya Darma Jualan Jaya yang terbuat dari emas murni 24 karat seberat 100 gram... wuiiiihhh lumayan tuh kalo digadein! :p

Esok harinya si programmer dipanggil menghadap. Om Joni menanyakan kepada programmer apakah bisa meramal barang apa yang akan laku dan tidak laku di masa depan sehingga bagian kulakan bisa mudah bekerja. Si programmer menyanggupi, namun ia memberi syarat kepada om Joni, untuk memberinya waktu mendalami jurus AI (Artificial Intelligence : kecerdasan buatan) agar menjadi seorang jawara, soalnyta ilmu AI programmer saat itu masih pemula. Om Joni langsung mengiyakan, ia langsung memberikan pundi-pundi perak agar programmernya mendalami ilmu AI tingkat dewa.

Singkat cerita, dari hasil pendalaman ilmu AI sampai tingkat dewa, programmer dapat meramalkan dan memprediksi barang-barang yang laku dan tidak laku di masa depan. Alhasil toko om Joni mulai mengalahkan toko-toko kelontong pesaing lainnya.

Pesan moral yang disampaikan dongeng ini (...halah!) adalah :

Dari dongeng di atas, programmer dan kakak seperguruannya si jawara statistik melakukan data mining untuk mencari tahu barang-barang yang paling laku yang dibeli secara bersamaan. Selain itu programmer melakukan data mining untuk memprediksi barang-barang yang laku atau tidak laku di masa depan dengan menggunakan AI.

Dalam data mining, ada data dalam jumlah yang sangat-sangat amat besar sekali, disimpan di dalam suatu database. Kemudian data besar yang ada di dalam database itu diolah-olah menggunakan algoritma-algoritma dan kaidah-kaidah statistik yang bertujuan menghasilkan informasi baru (yang nantinya disebut sebagai : knowledge -pengetahuan-).

Jadi data mining itu adalah proses pengolahan data menggunakan algoritma-algoritma dan kaidah-kaidah statistik yang bertujuan menghasilkan informasi baru. Eits!!! ntar dulu seiring perkembangannya, data mining tidak hanya membutuhkan ilmu mengenai database, algoritma, statistika, kecerdasan buatan, namun juga visualisasi, komputasi performa tinggi, IR (information retrieval) dan ilmu-ilmu lainnya.


Jumat, 14 Februari 2014

Belajar Mudah Algoritma Data Mining : k-means

Satu lagi persembahan ilmubiner.... belajar mudah algoritma data mining k-means. Algoritma ini digunakan untuk melakukan clustering. Clustering (klasterisasi) adalah proses untuk mengelompokkan data, namun yang kelas-kelasnya atau kelompok-kelompoknya belum diketahui. Clustering TIDAK SAMA dengan klasifikasi (salah satu contoh algoritma untuk klasifikasi adalah algoritma C4.5). Karena proses klasifikasi mengelompokkan data sesuai dengan kelas-kelas (yang telah diketahui). K-means merupakan model klasterisasi menggunakan centroid. Untuk lebih jelasnya silahkan baca-baca di sini.

Selamat belajar!

Selasa, 04 Februari 2014

Belajar Mudah Algoritma Data Mining Apriori

Alhamdulillah..... selesai juga nerjemahin 'n ngetik cara mempelajari algoritma data mining apriori. Bagi yang sedang belajar algoritma apriori untuk me-mining data silahkan unduh di sini dalam format PDF.

Buat yang belum tahu, algoritma apriori adalah algoritma klasik data mining. Dengan algoritma ini kita dapat mencari asosiasi berdasarkan data yang ada. Contohnya misalnya kita punya data transaksi penjualan barang. Lalu dari data-data tersebut kita ingin tahu, jika pembeli membeli suatu barang, barang lain apakah yang juga dibeli? begitu penjelasan singkatnya. Untuk mengetahui lebih lanjut silahkan diunduh saja file-nya

Selamat belajar!

Kamis, 11 Juli 2013

Menghapus Elemen Array di PHP

Di bawah ini cara menghapus suatu elemen array yang menggunakan index numerik :

$array = array(0, 1, 2, 3);
unset($array[2]);
var_dump($array); //menampilkan hasil
 
//hasil
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [3]=>
  int(3)
} */ 

Di bawah ini sama seperti di atas, hanya saja index-nya "dirapikan" :

$array = array(0, 1, 2, 3);
array_splice($array, 2, 1);
var_dump($array);
 
//hasil 
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
} */

Cara lain :

$array = array(0, 1, 2, 3);
unset($array[2]);
$array = array_values($array);
var_dump($array);
 
//hasil 
/* array(3) {
  [0]=>
  int(0)
  [1]=>
  int(1)
  [2]=>
  int(3)
} */

Semoga berguna

Rabu, 19 Juni 2013

Belajar Pemrograman Python Bag. 5 : Contoh Program Python Sederhana

Oke mas bro dan mbak sis... kita belajar Python lagi yaaaaa.... kali ini gue coba membuat program-program Python sederhana. Sebelum mulai, gue bahas dulu tentang variabel di bahasa pemrograman secara umum dan Python pada khususnya.

Variabel di bahasa pemrograman mirip dengan variabel di matematika. Variabel di bahasa pemrograman digunakan untuk menyimpan nilai atau data. Pada dasarnya variabel dan nilai yang dikandungnya disimpan di dalam memori komputer, dan dapat digunakan pada saat diperlukan. Variabel di pemrograman akan tetap ada di dalam memori komputer, selama program masih jalan dan komputernya masih hidup. Misalnya kita ingin menyimpan bilangan di dalam suatu variabel pada pelajaran matematika, maka cukup ditulis : x = 10. Nah di pemrograman juga sama. Cuma untuk nilai yang berupa teks, penyimpanan di variabel ada aturannya. Contoh : nama = "joni". Perhatikan, untuk teks harus diapit tanda kutip dua. Sedangkan di Python, nilai atau data teks dapat diapit tanda kutip dua atau kutip satu. Lanjut, berikutnya contoh program Python untuk menampilkan nama yang disimpan di dalam suatu variabel :

#! python
# program menampilkan variabel

import sys

# menyimpan nilai ke dalam variabel (assignment)
nama = "Joni"
umur = "17"
tinggi = 170

# menampilkan nilai variabel
sys.stdout.write("\nNama : " + nama)
sys.stdout.write("\nUmur : " + umur)
sys.stdout.write("\nTinggi badan : " + str(tinggi) + " cm")

hasil program saat dieksekusi seperti gambar di bawah ini



Pada perintah : nama = "Joni", tanda = (sama dengan) disebut operator assignment.
Pada perintah : sys.stdout.write("\nNama : " + nama), tanda + (tambah) di situ bertindak sebagai operator penggabungan teks atau disebut concatenation operator. Selain itu, tanda \n digunakan untuk ganti baris. Karena tanpa tanda \n, nama, umur, dan tinggi badan akan ditampilkan cuma satu baris tidak seperti contoh gambar tampilan di atas. Tanda \n merupakan salah satu escape sequence. Kemudian variabel tinggi ditulis : str(tinggi), hal ini dilakukan karena tinggi berisi bilangan. Operator concatenation (+) tidak bisa menggabungkan bilangan. Oleh sebab itu tinggi diubah atau dikonversi menjadi bilangan dengan fungsi str( ) agar bisa digabungkan dengan teks sebelumnya.

Contoh berikutnya adalah program untuk menghitung suatu ekspresi matematika : m = a + b x c.

#! python
import sys

a = 2
b = 3
c = 4
m = a + b * c

sys.stdout.write("\na = " + str(a))
sys.stdout.write("\nb = " + str(b))
sys.stdout.write("\nc = " + str(c))
sys.stdout.write("\nm = a + b * c")
sys.stdout.write("\nm = " + str(a) + " + " + str(b) + " * " + str(c))
sys.stdout.write("\nm = " + str(m) + "\n")

hasilnya seperti gambar di bawah ini.





sekian... selamat belajar :)

Senin, 17 Juni 2013

Belajar Pemrograman Python Bag. 2 : Program Hello World

Melanjutkan postingan sebelumnya tentang Belajar Pemrograman Pyhton Bag. 1 : Instalasi sekarang mau belajar bikin program Python yang paling seupil yaitu program untuk menampilkan teks : hello world. Tapi karena gue orang Indonesia asli, tulisan yang mau ditampilkan diganti dengan : apa kabar duniaaaaaaa....

pertama bikin folder buat nyimpen file-file source code Python, nama foldernya terserahlah, punya gue sih namanya "belajar python" dan dibuat di drive D:. Nah habis itu buka program Notepad trus ketik perintah-perintah Python seperti pada gambar di bawah ini.

trus disimpen pakai nama : halo.py

Hati-hati waktu menyimpan file! waktu mengetik nama file, nama file-nya ditulis di antara tanda kutip dua ya! contoh : "halo.py"   penyebabnya karena kita kan pakai Notepad, ekstensi file Notepad adalah .txt, nah kalau kita tidak ketik nama file program Python pakai tanda kutip dua, nanti nama filenya jadi : halo.py.txt  kalo ekstensi filenya salah, nanti saat mau dieksekusi pasti salah juga (program ga bisa dijalankan)

Kalau file source code sudah disimpan dengan benar, sekarang tingga dijalankan / di-run / dieksekusi. Buka dulu Command Prompt-nya terus pinda ke folder tempat file program Python disimpan.
Lalu ketik : py halo.py (lihat gambar di bawah)





nah tuh tulisan "apa kabar duniaaaa..." sudah muncul. Berarti program telah sukses dieksekusi tanpa ada kesalahan.

Oke, saya akan coba menjelaskan tiap baris perintah di program Python yang sudah dibuat.

#! python

Perintah di atas (kayaknya sih -kan gue lagi belajar juga, jadi ya nebak-nebak aja- gak ilmiah ya?! hehehe) merupakan compiler directive yang berguna untuk interpreter Python (dan tidak berguna buat programmer, programmer mah cukup nulis perintah itu aja di baris paling atas). Catatan tambahan : yang pernah gue baca sih Python ini dibuat pakai bahasa C. Jadi ya perintah itu ngikutin bahasa C yang ada juga compiler directive-nya.

import sys

Perintah ini biasanya untuk menyertakan library atau class yang bernama sys. sys ini merupakan library atau class dasar yang harus ada di setiap program Python.

sys.stdout.write("apa kabar duniaaa...")

perintah ini adalah perintah untuk menampilkan teks. teks di pemrograman biasa disebut string. string d=harus diapit tanda kutip dua. Perintah ini diawali dengan perintah sys, berarti berkaitan dengan perintah : import sys. Coba aja perintah import sys dihapus. Pasti perintah sys.stdout.write("apa kabar duniaaa...") gak akan bisa dijalankan karena error. Dengan kata lain, pada waktu kita menggunakan suatu perintah, kita harus tau perintah itu ada di library / class apa. terus setelah kita tau nama library atau class-nya, nama library atau class tersebut di gunakan dengan perintah import.

ya gitu dulu ya belajar Python-nya... doain biar kita bisa belajar di bagian berikutnya.


Sabtu, 20 Oktober 2012

Simple Encryption - Decryption PHP Source Code

Source code to encrypting and decrypting text in PHP using Caesar chiper method.

Kode sumber PHP untuk melakukan enkripsi dan dekripsi sederhana menggunakan metode Caesar chiper.

<?php
  $kata = "halo";
  
   //mengubah string menjadi array karakter
  $arrHuruf = str_split($kata);

  $enkripsi = "";

  //proses enkripsi
  foreach ($arrHuruf as $tmp){
    $enkripsi .= chr(ord($tmp)+1);
  }
  
  echo $kata . " dienkripsi : " . $enkripsi;
  
  $arrHuruf = str_split($enkripsi);
  $dekripsi = "";
  
  //proses dekripsi
  foreach ($arrHuruf as $tmp){
    $dekripsi .= chr(ord($tmp)-1);
  }
  
  echo "<br>" . $enkripsi . " didekripsi : " . $dekripsi;
?>