خطای تک واحد
خطای تک واحد به انگلیسی Error Off-by-one یک خطای منطقی میباشد که مربوط به کرانه اجرای شرط در برنامه نوشته شده (با هر زبان برنامهنویسی) میباشد. این خطا را به این صورت نیز توصیف میکنند:
"that extra inch you didn't really want"
یعنی آن مقدار اضافی که اجرا شده ولی مد نظر تو نبود. برای درک بهتر این خطا حالت زیر را در نظر بگیرید:
برنامهنویسی میخواهد یک حلقه را بنویسید که ۵ بار اجرا شود. فرض کنید شروع حلقه حالت n و پایان آن m است و برنامهنویس چنان فرض میکند که میزان شمارش این حلقه به این صورت است: m-n که اگر n را برابر صفر و m را برابر ۴ در نظر بگیریم، طبق فرض برنامهنویس این حلقه ۴=۰–۴ بار اجرا میشود و حلقه آن به این صورت نوشته شده است:
for (i=0;i<=4;i++)
}
-----
{
ولی با کمی دقت میتوان فهمید که این حلقه ۵ بار اجرا میشود نه ۴ بار و مشکل محاسبات منطقی برنامهنویس بود چون تعداد بار اجرای حلقه به صورت m-n+1 حساب میشود. این خطای منطقی که در برنامه رخ داده Off-by-one نامیده میشود و در مراحل بعدی برنامه میتواند محاسبات را بهم زده و نتیجه برنامه را به کلی تغییر دهد (خروجی خارج از انتظار برنامهنویس باشد).
منابع[ویرایش]
- ترجمه فارسی کتاب دایتل: حسین زارع و علیرضا زارع پور، پایتون چگونه برنامه بنویسیم، انتشارات نص، 1401.
Deitel and Deitel, ″ Python for Programmers: with Big Data and Artificial Intelligence Case Studies″, Prentice Hall, 2019.
- https://en.wikipedia.org/wiki/Off-by-one_error
- An earlier version of this article was based on fencepost error at FOLDOC, used with permission.