Showing posts with label Algorithm. Show all posts
Showing posts with label Algorithm. Show all posts

Friday, July 7, 2017

Kupas Tuntas Algoritma Pengurutan (sorting)


Pengurutan (sorting) adalah proses mengatur sekumpulan objek menurut urutan atau susunan tertentu. Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Pengurutan dikatakan stabil jika dua atau lebih data yang sama (atau identik) tetap pada urutan yang sama setelah pengurutan.
Pengurutan dapat dilakukan secara ascending (urutan naik) dan descending (urutan turun). Pengurutan (sorting)  merupakan proses pengurutan data yang sebelumnya disusun secara acak sehingga tersusun secara teratur menurut aturan tertentu.
Contoh :
Data acak     : 5 6 8 1 3 25 10
Ascending     : 1 3 5 6 8 10 25
Descending   : 25 10 8 6 5 3 1

Ada beberapa algoritma pengurutan dalam berbagai literatur komputer, yang akan dibahas antara lain :
  1. Metode pengurutan apung (Bubble Sort)
  2. Metode pengurutan seleksi (Selection Sort)
  3. Metode pengurutan sisip (Insertion Sort)
  4. Metode pengurutan Shell (Shell Sort)
Dua Algoritma pertama melakukan prinsip pertukaran elemen dalam proses pengurutan. Sedangkan dua algoritma terakhir melakukan prinsip geser dan sisip elemen dalam proses pengurutan.
Algoritma pengurutan dapat diklasifikasikan menjadi :
  • Algoritma pengurutan internal, yaitu algoritma pengurutan untuk data yang disimpan didalam memori komputer.
  • Algoritma pengurutan eksternal, yaitu metode pengurutan untuk data yang disimpan didalam disk storage, disebut juga pengurutan arsip.

Kupas Tuntas Algoritma Pengurutan Apung (Bubble Sort)

Algoritma pengurutan Apung (bubble sort) diinspirasi oleh gelembung sabun yang berada diatas permukaan air. Untuk mendapatkan data larik yang terurut menaik, loka dari algoritma pengurutan apung secara global sebagai berikut:

Untuk setiap pass i = 1, 2, … , n-1, lakukan :
mulai dari elemen k = n, n-1, …, i+1, lakukan :

     - Bandingkan L[k] dengan L[k-1]
     - Pertukarkan L[k] dengan L[k-1] jika L[k] < L[k-1]Logika Rincian setiap pass sebagai berikut:
  • Pass 1    : mulai dari elemen ke-k = n,n-1,…,2, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[1] berisi harga minimum pertama
  • Pass 2    : mulai dari elemen ke-k = n,n-1,…,3, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[2] berisi harga minimum kedua.
  • Pass 3    : mulai dari elemen ke-k = n,n-1,…,4, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan     L[k] dengan L[k-1], sehingga L[3] berisi harga minimum ketiga
lakukan sampai ke

  • .Pass n-1: mulai dari elemen ke-k = n, bandingkan L[k] dengan L[k-1]. Jika L[k]<L[k-1], pertukarkan L[k]     dengan L[k-1], pada akhir pass n-1, elemen L[n-1] berisi nilai minimum ke (n-1) dan larik L[1..n-1]     terurut menaik.
Algortimanya pengurutan apung/bubblesort dari kecil ke besar(ascending) bisa dituliskan sebagai berikut :


    procedure bubblesort1(input/output L: larikint, input n : integer)
    DEKLARASI
        i : integer
        k : integer
        temp : integer
    ALGORITMA
        for  i = 1 to n - 1 do
            for k =  n downto I + 1  do
                 if L[k] < L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1] = temp
                 endif
            endfor
        endfor


Algortimanya pengurutan apung/bubblesort dari besar ke kecil(descending) bisa dituliskan sebagai berikut :

    procedure bubblesort2(input/output L:larikint, input n:integer)
    DEKLARASI
        I : integer
        k : integer
        temp : integer
    ALGORITMA
        for  I = 1 to n - 1 do
            for k = n downto I + 1  do
                 if L[k] > L[k-1] then
                   temp = L[k]
                    L[k] = L[k-1]
                    L[k-1]= temp
                 endif
            endfor
        endfor


Untuk lebih mudah bisa diilustrasikan sebagai berikut :
klik 2x untuk memperbesar gambar
Pada gambar diatas pengecekan mulai dari data yang paling akhir, kemudian dibandingkan dengan data yang didepannya. Jika data didepannya lebih besar maka akan tukar tempat.

klik 2x untuk memperbesar gambar
 Pada proses kedua, proses dilakukan sampai data yang ke dua,  karena data pertama pasti sudah yang paling kecil yang merupakan hasil dari proses pertama.

klik 2x untuk memperbesar gambar

klik 2x untuk memperbesar gambar


Mudah-mudahan bisa dipahami.

Wednesday, November 2, 2016

Operator aritmatika, relasi dan logika dalam algoritma pemrograman



Dalam algoritma dan pemrograman dikenal beberapa operator diantaranya :
  1. Operator aritmatik, misalnya :
  2. Simbol keterangan
    +
    Penjumlahan
    -
    Pengurangan
    /
    Pembagian
    *
    Perkalian
    ^
    Pangkat
  3. Operator relasi/pembanding, misalnya 
  4. Simbol keterangan
    =
    sama dengan
    <
    lebih kecil
    <=
    lebih kecil sama dengan
    >
    lebih besar
    >=
    lebih besar sama dengan
    < >
    tidak sama dengan
  5. Operator logika, misalnya NOT, AND, OR :

Tuesday, November 1, 2016

Apa itu akumulator, variabel, counter, konstanta dan Kaidah dalam pembuatan flowchart



Kaidah yang harus diperhatikan dalam pembuatan flowchart :
  • Hindari pengulangan proses yg tdk perlu & logika yang berbelit 
  • Proses digambarkan (dari atas ke bawah) menggunakan tanda panah / flow direction 
  • Diawali satu titik START & diakhiri dengan END
Beberapa istilah dalam Algoritma :
  1. Akumulator, merupakan tempat penampungan suatu nilai. Nilai yang masuk akan dijumlahkan dengan nilai yang ada di dalamnya.
  2. Misalnya :  total = total + nilai
  3. Counter, teknik untuk mengontrol proses dalam pengulangan proses. Dilakukan dengan memeriksa isi variabel yang digunakan sebagai counter.
  4. Misalnya : a = a + 1
  5. Variabel, merupakan data yang nilainya bisa mengalami beberapa kali perubahan selama program dijalankan. Nilai yang tersimpan dlm variabel secara simbolis ditandai dengan identifier dan harus di deklarasikan terlebih dahulu.
  6. Misalnya : a,b : integer;  c : real;
  7. Konstanta, merupakan data yang nilainya bersifat tetap (tidak berubah) selama program dijalankan. Nilai yang tersimpan dalam konstanta secara simbolis ditandai dengan identifier dan harus dideklarasikan terlebih dahulu. 
  8. Misalnya : const  phi = 3.14;

Algorithm : Aturan dan Contoh Penulisan Algoritma



Algoritma memiliki aturan tersendiri dalam penulisannya. Algoritma yang baik memiliki ciri-ciri seperti yang sudah disebutkan dalam artikel sebelumnya. Algoritma dalam penulisannya memiliki tiga bagian utama yaitu : 
  1. Judul (header), berisi komentar algoritma seperti cara kerja program, kondisi awal dan akhir dari algoritma 
  2. Kamus, berisi definisi nama konstanta, variabel, nama prosedur atau fungsi serta penjelasan mengenai tipe data yang digunakan 
  3. Algoritma, berisi tulisan algoritma yang akan dijalankan kecuali tulisan yang diberikan tanda komentar dalam bentuk  { }
Contohnya sederhananya bisa dilihat dibawah ini :

Program Hitung_nilai { menghitung nilai yang dibaca dari piranti masukan dan hasilnya dicetak ke piranti keluaran } 

Kamus 
hasil, x, y : integer
{ hasil merupakan variabel untuk menampung nilai keluaran } { x,y adalah variabel untuk menampung nilai masukan }

Algoritma 
Input (x,y)  { membaca nilai x dan y dari piranti masukan }
If  (x <  y) then     { operasi kondisional }
    hasil = x + y
else
    hasil = x - y
output (hasil) { nilai didalam variabel hasil dicetak ke piranti keluaran }

Kumpulan Materi Kuliah Algoritma dan Pemrograman

Kumpulan Materi mata kuliah Algoritma, mudah-mudahan bermanfaat untuk referensi kuliahnya :
  1. Definisi Algoritma, Ciri algoritma yang baik & Perbedaan Algoritma dan Bahasa Pemrograman
  2. Aturan dan Contoh Penulisan Algoritma
  3. Simbol dan jenis-jenis flowchart
  4. Kaidah - kaidah dalam pembuatan flowchart
  5. Apa itu  akumulator, variabel, counter, konstanta ?
  6. Operator aritmatik, relasi dan logika dalam algoritma pemrograman
  7. Algoritma Pengurutan (Sorting)
  8. Algoritma Pengurutan Apung (Bubble Sort)

Materi berikutnya akan segera menyusul, harap bersabar.

Algorithm : Simbol dan Jenis-jenis Flowchart



Untuk menggambarkan sebuah algoritma kita bisa menggunakan flowchart. Flowchart adalah adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program.
Flowchart memiliki beberapa bagian mulai dari start, predefined, input, output sampai ke finish. setiap bagian memiliki fungsi masing-masing untuk menggambarkan langkah-langkah yang ada dalam sebuah algoritma/program. Bagian-bagian tersebut bisa dilihat pada gambar berikut ini :

Pilih untuk memperbesar gambar

Flowchat terdiri dari beberapa jenis, diantaranya :
1. Flowchart Sistem
Flowchart Sistem merupakan bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan di dalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang ada di dalam sistem. Dengan kata lain, flowchart ini merupakan dekripsi secara grafik dari urutan prosedur-prosedur yang terkombinasi yang membentuk suatu sistem. Flowchart Sistem terdiri dari data yang mengalir melalui sistem dan proses yang mentransformasikan data itu. Data dan proses dalam flowchart sistem dapat digambarkan secara online (dihubungkan langsung dengan komputer) atau offline (tidak dihubungkan langsung dengan komputer, misalnya mesin tik, cash register atau kalkulator). 
2. Flowchart Dokumen 
Bagan alir dokumen (document flowchart) atau disebut juga bagan alir formulir (form flowchart) atau paperwork flowchart merupakan bagan alir yang menunjukkan arus dari laporan dan formulir termasuk tembusan-tembusannya. Bagan alir dokumen ini menggunakan simbol-simbol yang sama dengan yang digunakan di dalam bagan alir sistem. 

3. Flowchart Skematik 
Bagan alir skematik (schematic flowchart) merupakan bagan alir yang mirip dengan bagan alir sistem, yaitu untuk menggambarkan prosedur di dalam sistem. Perbedaannya adalah, bagan alir skematik selain menggunakan simbol-simbol bagan alir sistem, juga menggunakan gambar-gambar komputer dan peralatan lainnya yang digunakan. Maksud penggunaan gambar-gambar ini adalah untuk memudahkan komunikasi kepada orang yang kurang paham dengan simbol-simbol bagan alir. Penggunaan gambar-gambar ini memudahkan untuk dipahami, tetapi sulit dan lama menggambarnya. 

4. Flowchart Program 
Bagan alir program (program flowchart) merupakan bagan yang menjelaskan secara rinci langkah-langkah dari proses program. Bagan alir program dibuat dari derivikasi bagan alir sistem. Bagan alir program dapat terdiri dari dua macam, yaitu bagan alir logika program (program logic flowchart) dan bagan alir program komputer terinci (detailed computer program flowchart). Bagan alir logika program digunakan untuk menggambarkan tiap-tiap langkah di dalam program komputer secara logika. Bagan alir logika program ini dipersiapkan oleh analis sistem. 

5. Flowchart Proses 
Flowchart Proses merupakan teknik penggambaran rekayasa industrial yang memecah dan menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem.

Friday, October 28, 2016

Algorithm : Definisi, ciri-ciri Algoritma yang Baik



Apa itu Algortima :
Banyak pengertian beberapa diantaranya :
  • "Urutan logis pengambilan putusan untuk pemecahan masalah" (kamus Besar Bhs. Indonesia, 1988
  • "Urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis " (Rinaldi Munir, 1999)
  • “Merupakan kumpulan perintah untuk menyelesaikan suatu masalah” (http://id.wikipedia.org/wiki/algoritma)
Ciri-ciri Algoritma yang baik :
  1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas
  2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (ambigous) 
  3. Algoritma memiliki nol atau lebih masukan (input) 
  4. Algoritma memiliki nol atau lebih keluaran (output) 
  5. Algoritma harus sangkil (effective)
Memrogram vs Bhs. Pemrograman 
Belajar memprogram tidak sama dengan belajar bahasa Pemrograman

Belajar memprogram 
Belajar strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah lalu menuliskannya dalam notasi yang disepakati bersama (misalnya : flowchart atau pseudocode) 

Belajar Bahasa Pemrograman 
Belajar memakai suatu bahasa pemrograman, aturan sintaks, tata cara memanfaatkan instruksi yang spesifik untuk setiap bahasa (misalnya : PHP, Python, Cobol, Pascal, Basic, C++, JAVA)