Menurut Donald E. Knuth, algoritma yang baik memiliki kriteri sebagai berikut:
1. Input
Dari sisi input, minimal program harus memiliki nol input atau lebih dari pengguna. Program pasti memiliki input. Yang dimaksud memiliki nol input adalah program tidak mendaatkan masukan data dari pengguna secara langsung, namun semua data yang akan digunakan oleh program sudah dideklarasikan didalam kode program yang akan dieksekusi. Jadi tidak perlu di input kan dari luar. Sedangkan jika mendapat input dari pengguna, data bisa dimasukkan melalui tampilan program, misalnya melalui textbox, ataupun melalui file/basis data yang terdapat di suatu tempat/server tertentu.
2. Output
Dari sisi output, minimal program harus memiliki 1 output. Program pasti menghasilkan output karena program dibuat untuk tujuan tertentu. Tujuan itulah outputnya. Output program bisa ditampilkan ke layar, dituliskan ke file, atau disimpan di clipboard untuk kemudian dipakai di program lain atau disimpan dalam basis data.
3. Finite (Terbatas)
Program harus pasti dan berhenti, bukan tak terhingga. Suatu yang dieksekusi haruslah berenti dan selesai, bukan berjalan terus-menerus hingga HONG UP atau RESPONDING, dan akhir nya harus di Kill dengan paksa. Suatu program dapat mengalami infinite karena kesalahan programmer, mungkin karena kurang teliti atau karena tidak ada kondisi yang bisa membuatnya berhenti, atau mungkin karena ada error yang tidak terduga, misalnya file tidak ada namun program mencarinya terus menerus.
Memang ada program yang seolah-olah tidak pernah mati, misalnya Sistem Operasi, namun sebenarnya sistem operasi juga pasti akan berhenti, yaitu ketika sistem operasi tersebut di Shutdown.
4. Definite (Pasti)
Program harus jelas arah dan tujuannya. Suatu program harus jelas kapan mulai dn kapan berakhir, apa tujuannya, dan emiliki logika yang jelas agar dapat menghasilkan output yang sesuai dengan yang diharapkan.
5. Efisien
Artinya, program harus efisien, tidak memakan banyak memori, tidak melakukan hal-hal yang tidak perlu. Suatu operasi/kegiatan yang tidak perlu, misalnya x=5+0 atau y=100*0. Mengapa operasi tersebut tidak efisien, karena setiap operasi pasti membutuhkan waktu eksekusi, padahal operasi tersebut jelas tidak berguna, karena berapapun bilangan yang ditambah dengan 0 (nol) pasti blangan itu sendiri dan bilangan apapun yang dikalikan dengan 0 (nol) pasti hasilnya nol. Nah, kenapa harus dihitung lagi? Berarti program tidak efisien.
Tidak ada komentar:
Posting Komentar