Pengertian Algoritma dan Jenis-Jenisnya Dalam Pemograman

Matamu.Net - Pernah dengar kasus seperti ini? Bagaimanakan cara mendapatkan Air sebanyak 4 liter, jika kamu hanya diberi wadah air sebesar 3 liter dan 5 liter air?

Solusi untuk mendapatkan air 4 liter tentu saja akan mudah kecuali jika diberikan kondisi (syarat) awal yakni wadah alat ukur yang tersedia hanya berupa ember 3 liter dan 5 liter, sisanya boleh memiliki wadah apa saja tanpa ukuran.

Solusinya yang benar dan diakui harus disampaikan secara runut agar solusi (output) didapatkan tetap sesuai dengan syarat awal (Input). Mungkin akan ada banyak solusi yang diberikan dan hal tersebut bukanlah masalah, selama tidak syarat yang dilanggar dan solusi yang diinginkan terpenuhi.

Misalkan dua solusi untuk kasus ini sebagai berikut :
Metode I

  1. Ambil air melalui wadah 3 liter, kemudian tuangkan ke ember 5 liter.
  2. Ambil lagi air dengan wadah tiga liter kemudian tuangkan ke wadah 5 liter yang sudah berisi 3 liter air, maka akan ada sisa 1 liter di wadah tiga liter.
  3. Tumpahkan air yang ada pada ember 5 liter sampai kosong
  4. Tuangkan 1 liter air yang ada pada wadah 3 liter ke wadah 5 liter, sampai wadah 3 liter kosong.
  5. Isi kembali air wadah 3 liter, kemudian gabungkan dengan air 1 liter yang ada pada wadah 5 liter maka anda akan mendapatkan air sebanyak 5 liter

Metode II

  1. Ambil Air dengan wadah 5 liter, kemudian tuangkan air ke dari wadah 5 liter ke wadah 3 liter.
  2. Buang air dri wadah 3 liter, kemudia isi dengan 2 liter air yang ada pada wadah 5 liter.
  3. Isi ember air 5 liter, kemudian tuangkan air tersebut ke ember 3 liter yang sudah berisi 2 liter air, maka sisanya akan ada air 4 liter di wadah 5 liter. 

Dua langkah atau solusi yang ditawarkan tersebut tentu saja sudah memenuhi syarat yang diberikan dengan hasil yang sama, namun dari kedua langkah tersebut ada metode yang boros namun ada juga metode yang hemat, disini kembali lagi kepada si pemberi solusi, namun metode yang digunakan ini selanjutnya disebut algoritma.



Gambar Algoritma dan Permograman

A. Pengertian Algoritma

Algoritma adalah sebuah prosedur runut yang digunakan untuk menyelesaikan masalah yang diberikan. Langkah-langkah harus berisi prosedur sistematis, dan logis. Dengan demikian prosedur tersebut tidak boleh melanggar syarat-syarat awal yang diberikan dengan tujuan menyelesaikan (1) proses perhitungan, (2) pemrosesa data, dan atau (3) penalaran secara otomatis.

1. Defenisi Informal

Defenisi sederhana dari berisi instruksi-instruksi yang terang dan jelas sehingga solusi yang diharapkan sesuai dengan syarat yang diinginkan. Dalam sebuah langkah-langkah tersebut, masih bisa diberikan satu proses langkah-langkah (solusi) baru selama masalah dan Langkah yang diajukan tidak saling bertentangan.

Misalnya : Pergilah ke pasar membeli indomie 2 bungkus, maka sosuli adalah ke pasar membeli indomie sesuai dengan perintah, namun jika diberikan syarat tambahan, pergilah kepasar membeli 2 bungkus indomie, jika ada telur, belilah 2 butir telur.

Perintah baru tersebut akan menghasilkan dua kemungkinan hasil yang pertama anda pulang hanya membawa 2 bungkus indomie atau anda bulang membawa dua bungkus indomie dan 2 butir telur, namun solusi yang tidak mungkin muncul adalah pulang hanya membawa 2 butir telur, karena syarat membeli telur bisa terpenuhi jika ada indomie.

Pada awalnya Algoritme diperkenalkan oleh Al-Khawarizmi untuk menyelesaikan masalah-masalah aritmatika menggunaka bilangan arab yang kebanyakan merupakan penyelesaian dari persamaan kuadrat.

Pada perkembangannya, Algoritma ini digunakan sebagai dasar pengambilan keputusan dari sebuah masalah yang ada. Metode ini dikenal sebagai algortima modern dan diperkenalkan oleh David Hilbert tahun 1928.

Perkembangan Algoritme sangat membantu dibidang komputasi dan menjadi dasar pengembangan pada bidang Komputerisasi dan dunia IT. Secara spesifik Algotime modern didefenisiskan sebagai metode praktis dan terstruktur yang digunakan untuk menyelesaikan serangkaian masalah-masalah yang menggunakan bantuan komputer.

2. Defenisi Formal Algoritma

Secara umum defenisi Algoritma yang merujuk pada rentetan langkah yang digunakan untuk menyelesaikan sebuah program hanya bersifat informal dan tidak operasional, namun ada banyak masalah yang berkaitan dengan matematika dan komputasi yang membutuhkan proses yang lebih kompleks.

Sebut saja contoh dari masalah yang menentukan bilangan pembagi terbesar dari dua integer. Masalah ini diselesaikan dengan menggunakan menggunakan Algoritme Euclid. Seperti flowchart di bawah ini :

Flowchart Algoritma Euclid

Defenisi informal lain dari Algoritma dijelaskan oleh Boolos dan Jeffre (1999) melalui analogi berikut ini :
Tidak ada manusia yang bisa menulai dengan sangat cepat, dalam waktu yang lama, atau bagian yang kecil disertai limit tanpa batas dengan teliti, misalnya menulis bilangan dengan jumlah tidak terbatas dengan menuliskan penyebutan dari setiap bilangan tersebut. Akan tetapi manusia bisa membuat instruksi jelas untuk menentukan anggota bilangan ke-n sebuah set untuk n secara tidak terbatas dan acak. Instruksi secara eksplisit ini dihitung menggunakan bantuan mesin sedangkan manusia hanya melakukan operasi-operasi dasar dengan simbol.

Satu bilangan tidak-hingga adalah bilangan yang setiap elemenya bisa berkorespondensi dengan suku ke n bilangan ineteger. Sebuah Algoritma akan berisi instruksi yang akan menjadi penentu dari keluaran dengan nilai integer dengan nilai yang bisa saja sangat besar menurut teori. Oleh karena itu dapat disimpulkan jika persamaan aljabar seperti y = m + n, dimana m dan n adalah imput dengan variabel output y.

B. Ciri-Ciri Algoritma

Ciri-ciri dari Algoritma adalah sebagai berikut :

  1. Memiliki input, proses dan output.
  2. Memiliki instruksi yang jelas dan tidak ambigu.
  3. Mememiliki perintah untuk berhenti

C. Fungsi Algoritma


Fungsi Algoritma memiliki beberapa jenis manfaat seperti berikut ini :

  1. Menyelesaikan masalah yang rumit dan panjang terutama jika diselesaikan dengan perhitungan manual.
  2. Menyerdahanakan program rumit menjadi lebih sederhana.
  3. Mengurut penyelesaian masalah dengan logika berurut baik itu top-down, bottom-up, devide maupun conguer dengan waktu yang singkat.
  4. Memberikan solusi terstruktur dan rapi dengan kesimpulan yang lebih mudah diphami terutama untuk kasus-kasus deret.
  5. Membantu proses modifikasi persamaan jika ada program ingin diperbaiki.

D. Jenis-Jenis Algoritma

Ada berapa jenis Algortima yang sudah dikembangkan, yakni :

1. Devide and Conquer

Algoritma adalah jenis penyelesaian masalah dengan memecahkan masalah dari yang paling besar menjadi masalah yang lebih kecil untuk diselesaikan. Keseluruhan masalah dibagi dari masalah besar kemudian dibentuk masalah-masalah lebih kecil. Mungkin analog dengan program Visi yang dipecah menjadi misi-misi yang harus diselesaikan.

2. Dynamic Programming

Secara umum, paradigma pemograman Dynamics digunakan untuk menyelesaikan masalah yang terdiri dari banya sub struktur yang mungkin saja tumpang tindih. Meskipun secara umum paradigma Dynamic Programing terlihat mirip dengan Divide and Conquer.

3. Metode serakah

Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.

4. Sistem Flowchart 

Sistem Flowchart adalah algoritma yang digambarkan dengan diagram alir untuk menunjukkan sebuah proses runut dan lengkap mulai dari Start-Input-Output-Decision-Looping-end. Tujuan untuk memudahkan memecahkan masalah menggunakan aturan biner yakni 1 atau 0 dari sebuah masalah. Jika masalah terdiri dari beberapa syarata maka masalah akan dirunutkan.

5. Pseudo Code (Kode Semu) 

Pseudo Code (kode semu) merupakan metode yang cukup efisien untuk menggambarkan suatu algoritma . Pseudo Code dituliskan dengan menggunakan bahasa yang mudah dipahami (boleh menggunakan bahasa Indonesia) agar alur logika yang digambarkan dapat dimengeti oleh orang awam sekalipun. Flowchart Pseudo Code (kode semu) disusun dengan tujuan untuk menggambarkan tahap-tahap penyelesaian suatu masalah dengan kata-kata (teks).

Metode ini mempunyai kelemahan, dimana penyusunan algoritma dengan kode semu sangat dipengaruhi oleh tata bahasa pembuatnya, sehingga kadang-kdang sulit dipahami oleh orang lain. Oleh karena itu kemudian dikembangkan suatu metode lain yang dapat menggambarkan suatu algoritma program secara lebih mudah dan sederhana yaitu dengan menggunakan flowchart (diagram alir). Manfaat Algoritma Adapun manfaat algoritma sendiri yaitu untuk membantu seseorang dalam menyelesaikan suatu masalah berdasarkan pada pola pikirnya masing-masing.

D. Karakteristik Algoritma

Algoritma memiliki beberapa karakteristik sebagai berikut :

  1. Tidak terikat pada simbol, syntaks dan coding dari sebauh bahasa program
  2. Notasi dapat diaplikasikan ke seleuruh bahasa program
  3. Memiliki struktur dasar yang dibangun.
Secara umum semua jenis algoritma hanya terbagai ke dalam tiga jenis yakni :

1. Sequence

Sequence atau berurut adalah sebuah rancangan algoritma yang memberikan instruksi secara berurut untuk menyelesaikan masalah langkah demi langkah. Urutan penyelesaian masalah hanya mengarah ke satu arah saja.

Misalnya sebagaiprogram mengitung bilangan maka urutan nya hanya ditulis :

A = 4
B = 3
C = A*B
Print C!

Program ini menunjukkan sebuah instruksi dengan hasil 12 karena hanya akan melakukan proses 4 dikali dengan 3.

2. Decision 

Decision adalah sebuah algoritma yang menawarkan dua solusi atau lebih, namun proses penyelesainnya harus lah berdasrakan aturan binari atau ya dan tidak saja. Output yang diberikan harus seusai dengan syarat yang ada.

Sebagai contoh program pemilihan (decision) adalah masalah penilaian mahasiswa, misalnya seorang mahasiswa memiliki beberapa tugas yang akan diberikan nilai akhir yang dikonversi dari skor yang ada.

UTS = 70
UAS = 80
"SA = skor akhir"
SA = (UTS * UAS)/2
If SA > 75 then print "Lulus"
Else print "Gagal"

Dari runutan algoritma di atas maka otuput dari penilaia mahasiswa diatas akan tercetak Gagal, bukan skor SA 75. 

Program Decision bisa ditambahkan dnegan syarat baru yang lebih varitaif jika output yang diharapkan tidak sekedar lulus dan gagal.

UTS = 70
UAS = 80
"SA = skor akhir"
SA = (UTS * UAS)/2
If SA > 80 then print "A"
Else If SA > 70 then print "B"
If SA > 60 then print "C"
Else print "E"

Berdasarkan perintah yang ditunjukkan di atas maka hasil yang akan diprint out adalah B, karena skor adlaah 75. Hal yang harus diperhatikan adalah penempatan NOtasi matematika yang benar sebagai syarat print, mislanya jika saya balik kondisi di atas :

UTS = 70
UAS = 80
"SA = skor akhir"
SA = (UTS * UAS)/2
If SA > 0 then print "E"
Else If SA > 60 then print "C"
If SA > 70 then print "B"
Else print "A"

Perintah ini tidak menunjukkan cacat logika dan sudah benar, hanya membangun perintah tidak sesuai dengan diharapkan dimana berapapun hasilnya maka syarat pertama pasti akan terpenuhi yakni skor akan selalu di atas 0, oleh karena syarat ke dua tidak akan pernah didapatkan.

3. Looping

Looping merupakan struktur dasar algoritma dimana struktur decision yang diarakan kembali ke atas jika syarat belum memenuhi untuk diselesaikan. Misalnya perintha membuat array dan di print dengan perintah :

Print 1 : 2 : 9

instruksi memebrikan perintah untuk mencetak angka dari satu sampai 9 dengan kelipatan dua, maka yang akan tercetak 1, namun setelah satu, peritnah akan kmeblai ke atas, karena perintah hanya akan berhenti jika lebih kecil atau sama dengan 9, oleh karan yang akan tercetak adalah 

1  3  5  7 9