داشبورد›رودمپ›برنامه‌نویسی مقدماتی
💻 برنامه‌نویسی مقدماتی · درس ۲

شرط و منطق تصمیم‌گیری

با if/else و عبارت‌های منطقی، برنامه را وادار می‌کنی بر اساس وضعیت‌های مختلف رفتار متفاوت داشته باشد.

⏱ ۱۶ دقیقه 🌱 شروع از صفر ⭐ +۳۰ XP 🧠 کوئیز الزامی
🎯
بعد از این درس

قراره چی یاد بگیری؟

  • شرط if/else را برای تصمیم‌گیری یک ربات بخوانی و بنویسی.
  • عملگرهای مقایسه‌ای و منطقی پایه را بشناسی.
  • فرق = و == را تشخیص بدهی و شرط‌های مرزی را تست کنی.

برنامه چطور تصمیم می‌گیرد؟

ربات باید بر اساس داده سنسورها تصمیم بگیرد. در C/C++ رایج‌ترین ابزار برای این کار if و else است:

int distanceCm = 14;

if (distanceCm < 20) {
  // مانع نزدیک است
  stopMotors();
} else {
  moveForward();
}

عبارت داخل پرانتز یک سوال بله/خیر است. اگر نتیجه true باشد بلوک اول و اگر false باشد بخش else اجرا می‌شود.

مقایسه‌ها را درست بخوان

  • > بزرگ‌تر از
  • < کوچک‌تر از
  • >= بزرگ‌تر یا مساوی
  • <= کوچک‌تر یا مساوی
  • == مساوی بودن
  • != نابرابر بودن

یکی از خطاهای مشهور تازه‌کارها قاطی کردن = و == است. = مقدار می‌گذارد؛ == مقایسه می‌کند.

چند شرط با هم

گاهی یک شرط کافی نیست. مثلا موتور فقط وقتی حرکت کند که مانع دور باشد و باتری خیلی ضعیف نباشد:

if (distanceCm >= 20 && batteryVoltage > 6.5) {
  moveForward();
}

برای OR از || استفاده می‌کنیم. مثلا اگر دکمه اضطراری فشرده شد یا فاصله خیلی کم شد، توقف کن:

if (emergencyPressed || distanceCm < 8) {
  stopMotors();
}

مرز شرط مهم است

شرط distanceCm < 20 برای مقدار ۲۰ درست نیست. اگر می‌خواهی خود ۲۰ هم مانع حساب شود باید <= 20 بنویسی. همیشه سه تست انجام بده: کمی پایین‌تر از مرز، دقیقا روی مرز، کمی بالاتر از مرز.

شرط تو در تو یا چند شاخه

برای چند وضعیت می‌توان از else if استفاده کرد:

if (distanceCm < 10) {
  stopMotors();
} else if (distanceCm < 25) {
  slowDown();
} else {
  moveForward();
}

ترتیب شرط‌ها مهم است. از حالت خاص‌تر شروع کن تا شرط عمومی‌تر فرصت بلعیدن آن را نداشته باشد.

تمرین

یک منطق چراغ وضعیت طراحی کن: اگر ولتاژ کمتر از ۶.۵ بود LED قرمز، اگر بین ۶.۵ و ۷.۲ بود زرد و اگر بالاتر یا مساوی ۷.۲ بود سبز. قبل از کد، نتیجه ۶.۴، ۶.۵، ۷.۱، ۷.۲ و ۸.۰ را در جدول بنویس. این جدول بهترین راه دیدن شکاف یا هم‌پوشانی شرط‌هاست.

خطاهای رایج

استفاده از = به جای ==، فراموش کردن حالت مرزی، شرط‌های خیلی طولانی و تست نکردن همه شاخه‌ها. اگر شرط پیچیده شد آن را به چند متغیر bool معنی‌دار تقسیم کن تا خواندن و دیباگش ساده شود.

🃏
مرور سریع

فلش کارت‌ها

۱ / ۳
🧠
برای تکمیل درس لازمه

آزمون کوتاه همین درس

حد نصاب ۷۰٪

برای عبور از درس، مفهوم را روی یک موقعیت واقعی به کار ببر؛ جواب‌ها از حفظ یک جمله نیستند.

۱

می‌خواهیم خود فاصله 20cm هم «نزدیک» حساب شود. کدام شرط درست است؟

۲ امتیاز
۲

در C/C++، = برای مقایسه مساوی بودن دو مقدار استفاده می‌شود.

۱ امتیاز
۳

شرط را کامل کن تا فقط وقتی مانع دور است و باتری مناسب است حرکت کنیم.

۲ امتیاز
if (distanceCm >= 20 _____ batteryVoltage > 6.5) { جای خالی 
  moveForward();
}
۳ سوال هنوز جواب نداره.
🔗
برای عمیق‌تر شدن

منابع تکمیلی