Tuesday, August 30, 2016

Cara Penulisan Algoritma

Di dunia kerja, sebenarnya tidak ada cara baku dalam penulisan algoritma. Bahkan, untuk membaca algoritma dari suatu program yang ditulis orang lain, mereka langsung membacanya dari kode sumber program.

Namun demikian, cara tersebut adalah cara yang digunakan oleh orang yang sudah mahir bahasa pemrograman tertentu dan sudah terbiasa dengan membaca kode. Lalu bagaimana dengan orang-orang yang baru belajar? Maka di sinilah pentingnya cara penulisan algoritma.

1) Deskriptif

Cara penulisan algoritma secara deskriptif sebenarnya sudah dilakukan pada postingan terdahulu, yakni merinci langkah-langkah poin per poin. Sangat penting untuk menulis kata "Selesai" karena itu berarti algoritma kita berjalan sesuai dengan hasil yang diharapkan.

2) Flowchart

Cara penulisan algoritma yang lebih populer adalah dengan menggunakan flowchart atau diagram alir. Contoh flowchart seperti berikut,



Flowchart di atas menggambarkan algoritma mencari luas sebuah lingkaran dari r yang diinputkan oleh user. Pada flowchart, sangat penting untuk menuliskan kata "Start" dan "End" dengan bentuk segiempat bersudut lingkaran (rounded rectangle).

Input dan output digambarkan dalam bentuk jajar genjang (parallel epipedum), sedangkan pemrosesan digambarkan dalam bentuk kotak persegi panjang.

Contoh lainnya,



Contoh di atas adalah algoritma menampilkan bilangan berkelipatan 3 dengan limit yang diinputkan oleh user. Pada contoh di atas, yang baru adalah bentuk belah ketupat dengan dua cabang (branch). Itu adalah contoh branching (masih ingat nggak?). Statement "n % 3 == 0" menunjukan bahwa apakah bilangan n tersebut habis dibagi tiga atau tidak. Jika ya, maka tampilkan n di layar dan jika tidak, lanjut ke baris berikutnya.

Perhatikan bahwa pada statement kondisi "n <= limit", jika benar maka langkahnya kembali ke atas. Ini adalah contoh looping (repetition).

Anak panah menunjukkan urutan pengerjaannya. Ini merupakan implementasi dari dasar algoritma "sequence" (berurutan).

3) Pseudocode

Cara yang terakhir adalah dengan menggunakan kode palsu. Artinya, penjelasan algoritma melalui bahasa tertentu tetapi bukan bahasa pemrograman. Faktanya, tidak ada aturan baku dalam penulisan pseudocode. Malah, penulisan pseudocode sangat dipengaruhi oleh bahasa apa yang dikuasai oleh penulis. Bisa jadi, pseudocode lebih mirip cara penulisan algoritma secara deskriptif hanya bedanya cara penulisan pseudocode memiliki indentasi yang lebih memudahkan pembacaan. Contoh algoritma mencetak bilangan berkelipatan 3 yang dicontohkan di atas:

INPUT limit
n = 1
WHILE n <= limit
    IF n % 3 == 0 THEN
        PRINT n
    n = n + 1
END WHILE

Lebih mirip bahasa pemrograman kan?


Lalu timbul pertanyaan. Cara manakah yang paling efektif dalam penulisan algoritma? Tentu saja sesuai dengan yang ditanyakan di dalam soal. Hahaha... Kalau Dosen / Guru meminta kita untuk menulis algoritma dengan menggunakan flowchart, ya jangan jawab dengan menggunakan pseudocode dong.

Seperti yang telah saya singgung sebelumnya, pada dasarnya tidak ada keharusan harus menggunakan cara yang bagaimana. Bahkan bahasa-bahasa pemrograman di abad ini sudah sedemikian mendekati bahasa manusia sehingga algoritmanya pun bisa dibaca dengan mudah.

Bahasa-bahasa scripting seperti Python, Ruby, Javascript juga sudah sangat mudah untuk dimengerti. Apalagi semua bahasa pemrograman mengijinkan penulisnya menulis komentar di setiap baris kode. Jadi, take it easy, guys.

Belajar algoritma itu menyenangkan kok!

Monday, August 29, 2016

Dasar-Dasar Algoritma Pemrograman

Hai. Jumpa lagi dengan mas ganteng saya. Kali ini seperti janji yang pernah saya ucapkan, saya akan membahas tentang dasar-dasar algoritma.

Yang dimaksud dengan dasar-dasar algoritma adalah bahwa hal-hal berikut ini sangat penting diketahui dan tentu saja merupakan jenis algoritma paling dasar yang membentuk macam-macam algoritma lainnya.

Dengan mengetahui dasar-dasar algoritma, kamu punya modal untuk mempelajari algoritma lainnya. Ibarat menggunakan kalkulator, kamu setidaknya harus tahu matematika dasar, kan? Begitu juga dengan dasar-dasar algoritma juga harus diketahui sebelum menyelam ke dalam dunia algoritma dan implementasinya ke dalam pemrograman.

1. Sequence (Runtutan)

Algoritma yang pertama adalah sequence (berurutan). Artinya, sesuatu bisa/harus dikerjakan secara berurutan. Kita beri contoh algoritma makan
1) Ambil piring
2) Ambil sendok dan garpu
3) Ambil nasi
4) Ambil sayur
5) Ambil lauk pauk
6) Makan
7) Selesai

Pada contoh di atas, ambil nasi (3) tidak boleh ada lebih dulu sebelum ambil piring (1) sebab tidak mungkin ambil nasi tanpa ambil piring. Sedangkan langkah (2), (3), (4), dan (5) bisa dilakukan tanpa mengindahkan urutannya.

Contoh lagi, algoritma mencari luas segitiga
1) Masukkan nilai alas
2) Masukkan nilai tinggi
3) Tentukan luas dengan rumus luas = 1/2 * alas * tinggi
4) Tampilkan nilai luas
5) Selesai

Pada contoh algoritma di atas, langkah (1) dan (2) boleh dibolak-balik. Akan tetapi letaknya tidak boleh sesudah langkah (3) karena langkah (3) memerlukan input berupa nilai alas (1) dan nilai tinggi (2).

2. Branching (Percabangan / Selection)

Dasar Algoritma yang kedua adalah branching atau sering juga disebut selection. Pada algoritma ini, sebuah kondisi diuji untuk menghasilkan nilai benar dan salah. Kemudian dilakukan sebuah tindakan untuk nilai tersebut.

Bingung ya? Hahaha... Gini deh. Kita contohkan algoritma menentukan bilangan genap atau ganjil.

1) Masukkan sebuah nilai n
2) Jika nilai n habis dibagi 2, maka tampilkan hasil "bilangan genap"
3) Jika nilai n tidak habis dibagi 2, maka tampilkan hasil "bilangan ganjil"
4) Selesai

Inti dari branching adalah kata "Jika/If".  Pada langkah 2, kondisi yang dites adalah "nilai n habis dibagi 2" dan ketika hasilnya "benar" yakni n habis dibagi 2, maka tindakannya adalah tampilkan hasil "bilangan genap".

Perlu diingat bahwa tindakan dapat terjadi jika kondisinya bernilai "benar". Pada contoh (3) terlihat seakan-akan hasilnya salah. Padahal benar. Kondisi "nilai n tidak habis dibagi 2" bernilai "benar" jika bilangan itu tidak habis dibagi 2.

If ... Else ...

Algoritma di atas sudah benar. Hanya saja, akan lebih efisien kalau menggunakan if-else. Kondisi pada langkah (3) adalah kebalikan dari langkah (2) dan ini bisa dipersingkat dengan algoritma berikut:

1) Masukkan sebuah nilai n
2) Jika nilai n habis dibagi 2, maka tampilkan hasil "bilangan genap". Jika tidak, maka tampilkan "bilangan ganjil"
3) Selesai

 Jadi, else adalah tindakan yang dilakukan ketika kondisinya bernilai "salah".

Algoritma branching bisa dipersingkat dengan kata-kata "jika ini benar maka lakukan tindakan ini jika tidak maka lakukan tindakan itu"

3) Looping/Repetition (Perulangan)

Maksud dari algoritma ini adalah mengulangi langkah secara terus menerus selama kondisi tertentu terpenuhi. Nah loh, bingung lagi. Gini aja deh. Kita langsung ke contoh algoritma cetak bilangan dari 1 sampai 5. Jika kita menggunakan algoritma sequence, maka kita bisa buat sebuah langkah-langkah algoritma sebagai berikut:

1) Cetak 1
2) Cetak 2
3) Cetak 3
4) Cetak 4
5) Cetak 5
6) Selesai

 Maka ada 5 langkah (Belum termasuk langkah (6)). Bayangkan jika yang diinginkan adalah cetak angka sampai 1000. Apa nggak bonyok? Nanti kalau nulis kodenya gimana? Copy paste kode pun nggak gampang. Untuk itulah, looping to the rescue. Algoritma di atas bisa disingkat dengan menggunakan repetition/looping menjadi:

1) Masukkan nilai n = 5
2) Nilai i = 1
3) Cetak i
4) i = i + 1
5) Jika i <= n  maka ulangi langkah (3)
6) Selesai

Jika kita perhatikan memang agak sedikit berbelit-belit, namun yang pasti: logis dan sistematis. Kita bisa mencetak angka berapapun hanya dengan mengganti nilai n. Misal kita mau cetak 1000 angka, bisa!

Perhatikan langkah nomor (5). Repetition/looping juga melibatkan algoritma branching (if). Ketika kondisi terpenuhi, maka langkah menjadi naik sampai kondisi tidak dipenuhi lagi.

Gimana? Gampang kan!


Demikianlah pembahasan tentang dasar-dasar algoritma pemrograman. Sejauh ini kita masih belum mengimplementasikannya ke dalam kode program sama sekali.

Sebelum teman-teman belajar lebih dalam lagi tentang algoritma pemrograman, wajib hukumnya untuk memahami tiga algoritma dasar di atas.

Sunday, August 28, 2016

Apa Itu Algoritma?

Sebagai mahasiswa jurusan Teknik Informatika dan sebangsanya, atau SMK jurusan Rekayasa Perangkat Lunak, kata "algoritma" seharusnya sudah sering diucapkan. Namun tidak banyak yang tahu apa itu sebenarnya algoritma dan dari mana kata algoritma berasal.

Alkisah, saat dunia Eropa mengalami masa yang disebut abad kegelapan (darkness age), di belahan dunia lain justru sedang terjadi abad pencerahan. Dunia Islam sangat berjasa dalam menjaga mata rantai ilmu pengetahuan melalui para ilmuwan yang belajar dari terjemahan buku-buku Yunani/Romawi.

Tersebutlah salah seorang matematikawan bernama Muhammad Ibnu Musa al-Khawarizmi. Tidak hanya matematikawan dia juga seorang ahli astronomi dan geografi berkebangsaan Persia. Seorang ulama (kata lain dari sarjana) dari Baitul Hikmah (Rumah Kebijaksanaan).

Konon, kata "algoritma" berasal dari namanya "al-khawarizm" kemudian lidah Eropa (setelah keluar dari masa kegelapannya itu) menyebutnya sebagai "algorithm".

Gambar A-Khawarizmi. Foto diambil dari sini

Fibonacci, seorang matematikawan yang pastinya kita kenal, sangat tergila-gila dengan karya-karya al-Khawarizmi. Al-Khawarizmi dalam setiap awal bukunya selalu memuji keagungan Sang Pencipta. Fibonacci pun kemudian mengamati ciptaan dari Sang Pencipta ini dan dari hasil kontemplasinya ini terciptalah deret Fibonacci yang dia klaim sebagai "deretan bilangan alami". Mungkin Fibonacci tidak tahu kalau hampir seluruh karya tulis yang disusun oleh umat Islam selalu (meski tidak semua) diawali dengan kata pengantar (muqaddimah) dengan memuji keagungan Allah dan sholawat kepada Nabi Muhammad saw.

Jadi sudah tahu kan, teman-teman. Itulah asal kata Algoritma.

Lalu apa sih algoritma itu?

Oh iya, pertanyaan ini belum terjawab, sodara. Pengertian algoritma bisa jadi sangat membosankan:
Algoritma adalah susunan yang logis dan sistematis untuk memecahkan suatu masalah atau untuk mencapai tujuan tertentu.

Gimana? Bosenin kan? Sebenarnya algoritma itu nggak selalu identik dengan komputer. Hanya saja, ketika kita berbicara "algoritma pemrograman" maka pasti yang dibahas adalah menggunakan algoritma dalam pembuatan kode-kode program.

Contoh algoritma dalam kehidupan sehari-hari, misalnya ketika kita mandi. Eh, jangan ambil contoh itu. Terlalu v*lg*r. Kita ambil contoh lain, misalnya saat menyalakan motor.

1) Keluarkan motor dari garasi
2) Putar kunci ke posisi on
3) Nyalakan motor dengan menggunakan salah satu cara:
    3.a) Kick starter, atau
    3.b) Electric starter
4) Jika menggunakan motor bergigi, masukkan gigi 1
5) Tarik gas
6) Selesai

Penting sekali untuk menulis kata "Selesai" karena itu artinya algoritma kita telah sampai pada tujuan yang dimaksud.

Pada dasarnya dalam kehidupan kita tidak pernah lepas dari algoritma, disadari atau tidak. Apapun yang berkaitan dengan prosedur dan tujuan, pasti berhubungan dengan algoritma. Hanya saja, sesuatu prosedur bisa disebut sebagai algoritma ketika dia disusun secara sistematis seperti pada algoritma "menyalakan motor" di atas.

Inti dari algoritma adalah mencapai tujuan tertentu. Jika tujuan tidak tercapai, berarti algoritma kamu gatot alias gagal total. Dikatakan secara logis dan sistematis, jadi kesampingkan keajaiban di sini. Tidak mungkin sebuah komputer melakukan tugas tanpa kita program. Dan tidak ada program yang bisa digunakan tanpa algoritma. Jadi, algoritma dan pemrograman itu bagaikan dua sisi dalam satu mata uang.

Satu hal lagi. Karena algoritma didasarkan pada hasil, maka bisa jadi setiap orang memiliki algoritma yang berbeda-beda asalkan hasilnya benar.

Sekian dulu pembahasan apa itu algoritma dari seorang pemula ini. Moga teman-teman sudah punya gambaran sekilas tentang apa itu algoritma. Kalau ada waktu akan dijelaskan dasar-dasar algoritma. Selamat menunggu.

Friday, August 26, 2016

Hallo Dunia

Hai semuanya. Ini adalah postingan pertama dari blog Gudang Algoritma. Blog ini berisi hal-hal yang berhubungan dengan algoritma dan pemrograman, seperti pengenalan dasar algoritma, macam-macam algoritma, serta bahasa-bahasa pemrograman yang bisa digunakan untuk menyelesaikan suatu algoritma.
Ada juga pembahasan soal-soal algoritma lo! Jadi pantengin terus blog ini.
Sementara itu, saya mau tidur dulu. Ngok...