Dalam pengaturcaraan komputer, ralat logik ialah pepijat dalam atur cara yang menyebabkan ia beroperasi secara tidak betul, tetapi tidak tamat secara tidak normal (atau rosak). Ralat logik menghasilkan output yang tidak diingini atau atau tingkah laku lain, walaupun ia mungkin tidak segera dikenali sebagai sedemikian.

Ralat logik berlaku dalam kedua-dua bahasa disusun dan ditafsirkan. Tidak seperti dalam ralat sintaks, atur cara dengan ralat logik ialah atur cara yang sah dalam bahasa, walaupun ia tidak berkelakuan seperti yang dimaksudkan. Selalunya, satu-satunya petunjuk kepada kewujudan ralat logik ialah penghasilan penyelesaian yang salah, walaupun analisis statik kadangkala dapat mengesannya.

Penyelesaian ralat logik sunting

Salah satu cara untuk mencari jenis ralat ini ialah dengan memadamkan pemboleh ubah program pada fail atau pada skrin untuk menentukan lokasi ralat dalam kod. Walaupun ini tidak akan berfungsi dalam semua kes, contohnya apabila memanggil subrutin yang salah, ia adalah cara paling mudah untuk mencari masalah jika program menggunakan keputusan yang salah daripada pengiraan matematik yang buruk.

Contoh sunting

Contoh ini berfungsi dalam C untuk mengira purata dua nombor mengandungi ralat logik. Persamaan ini tiada tanda kurung dalam pengiraan, jadi ia disusun dan dijalankan secara biasa, tetapi tidak memberikan jawapan yang diingini oleh kerana keutamaan operator (pembahagian diutamakan sebelum penambahan).

float average(float a, float b)
{
  return a + b / 2; // sepatutnya (a + b) / 2
}

Lihat juga sunting