Pengertian Algoritma
Pengertian algoritma adalah suatu urutan dari beberapa langkah yangg logis guna menyelesaikan masalah. Pada saat kita memiliki masalah, maka kita harus dapat untuk menyelesaikan masalah tersebut dengan menggunakan langkah-langkah yangg logis. Contoh dari algoritma sederhana dalam kehidupan nyata adalah pada saat memasak air. Hal-hal yangg perlu dilakukan untuk memasak air seperti berikut : siapkan panci, masukkan air secukupnya ke dalam panci, tutup panci tersebut, letakkan panci tersebut di atas kompor, hidupkan kompor dengan api sedang, apabila air sudah mendidih, matikan kompor, setelah itu angkat panci tersebut dari kompor. Langkah-langkah untuk memasak air tersebut merupakan algoritma memasak air. Sehingga memiliki urutan langkah-langkah yangg logis.
Dalam ilmu matematika dan komputer, pengertian algoritma merupakan prosedur dari beberapa langkah demi langkah untuk penghitungan. Algoritma dipakai untuk penghitungan, penalaran otomatis, dan pemrosesan data. Pengertian algoritma ialah suatu metode yangg efektif diekspresikan sebagai rangkaian yangg terbatas dari beberapa instruksi yangg telah dijelaskan dengan baik guna menghitung sebuah fungsi. Susunan algoritma dimulai dari kondisi awal dan input awal, instruksi tersebut mendeskripsikan komputasi yangg apabila itu dieksekusi serta diproses dengan melewati urutan-urutan kondisi terbatas yangg terdefinisi dengan baik, sehingga dapat menghasilkan output atau keluaran dan berhenti di kondisi akhir yangg telah ditentukan.
Algoritma sangat diperlukan untuk mengolah data yangg ada di komputer. Dalam sistem komputer, pengertian algoritma ialah logika yangg dibuat dengan memakai software oleh para pembuat perangkat lunak untuk membuat software tersebut menjadi lebih bagus. Algoritma berbeda dengan Logaritma. Perlu diketahui juga bahwa logaritma adalah sebuah operasi di ilmu matematika guna menghitung kebalikan eksponen dari sebuah perpangkatan.
Kata Algoritma ditemukan oleh Abu Abdullah Muhammad Ibnu Musa Al-Khwarizmi, beliau merupakan matematikawan yangg berasal dari Persia yangg ditemukan pada Abad Ke 9. Dari masa ke masa, kata algoritma mulai berkembang di abad ke 18.
Untuk lebih jelasnya lagi, berikut salah satu contoh algoritma :
Algoritma untuk menghitung nilai x dari persamaan x = 17y + 9 :
1) Memulai
2) Menentukan nilai y
3) Menghitung nilai x = 17y + 9
4) Menyelesaikan
Bentuk Dasar Algoritma
Algoritma sendiri mempunyai tiga 3 bentuk dasar, antara lain :
- Algoritma Sekuensial (Sequence Algorithm)
- Algoritma Perulangan (Looping Algorithm)
- Algoritma Percabangan atau Bersyarat (Conditional Algorithm)
Sequence algorithm atau algoritma sekuensial merupakan algoritma yangg langkah-langkahnya secara urut dari awal hingga akhir. Bentuk dari algoritma sekuensial ini salah satu contohnya seperti algoritma memasak air. Langkah demi langkah yangg dijalankan harus urut dari atas sampai bawah.
Looping algorithm atau algoritma perulangan merupakan suatu algoritma yangg menjalankan beberapa langkah tertentu secara berulang-ulang atau looping. Pada masalah yangg kita hadapi, ada pula sebuah langkah yangg harus kita lakukan secara berulang-ulang. Contoh dari algoritma looping ini adalah algoritma menjemur pakaian:
1) Siapkan jemuran.
2) Ambil satu pakaian yangg nantinya akan dijemur.
3) Peras pakaian tersebut terlebih dahulu.
4) Letakkan pakaian tersebut pada tiang jemuran.
5) Ulangi langkah dari 2 sampai 4 hingga pakaian habis.
Dari algoritma di atas, dapat diketahui bahwa dari langkah 2 sampai 4 harus dilakukan secara berulang-ulang hingga pakaian habis.
Conditional algorithm atau algoritma bersyarat merupakan algoritma yangg menjalankan langkah berikutnya apabila terdapat syarat yangg sudah dapat dipenuhi. Berikut salah satu contoh dari algoritma bersyarat :
1) Siapkan panci.
2) Masukkan air secukupnya ke dalam panci.
3) tutup panci tersebut.
4) letakkan panci tersebut di atas kompor.
5) Hidupkan kompor.
6) Apabila air sudah mendidih, lalu matikan kompor.
7) Angkat panci tersebut dari kompor.
Algoritma bersyarat atau contional algorithm terdapat pada langkah ke 6. Apabila air sudah mendidih, lalu matikan kompor. Sehingga apabila air tersebut belum mendidih, maka kompor tidak dimatikan.
Merancang Algoritma yangg Baik
Menurut Donald E. Knuth, dari pengertian algoritma diatas dapat diketahui bahwa sebuah algoritma yangg baik yaitu algoritma yangg mempunyai kriteria sebagai berikut :
- Masukan (Input)
- Keluaran (Output)
- Terbatas (Finite)
- Pasti (Definite)
- Efisien
Algoritma mempunyai input 0 (nol) atau lebih
Algoritma harus menghasilkan atau mengeluarkan minimal 1 output.
Algoritma harus berhenti setelah melakukan langkah-langkah yangg diperlukan.
Algoritma harus jelas kapan dimulai dan berakhir. Tujuan dari algoritma harus jelas. Setiap langkah-langkah harus dijelaskan dengan jelas.
Membuat sebuah algoritma haruslah efisien. Adanya langkah seperti mencari hasil 1 + 0 tidak efisien. Hal ini karena bilangan apapun itu jika ditambah dengan nol maka hasilnya ialah bilangan itu sendiri. Sehingga adanya langkah seperti itu tidak perlu dimasukkan ke dalam sebuah algoritma.
Algoritma dapat disajikan ke dalam 2 bentuk, yaitu bentuk tulisan atau bahasa dan bentuk gambar. Penyajian algoritma dalam bentuk bahasa atau tulisan harus memakai sebuah bahasa yangg dapat untuk dimengerti manusia dalam membuat langkah-langkah dari algoritma itu sendiri. Penyajian algoritma dalam bentuk tulisan/bahasa dapat dilakukan dengan memakai pseudocode. Pseudocode berasal dari “pseudo” aritnya “menyerupai atau mirip” dan “code” yaitu “kode program”. Contoh dari beberapa bahasa pemrograman yangg sering digunakan untuk menyatakan pseudocode antara lain : pascal, BASIC, Pascal, C, dan lain sebagainya. Terdapat juga penyajian algoritma yangg dalam bentuk gambar disebut flow chart.
Klasifikasi Algoritma
Salah satu cara untuk mengklasifikasikan algoritma yaitu dengan menggunakan cara implementasi.
- Rekursi atau iterasi
- Logical
- Serial, paralel atau terdistribusi
- Deterministik atau non-deterministik
- Tepat atau perkiraan
- Algoritma quantum
Algoritma rekursi ialah suatu algoritma yangg memanggil dirinya sendiri secara berulang kali (looping) hingga pada kondisi tertentu dapat tercapai. Rekursi merupakan suatu metode umum dalam pemrograman fungsional. Algoritma iteratif memakai konstruksi berulang seperti pada pengulangan dan terkadang terdapat struktur data tambahan. Beberapa permasalahan secara alami dapat cocok dengan 1 implementasi atau yangg lainnya. Contohnya : Menara Hanoi yangg dikenal dengan implementasi rekursif. Pada setiap versi rekursif mempunyai adanya kesamaan (bisa lebih ataupun kurang kompleks) dengan versi iteratif, ataupun sebaliknya.
Algoritma dapat dilihat sebagai sebuah logika deduksi terkontrol. Pernyataan ini dapat diekspresikan sebagai: Algoritma = kontrol + logika. Komponen logika yangg mengekspresikan aksioma dapat digunakan dalam komputasi serta komponen kontrol dalam menentukan cara-cara deduksi yangg digunakan pada aksioma. Hal tersebut adalah dasar dari paradigma pemrograman logika. Dalam pemrograman, logika murni komponen kontrol ialah tetap serta algoritma yangg ditentukan dengan memberikan hanya ada komponen logikanya. Daya tarik dari pendekatan logical ialah semantik elegan, sebuah perubahan yangg ada dalam aksioma mempunyai perubahan dalam algoritma.
Pada umumnya, suatu algoritma menjalankan satu instruksi algoritma setiap waktu. Komputer tersebut dapat disebut dengan komputer serial. Rancangan algoritma yangg digunakan bagi lingkungan tersebut ialah algoritma serial, terbalik dengan algoritma terdistribusi atau algoritma paralel. Algoritma paralel menggunakan arsitektur komputer yangg mana terdapat prosesor-prosesor dapat mengerjakan masalah pada waktu yangg sama. Sedangkan algoritma terdistribusi menggunakan banyak mesin yangg terhubung ke jaringan. Algoritma terdistribusi atau paralel membagi permasalahan ke banyak submasalah simetris maupun asimetris dan mengumpulkan hasil yangg didapat kembalii. Konsumsi dari sumber pada algoritma tersebut tidak hanya ada perputaran prosesor tapi juga terdapat daya komunikasi antara prosesor. Algoritma pengurutan dapat untuk diparalelkan secara efisien, namun terdapat biaya komunikasi yangg sangat mahal. Algoritma iteratif pada umumnya dapat untuk diparalelkan. Ada juga permasalah yangg tidak ada algoritma paralelnya, disebut dengan permasalahan serial lahiriah.
Terdapat juga algoritma determministik dan non-determenistik. Algoritma deterministik dapat menyelesaikan masalah-masalah dengan keputusan tepat disetiap langkah-langkah dari sebuah algoritma. Algoritma non-deterministik dapat menyelesaikan masalah-masalah lewat adanya penerkaan walaupun penerkaan tersebut pada umumnya lebih akurat dengan memakai heuristik.
Jika terdapat banyak algoritma dapat sampai ke solusi yangg tepat, ada juga algoritma perkiraan yangg mencari perkiraan terdekat dengan solusi benarnya. Perkiraan tersebut dapat memakai strategi deterministik ataupun acak. Algoritma yangg seperti itu dapat mempunyai nilai lebih untuk banyak permasalahan yangg sulit.
Berjalan pada model realistik dari komputasi quantum. Istilah tersebut pada umumnya dipakai bagi algoritma yangg pada dasarnya quantum, ataupun memakai fitur-fitur penting dari komputasi quantum seperti belitan quantum atau superposisi quantum.
Contoh Algoritma
- Menentukan Apakah Bilangan Tersebut Ganjil atau Genap
- Menghitung Keliling dan Luas Lingkaran
- Menampilkan Bilangan Ganjil Diantara 10 sampai 30
- Algoritma tahun Kabisat
- Menampilkan Bilangan Genap Mullai dari Angka 2 sampai n, Kecuali Bilangan Genap yangg Kelipatan 4
- Menghitung Harga yangg Dibayar Setelah Mendapatkan Sebuah Diskon
- Mencari Maks dan Min dari suatu Deret Bilangan
- Kalkulator Sederhana dari 2 Bilangan
- Menghitung Beberapa Angka dari Suatu Bilangan
- Membalik Sebuah Kalimat
Terdapat bilangan yangg bernama bilang bulat yaitu 0, 1, -1, 2, dst serta bilangan asli 1, 2, 3, 4, 5, dst. Kedua jenis bilangan tersebut sering digunakan dalam berhitung. Himpunan bilangan-bilangan bulat dalam buku teks aljabar pada umumnya dinyatakan dengan lambang “Z” dan himpunan bilangan-bilangan asli dinyatakan dengan lambang “N”. Algoritma guna menentukan apakah bilangan tersebut ganjil atau genap dapat disajikan dengan flowchart seperti dibawah ini :
Bilangan genap merupakan sebuah bilangan bulat yangg akan habis atau tidak memiliki sisa jika dibagi 2 (dua). Bilangan ganjil merupakan sebuah bilangan bulat yangg tidak akan habis apabila dibagi 2 (dua).
Lingkaran merupakan suatu himpunan dari semua titik-titik pada bidang dalam jarak yangg tertentu dan disebut dengan jari-jari dari titik tertentu dan dapat disebut titik pusat. Lingkaran merupakan contoh dari kurva tertutup sederhana, lingkaran membagi bidang menjadi bagian luar dan dalam. Algoritma menghitung keliling serta luas lingkaran dapat disajikan dengan flowchart seperti dibawah ini :
Bilangan ganjil yangg terletak diantara 10 dan 30 11,13,15, dan seterusnya. Namun, yangg akan ditampilkan kecuali bilangan 21 dan 27. Jadi output yangg diharapkan dari algoritma tersebut adalah bilangan ganjil 10 sampai 30 kecuali bilangan 21 dan 27. Algoritma untuk menampilkan bilangan ganjil antara 10 hingga 30 kecuali bilangan 21 dan 27 disajikan dengan flowchart dibawah ini :
Terdapat juga algoritma tahun kabisat. Tahun kabisat merupakan sebuah tahun yangg memiliki tambahan 1 hari dan bertujuan agar kalender dapat sinkron dengan musim tahunan dan keadaan astronomi. Bulan Februari memiliki 29 hari pada saat tahun kabisat. Tahun yangg dapat untuk dibagi dengan 4 adalah tahun kabisat. Algoritma guna menentukan tahun kabisat jika disajikan dengan flowchart seperti dibawah ini :
Bilangan genap merupakan sebuah bilangan-bilangan bulat yangg habis jika dibagi 2. Deret yangg ditampilkan dari algoritma kali ini merupakan deret dari bilangan genap dari 2 hingga ke n kecuali bilangan yangg merupakan kelipatan 4. Algoritma tersebut dapat digambarkan dengan flowchart seperti dibawah ini :
Ada juga algoritma yangg dapat menghitung jumlah dari biaya yangg harus dibayar oleh sang pembeli setelah mendapatkan sebuah diskon 10% dengan syarat jumlah dari total pembelian tersebut Rp.1.500.000,- Algoritma guna menghitung besaran biaya tersebut dapat digambarkan dengan flowchart seperti dibawah ini :
Jumlah barang memiliki sifat yangg dinamik sesuai dengan input atau masukkan dari user. Apabila jumlah total dari harga tersebut kurang 1500000 maka tidak mendapatkan sebuah diskon.
Terdapat juga sebuah algoritma guna mencari nilai maks serta min dari suatu n deret bilangan yangg dimasukkan atau diinput oleh user. Algoritma tersebut dapat disajikan dengan flowchart seperti dibawah ini :
Terdapat sebuah algoritma sebagai kalkulator sederhana untuk operasi penjumlahan, perkalian, pembagian, dan pengurangan. Kalkulator sederhana ini hanya dapat melakukan perhitungan dari 2 bilangan yangg diinput oleh user. Algoritma guna menghitung 2 bilangan dapat digambarkan dengan flowchart seperti dibawah ini :
Pada flowchart kali ini mengenai sebuah algoritma untuk menghitung beberapa angka dari suatu bilangan yangg dimasukkan atau diinput oleh user. Berikut flowchart algoritma tersebut :
Seperti yangg kita ketahui sebelumnya tentang pengertian algoritma, bahwa algoritma juga dapat untuk menampilkan sebuah kalimat namun dengan urutan yangg terbalik. Misalkan “woocara” dibalik menjadi “aracoow”. Struktur data yangg digunakan ialah Stack. Untuk membalik sebuah bilangan, huruf dari kalimat kita input dalam stack dengan menggunakan metode Push. Setelah stack tersebut sudah terisi, maka output kembalii dengan memakai metode Pop. Pada algoritma membalik sebuah kalimat, adanya penggunaan struktur data stack diimplementasikan ke array. Dalam implementasinya ke array tersebut, kita harus terlebih dahulu menyiapkan sebuah array dengan memiliki panjang yangg sama dengan jumlah huruf yangg ada dalam kalimat yangg akan dibalik tersebut. Pada gambar flowchart dibawah ini, terdapat tiap huruf dari kalimat yangg diinput pada array dengan index ke-0 hingga ke-n dengan memakai metode push.
Kemudian huruf tersebut akan mengeluarkan kata mulai dari index ke-n hingga index ke-0.
Itulah pengertian algoritma, bentuk dasar algoritma, klasifikasi algoritma, dan contoh algoritma. Algoritma sangat diperlukan untuk mengolah data yangg ada di komputer.