Algoritma

Algoritma adalah prosedur langkah demi langkah yang terbatas dan eksplisit untuk memecahkan masalah tertentu atau mencapai tujuan tertentu. Kita sering berbicara tentang algoritma dalam istilah matematika, dan banyak algoritma diekspresikan menggunakan notasi yang dipinjam dari matematika, tetapi algoritma tidak selalu matematis dalam operasi yang dilakukan, atau dalam hasil yang dihasilkan.

Secara umum, algoritma yang efektif memiliki karakteristik ini:

  • Kondisi awal yang jelas, lengkap, dan tepat;
  • Suatu rangkaian yang terbatas, lengkap, tidak terputus – tetapi belum tentu murni linier – langkah-langkah yang harus diikuti, untuk sampai pada hasil yang diinginkan;
  • Kondisi terminal (berhenti) yang eksplisit, lengkap, dan tepat. Jika sesuai, ini harus mencakup kondisi yang menunjukkan bahwa masalah tidak dapat diselesaikan oleh algoritma.

Langkah-langkah dalam suatu algoritma harus cukup untuk pergi dari kondisi awal ke tujuan yang dituju, atau ke kondisi di mana jelas bahwa algoritma tidak akan menghasilkan hasil yang diinginkan. Hasil akhir ini tidak selalu berarti itu adalah algoritma yang buruk. Demikian pula, ketika suatu algoritma tidak memecahkan masalah, itu tidak berarti masalah tidak dapat diselesaikan – hanya itu contoh spesifik dan perumusan masalah tidak dapat diselesaikan dengan algoritma itu.

Umumnya, pernyataan matematis bukanlah suatu algoritma – tetapi pernyataan seperti itu sering menjadi elemen kunci dari algoritma. Pernyataan menggunakan konstanta, variabel, operator, dan fungsi untuk menggambarkan hubungan antara entitas matematika – tetapi tidak memberi tahu kita (setidaknya tidak secara langsung) apa yang harus dilakukan dengan hubungan itu.

Pemrograman komputer sebagian besar terdiri dari pembuatan prosedur langkah demi langkah yang tidak ambigu untuk diikuti komputer, untuk menghasilkan hasil yang spesifik. Dengan kata lain, kita mungkin mengatakan bahwa pemrograman komputer hampir semuanya tentang algoritma.

Pseudocode

Kadang-kadang, ketika kita melakukan pekerjaan yang sangat hati-hati dalam mengartikulasikan suatu algoritma, hasilnya adalah tepat, tidak ambigu, dan jelas cukup terstruktur sehingga implementasi komputer dari algoritma dapat ditulis dengan sedikit atau tidak ada persiapan tambahan bahkan oleh seorang programmer yang tidak memiliki keakraban sebelumnya dengan algoritma yang dimaksud. Dalam hal ini, kita dapat mengatakan bahwa deskripsi kita tentang algoritma sebenarnya pseudocode: ia memiliki banyak karakteristik yang sama dengan – dan mungkin tampak sebagai kode bahasa pemrograman, tetapi tidak dapat digunakan secara langsung seperti itu.

Jadi apa itu pseudocode? Sederhananya, ini adalah seperangkat praktik dan konvensi untuk menghasilkan deskripsi algoritma yang sangat tepat dan minimal ambigu. Salah satu cara ini dapat dicapai adalah melalui penggunaan konvensi aljabar untuk penamaan dan ekspresi variabel, serta notasi khusus dari teori himpunan, aljabar linier, dan cabang matematika lainnya. Penggunaan konvensi matematika ini dapat sangat membantu mengurangi ambiguitas dalam deskripsi suatu algoritma.

Pada akhirnya, karakteristik paling penting dari pseudocode tidak benar-benar apa adanya, tetapi apa yang memungkinkan. Bekerja dari pseudocode yang ditulis dengan baik, hampir setiap programmer dengan kompetensi profesional dalam bahasa pemrograman yang diberikan harus dapat mengimplementasikan algoritma yang dijelaskan oleh pseudocode, dalam bahasa yang diberikan, dengan sedikit atau tidak perlu untuk instruksi lebih lanjut.