از مسئله به الگوریتم
قبل از کدنویسی باید بدانیم برنامه چه چیزی میگیرد، چه کاری انجام میدهد و چه چیزی تحویل میدهد. این سه بخش را میتوان اینطور دید:
ورودی → پردازش → خروجی
فاصله → مقایسه با حد مجاز → توقف یا حرکت موتور
مثلا برای یک ربات مانعگریز، ورودی میتواند فاصله سنسور، پردازش مقایسه با ۲۰ سانتیمتر و خروجی فرمان توقف موتور باشد. اگر همین منطق را قبل از کد روی کاغذ بنویسی، پیدا کردن اشتباه خیلی سادهتر میشود.
متغیر یعنی یک جای نامدار برای داده
در برنامه، مقدارها را در متغیر نگه میداریم. اسم متغیر باید معنیدار باشد؛ distanceCm از x بهتر است چون بعدا میفهمیم چه دادهای داخلش است.
int distanceCm = 35;
float batteryVoltage = 7.42;
bool obstacleDetected = false;
intبرای عدد صحیح مثل تعداد پالس، شماره پایه یا فاصله گرد شده مناسب است.floatبرای عدد اعشاری مثل ولتاژ یا دما به کار میرود.boolفقطtrueیاfalseاست و برای وضعیتهایی مثل روشن/خاموش یا وجود/عدم وجود مانع عالی است.
نوع داده فقط ظاهر کد نیست. اگر به اشتباه 7.5 را داخل یک متغیر صحیح قرار بدهی، بخش اعشاری از دست میرود. در میکروکنترلرها اندازه نوع داده روی حافظه هم اثر دارد، پس «هر چیزی را float کنیم» هم تصمیم خوبی نیست.
الگوریتم را با مثال دستی تست کن
فرض کن باید میانگین سه اندازهگیری فاصله را حساب کنیم:
int a = 20;
int b = 22;
int c = 21;
float average = (a + b + c) / 3.0;
قبل از اجرا، دستی حساب کن: جواب باید 21.0 باشد. حالا یک حالت مرزی هم تست کن؛ مثلا هر سه مقدار صفر باشند. این کار به تو یاد میدهد قبل از اعتماد به خروجی، خروجی مورد انتظار را بدانی.
اشتباههای رایج
- انتخاب اسمهای بیمعنی برای متغیرها.
- استفاده از نوع داده نامناسب و از دست دادن اعشار یا محدوده عددی.
- نوشتن کد قبل از اینکه ورودی و خروجی مسئله روشن باشد.
- تست فقط با یک مقدار «خوب» و فراموش کردن صفر، مقدار خیلی بزرگ یا مقدار مرزی.
تمرین
برای «روشن کردن فن وقتی دما از ۳۰ درجه بیشتر است» سه چیز بنویس: ورودی، پردازش و خروجی. بعد سه متغیر مناسب با نوع دادهشان تعریف کن. در پایان برای دمای ۲۹، ۳۰ و ۳۱ درجه نتیجه مورد انتظار را روی کاغذ بنویس. هنوز لازم نیست برنامه کامل را اجرا کنی؛ هدف این است که قبل از کدنویسی بتوانی رفتار را پیشبینی کنی.
چکپوینت
اگر بتوانی توضیح بدهی چرا bool obstacleDetected از یک عدد بینام بهتر است و چرا برای ولتاژ float لازم میشود، پایه این درس را گرفتهای.