Untuk Apa Belajar Algoritma?

Jika pembaca menjadi mahasiswa dan masuk ke program studi Teknik Informatika atau Ilmu Komputer, pasti akan mendapatkan satu mata kuliah ‘seram’ (katanya) yang berjudul Algoritma dan Pemrograman.

Apa yang dipelajari di sini? Secara umum, akan dipelajari tentang suatu langkah-langkah berhingga atau susunan instruksi-instruksi untuk menyelesaikan suatu masalah. Tidak melulu tentang komputer, bahkan awal-awal, mahasiswa akan ditanya bagaimana langkah-langkah untuk memasak nasi goreng misalnya.

Saat mulai masuk ke pemrograman, barulah nanti akan berkutat dengan suatu masalah-masalah matematis.

Nanti kalau saatnya tiba, mahasiswa tersebut akan dihadapkan dengan suatu istilah yang disebut algoritma. Seiring dengan berjalannya waktu, nanti akan diajarkan, bagaimana langkah sistematis untuk melakukan beberapa hal seperti Sorting (mengurutkan data) dan Searching (pencarian data). Algoritma untuk melakukan sorting misalnya, ada banyak: bubble sort, heap sort, insertion sortquick sort, dan metode lainnya. Untuk searching nanti juga akan dipelajari di antaranya sequential search dan binary search.

Sampai tahap ini, mahasiswa nantinya akan dihadapkan untuk memilih metode dan tools untuk mengimplementasikan algoritma yang ada. Misalnya, untuk bubble sort (mengurutkan array dengan metode gelembung), kode seperti ini (dalam bahasa C++) adalah contoh implementasinya:

#include

using namespace std;

int main() {
    int array[] = { 5, 7, 8, 9, 1, -2, 30, 10, 0, -4 };
    int N = 10; /* Jumlah data dalam array */

    /* Algoritma Bubble Sort */
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N-1; j++) {
            if (array[j] < array[j+1]) {
                int temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }

    for (int i = 0; i < N; i++) {
        cout << "array[" << i << "] = " << array[i] << endl;
    }

    return 0;
}

Tentang Bubble Sort silakan coba baca: http://en.wikipedia.org/wiki/Bubble_Sort

Ya, kode di atas adalah suatu urutan langkah-langkah yang tidak sembarangan untuk mengurutkan data dalam suatu array bilangan bulat. Walaupun sudah lumayan ribet, algoritma pengurutan di atas, bukanlah algoritma tercepat untuk mengurutkan data. Ada yang lebih cepat, yaitu algoritma yang bernama Quick Sort.

Well, beda algoritma, beda kode tentunya.

Kalau pembaca menggunakan bahasa pemrograman yang sudah canggih seperti Java, dan keluarga .NET (Visual Basic dan Visual C# misalnya), kita bahkan tidak perlu belajar algoritma sorting sama sekali untuk mengurutkan data. Berikut contoh dalam bahasa Java dan C#:


import java.util.Arrays;

public class CobaSorting {
    public static void main(String[] args) {
        int array[] = new { 5, 7, 8, 9, 1, -2, 30, 10, 0, -4 };

        Arrays.sort(array);

        for (int i = 0; i < array.length; i++) {
            System.out.println("array[" + i + "] = " + array[i]);
        }
    }
}

Dalam bahasa C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ContohSorting
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = { 5, 7, 8, 9, 1, -2, 30, 10, 0, -4 };
            Array.Sort(array); /* Mengurutkan Array */

            for (int i = 0; i < array.Length; i++)
            {
                Console.WriteLine("array[" + i + "] = " + array[i]);
            }
        }
    }
}

Kode di atas berisi contoh bagaimana mengurutkan data di dalam sebuah array bilangan bulat. Coba perhatikan dengan lebih teliti, seolah tidak ada cerita algoritma sorting di situ. Tiba-tiba output-nya telah terurut dengan sempurna, hanya dengan satu baris saja. Memodifikasi model pengurutannya-pun tinggal meletakkan parameter tertentu. Semuanya menjadi mudah.

Pada bahasa pemrograman canggih yang dibangun atas landasan Object Oriented Programming, berbagai hal, mulai dari pencarian, pengelolaan data, bahkan sampai struktur data yang kompleks pun telah disediakan.

Pembaca menggunakan Integrated Development Environment (IDE) seperti NetBeans atau Visual Studio? Jika ya, coba lakukan hal yang sangat sederhana ini.

Buka IDE yang pembaca miliki, deklarasikan sebuah tipe data sederhana saja. Saya contohkan, sebuah array dari suatu string (untuk menyimpan deretan karakter) dalam bahasa Java dan C#:

String[] arrayOfString = new String[5];
string[] arrayOfString = new string[5];

Sudah? Lalu, tekan enter, pada baris berikutnya ketikkan “arrayOfString” disertai tanda titik (‘.’), fitur intellisense atau code completion akan aktif secara otomatis. Tampilannya kira-kira seperti ini:

Bantuan intellisense pada objek arrayOfString pada Visual C#

Bantuan intellisense pada objek arrayOfString pada NetBeans

Daftar yang muncul setelah mengetik tanda titik (‘.’) itu adalah seluruh method (prosedur dan fungsi) dan properties yang bisa diterapkan atau diakses pada objek arrayOfString tersebut. Nyaris pada semua variabel dan objek, kita tinggal melakukan hal yang sama. Akan tersedia begitu banyak method dan properties yang akan sangat membantu.

Lalu, untuk apa belajar algoritma, kan semuanya sudah ada?

Tentu tidak begitu akhir dari logikanya.

Saat ini sudah banyak sekali tools yang membuat penekun IT dapat dengan mudah meningkatkan produktifitasnya. Segala sesuatunya telah terautomatisasi dengan sangat baik. Kalau dulu barangkali kita harus sering berhadapan dengan command line interpreter sekarang semuanya telah dibuat dalam bentuk graphical user interface. Tinggal klik sana klik sini, jadi.

Belajar algoritma membuat kita bisa lebih terstruktur ketika berpikir dalam menyelesaikan suatu masalah. Sekalipun sebenarnya kita tidak perlu berpikir banyak ketika di depan komputer ingin melakukan sorting terhadap suatu data, dengan mempelajari algoritma, kita bisa melihat lebih dalam sampai ke balik program tersebut dan mengetahui keseluruhan cara kerjanya.

Algoritma membuat kita terlatih untuk mencari penyelesaian masalah yang efektif dan juga seefisien mungkin. Tentunya ini bermanfaat sekali, tidak hanya saat di depan komputer saja, tapi juga saat berada di dunia nyata. Pikiran programmer yang tekun tentu lebih baik dalam merancang langkah-langkah pemecahan masalah.

Jadi, ayo belajar algoritma.😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s