خطای تک‌واحد

خطای تک‌واحد به انگلیسی 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 نامیده می‌شود و در مراحل بعدی برنامه می‌تواند محاسبات را بهم زده و نتیجه برنامه را به کلی تغییر دهد (خروجی خارج از انتظار برنامه‌نویس باشد).

 منابع 

 ترجمه فارسی کتاب دایتل: حسین زارع و علیرضا زارع پور، پایتون چگونه برنامه بنویسیم، انتشارات نص، ۱۴۰۱.
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.

رده:اشکال‌های برنامه‌نویسی
رده:سوءاستفاده امنیتی از رایانه
رده:مقاله‌های ایجادشده توسط ایجادگر
رده:مقاله‌های دارای کد نمونه به زبان سی
رده:ویکی‌سازی رباتیک