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.

No comments:

Post a Comment