Program benar tidak jadi dengan sendirinya. Ia membutuhkan perencanaan dan perhatian kepada detail untuk mencegah kesalahan dalam program. Ada beberapa teknik yang bisa digunakan oleh programmer untuk meningkatkan kebenaran suatu program.
Dalam beberapa kasus, kita bisa membuktikan bahwa program tersebut benar. Yaitu dengan menggunakan pembuktian secara matematis bahwa urutan penghitungan yang dilakukan program akan selalu menghasilkan hasil yang benar. Pembuktian yang komprehensive sangat sulit dibuat karena secara praktek pembuktian semacam ini hanya bisa dilakukan pada program yang cukup kecil.
Seperti telah disebutkan sebelumnya, program yang benar menurut spesifikasi tidak berguna apabila spesifikasinya salah. Artinya, bahkan dalam pemrograman sehari-hari pun, kita harus terus mencari ide dan teknik yang bisa kita gunakan untuk membuktikan bahwa program yang kita tulis adalah benar.
Ide dasarnya adalah proses (process) dan keadaan (state). Suatu keadaan terdiri dari semua informasi yang terkait dengan eksekusi suatu program pada saat tertentu. Keadaan mencakup, misalnya, nilai semua variabel pada program, keluaran yang telah diproduksi, input yang sedang diambil, dan posisi dalam di mana program tersebut sedang dieksekusi. Proses adalah urutan keadaan yang harus dilalui oleh komputer ketika menjalankan suatu program.
Dari sudut pandang ini, arti suatu pernyataan dalam suatu program dapat diekspresikan dalam akibat apa yang dihasilkan dari eksekusi suatu perintah terhadap keadaan saat itu. Sebagai contoh sederhana, arti dari pernyataan "
x = 7;
" adalah setelah pernyataan ini dieksekusi, nilai dari variabel x adalah 7. Kita bisa yakin tentang fakta ini, sehingga fakta ini bisa dijadikan salah satu bukti matematis.
contoh dari program panjang java:
do {
System.out.println("Masukkan A, B, dan C. B*B-4*A*C harus >= 0.");
System.out.print("A = ");
A = KonsolInput.ambilDouble();
System.out.print("B = ");
B = KonsolInput.ambilDouble();
System.out.print("C = ");
C = KonsolInput.ambilDouble();
if (A == 0 || B*B - 4*A*C < 0)
System.out.println("Input Anda tidak benar, masukkan lagi.");
} while (A == 0 || B*B - 4*A*C < 0);
det = B*B - 4*A*C;
x = (-B + Math.sqrt(det)) / (2*A);
Setelah perulangan berakhir, kita yakin bahwa B*B-4*A*C >= 0 dan juga A != 0. Kondisi awal untuk dua baris terakhir sudah dipenuhi, sehingga kondisi akhir bahwa x merupakan solusi persamaan A*x2 + B*x + C = 0 juga benar. Potongan progam ini menghitung solusi suatu persamaan dengan benar dan bisa dibuktikan secara matematis (Sebetulnya karena ada masalah utama dalam merepresentasi angka terutama bilangan real pada komputer, hal ini tidak 100% benar. Algoritma ini benar, akan tetapi programnya bukan implementasi sempurna dari algoritma ini.)
sumber:www.google.co.id
Tidak ada komentar:
Posting Komentar