خطای تک واحد

از ویکی‌پدیا، دانشنامهٔ آزاد

خطای تک واحد به انگلیسی 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.