Dengan kemajuan teknologi yang dapat mempermudah para peneliti mencari formulasi atau jawaban dalam menganalisis tentang algoritma. Bahkan pada zaman sekarang, manusia dapat menciptakan sebuah komputer yang canggih dengan kecerdasan yang hampir menyamai pemikiran manusia. Tetapi komputer tidak akan otomatis mampu atau bisa menyelesaikan masalah begitu saja, ada beberapa urutan dan langkah-langkah dalam penggunaan komputer untuk mengetahui terlebih dahulu apa masalahnya serta menganalisa masalah tersebut. Algoritma sendiri merupakan urutan atau langkah-langkah yang digunakan dalam pemecahan masalah secara sistematis atau teratur. Algortima dapat diartikan dengan sebuah perhitungan atau operasi pemecahan masalah, sedangkan dari pengertian lain sendiri adalah suatu upaya dengan sebuah urutan operasi yang disusun secara masuk akal dan sistematis untuk menyelesaikan suatu masalah sehingga menghasilkan suatu hasil yang dicapai dalam jangka pendek atau output tertentu.
Sedangkan kegunaannya ialah sebagai tata cara yang teratur atau terstruktur yang diperlukan oleh sebuah komputer. Algoritma yang baik yaitu dimana kita mampu menggunakan alat yang tepat dan sesuai dengan kegunaan, sedangkan penggunaan yang salah adalah bagaikan memasak masakan yang tidak sesuai resep serta alat dan bahannya sehingga tidak efektif atau tidak tepat sasaran karena memasak makanan juga mempunyai tata cara atau aturan yang berlaku, sehingga menghasilkan makanan yang lezat dan enak untuk dimakan. Maka dari itu dalam pembelajaran pemrograman sangat perlu dipelajari dalam kehidupan sehari-hari. Dalam dunia pendidikan juga harus mempelajari pemrograman algoritma, dimana pemrograman ini tidak hanya mencakup siswa atau mahasiswa yang berada dijurusan komputer saja akan tetapi ini dapat diterapkan dalam berbagai mata kuliah. Salah satunya dalam mata kuliah pendidikan matematika , sehingga salah satu yang harus dikuasai dalam pengenalan algoritma pemrograman adalah ilmu matematika. Karena matematika merupakan ilmu logika yang salah satunya dimanfaatkan sebagai dasar dalam bahasa pemrograman.
Menurut pakar ilmuan muslim yang terkenal yaitu Abu Ja’far Muhammad Ibnu musa Al-Khawarizmi algoritma adalah suatu metode khusus untuk menyelesaikan masalah. Oleh karena itu algoritma mengandung suatu masalah atau permasalahan sehingga ia juga harus memiliki solusi dari permasalahan tersebut. Dan disebutkan dalam referensi lain yaitu suatu proses serangkaian perintah-perintah atau cara spesial memecahkan persoalan yang praktis. Dalam pemrograman yang terpenting adalah menguasai logika berfikir, dan bagaimana cara menyelesaikan masalah pemrograman. Berikut beberapa contoh sederhananya:
Contoh 1
Algoritma membuat mie dalam kehidupan sehari-hari, yang pertama yaitu mengikuti tata cara membuat mie yang terdapat dalam lebel yang berada di belakang kemasan. Biasanya berisi panduan, dengan langkah-langkah sebagai berikut:
- Panaskan air didalam panci dan tunggu hingga mendidih
- Setelah mendidih, masukkan mie instan ke dalam panci
- Masak mie sesuai dengan intruksi yang ada pada kemasan (biasanya sekitar 2-3 menit)
- Setelah mie matang, matikan kompor
- Tiriskan mie dari air menggunakan saringan atau garpu
- Tuangkan bumbu mie instan ke dalam piring atau mangkuk
- Masukkan mie yang sudah ditiriskan ke dalam piring atau mangkuk
- Aduk hingga rata
- Mie instan siap untuk dinikmati
Contoh 2
Algoritma dalam matematika yaitu untuk menghitung nilai y dari persamaan y = 4x +2 apabila diketahui nilai x = 3. Langkah-langkahnya adalah sebagai berikut:
- Pertama, pahami soal dan pahami apa yang mau dikerjakan
- Nilai x sudah diketahui
- Masukkan nilai x ke dalam persamaan
- Sehingga y = 4 (3) + 2
- Nilai y adalah 14
Ciri-ciri algoritma
Menurut Donald E. Kruth:
- Finiteness yaitu suatu algoritma itu telah memiliki jawaban atau solusi yang dilakukan setelah pengerjaan sebuah cara yang mempunyai ciri khas keterbatasan, maksudnya adalah ada solusi atau langkah terakhir dalam pengerjaanya, sedangkan algoritma yang salah adalah dalam pengerjaanya tidak memiliki solusi atau tidak ada langkah terakhirnya.
- Definiteness (kepastian) yaitu dalam pengerjaannya memiliki tujuan dan arah yang jelas dan masuk akal sehingga mendapatkan hasil yang diinginkan.
- Input (masukan) yaitu memiliki banyak masukan.
- Output (keluaran) yaitu yang memiliki jalan keluar dari proses pengerjaan.
- Effectiveness (keefektivitasan) agar hasil yang diperoleh memuaskan seperti yang diharapkan, urutan eksekusi algoritma harus tepat waktu.
- Structured (terstruktur) ini adalah bagian terpenting dalam membuat sebuah algoritma, setiap urutan proses yang terjadi harus diatur sedemikian rupa secara sistematis. Jadi aliran solusinya konkrit bukan spiral.
Jenis-jenis algoritma
- Algortima membagi dan menaklukan
- Algoritma pengulangan
- Algoritma pemrograman dinamis
- Algortima serakah
- Algoritma dasar
- Algoritma pelacakan
Alasan algoritma banyak digunakan dalam pemrograman:
- Proses penulisan algoritma bukan hanya tergantung pada bahasa komputer apa pun.
- Bentuk algortima dapat diterjemahkan berbagai bahasa pemrograman.
- Setiap bahasa pemrograman yang digunakan outputnya yang dipakai akan sama.
Sifat algoritma
- Tidak hanya menggunakan simbol atau rumus dari suatu bahasa komputernya saja.
- Tidak terlalu mengikuti bahasa yang ada pada komputer.
- Notasi yang digunakan disini dapat digunakan yaitu notasi bebas.
- Dapat diimplementasikan ke suatu urutan kejadian secara fakta dan dapat dikerjakan serta dilakukan di semua kejadian dalam kehidupan dan akan memiliki sebuah penyelesaian.
Struktur algoritma
Terdiri atas 3 struktur dasar, yaitu:
- Runtutan (sequence)
Sebuah struktur ini penggunaan dalam pengerjaan merupakan program yang pernyataannya tersusun tanpa adanya pengulangan. Pada runtutan ini, perintah yang harus dilakukan secara runtun dimulai dari pertama sampai selesai. Ciri-ciri runtutan:
- Setiap perintah dikerjakan sebanyak sekali dan tidak boleh dilakukan dua kali atau lebih.
- Perintah dilakukan secara runtut dan tidak boleh dikerjakan secara pengulangan.
- Perintah terakhir merupakan akhir dari penyelesaian.
- Tidak boleh melakukan perubahan karena dalam tahap penyelesaiannya akan berbeda.
Notasi dalam penulisan algoritma
- Kalimat deskriptif (gambaran)
Dalam notasi ini setiap menuliskan instruksi atau langkah-langkah harus menggunakan bahasa yang jelas. Notasi ini biasanya juga disebut dengan notasi alami. Notasi deskriptif ini lebih baik untuk algoritma yang panjang notasi dengan kalimat deskriptifnya kurang efektif.
- Pseudo code (kode semu)
Pseudo code biasanya menggunakan simbol-simbol yang mirip kode program dengan bahasa pemograman tertentu. Pada umumnya, notasi yang menggunakan bahasa yang mudah dipahami dan dimengerti juga lebih ringkas daripada algoritma dan notasinya tidak terdapat aturan tertentu yang resmi. Pseudo code dikatakan menyerupai atau mirip dengan kode program dalam bahasa pemrograman, tetapi pseudo code tidak spesifik atau tidak sama dengan salah satu bahasa pemrograman. Dalam pseudo code harus terdiri dari tiga bagian, diantaranya:
- Judul algoritma merupakan suatu bagian yang terdiri dari nama algoritma, juga terdiri dari sebuah penjelasan yang menggambarkan apa yang dilakukan oleh algortima tersebut.
- Deklarasi bagian, dalam hal ini digunakan untuk mendefinisikan semua nama yang ada dalam suatu pemrograman, nama yang digunakan berupa nama tetapan dan kegunaan.
- Deskripsi bagian, bagian ini biasanya langkah-langkah penyelesaian masalah yang ditulis dengan menggunakan aturan yang akan dijelaskan selanjutnya.
- Flowchart (diagram alur)
Flowchart atau bagian alir merupakan suatu diagram yang menggunakan sebuah gambar tertentu serta garis alur untuk menggambarkan sebuah urutan maupun fungsi dari langkah pertama hingga akhir dari suatu pemrograman. Flowchart sama dengan notasi deskriptif atau kalimat Deskriptif yaitu lebih baik untuk menggunakan yang pendek karena jika digunakan untuk penyelesaian masalah yang algoritmanya besar maka notasi ini tidak efektif. Flowchart biasanya dalam penyelesaian sebuah masalah dalam urutan-urutannya menggunakan simbol-simbol yang khusus dan urutan simbol ini sesuai dengan arah tanda panah. Tujuan dari flowchart ialah untuk menggambarkan tahapan-tahapan penyelesaian masalah yang sederhana dan jelas. Kegunaan dari flowchart yaitu:
- Membuat sebuah proyek baru, sebelum membuat suatu proyek hal yang perlu kita lakukan adalah menentukan terlebih dahulu proyek tersebut kedalam bentuk flowchart, yang dimana dengan adanya rancangan atau serangkaian langkah-langkah tersebut dapat membantu kita membuat sebuah keputusan bersama.
- Merepresentasikan alur logika, dalam hal ini flowchart merupakan suatu hal yang paling penting dikerjakan dikarenakan flowchart disini berperan untuk menentukan suatu integritas dalam proses tersebut.
- Membentuk proses bisnis maksudnya yaitu serangkaian tugas yang dimulai daro sederhana sampai dengan yang rumit ini dikatakan dengan proses bisnis.
- Sebagai dokumentasi, mendokumentasikan setiap proses dengan adanya dokumentasi flowchart akan menjadi sebuah media yang bagus untuk memenuhi sebuah tujuan.
- Menjadi panduan untuk merancang dan menganalisis
- Menampilkan algoritma maksudnya yaitu spesifikasi sebuah bahasa untuk mendeskripsikan suatu algoritma
- Mengidentifikasi sebuah proses maksudnya yaitu flowchart disini akan mendeteksi sebuah kerusakan atau kesalahan yang terjadi dalam setiap proses.
Sebagian besar kegiatan kita sehari-hari melibatkan algoritma (serangkaian instruksi langkah demi langkah yang dirancang untuk menghasilkan hasil). Algoritma merupakan komponen kunci dari setiap program komputer, yang terintegrasi dalam sistem operasi untuk memastikan perangkat kita mematuhi perintah yang benar dan memberikan hasil yang tepat sesuai permintaan.
Ada tiga konstruksi suatu algoritma:
- Urutan linier: Berjalan melalui tugas atau pernyataan, satu demi satu.
- Bersyarat: Membuat keputusan antara dua tindakan, berdasarkan kondisi yang ditetapkan, misalnya jika X sama dengan 10 maka lakukan Y.
- Loop: Terdiri dari serangkaian pernyataan yang diulang sejumlah kali.