جلسه ۵ - کنترل جریان برنامه - تصمیم‌گیری در کد

بررسی پاسخ‌های بخش ۴:

**پاسخ ۱:

  • این سؤال نیاز به دقت بیشتری دارد. بیا مرحله به مرحله محاسبه کنیم:
    let num = 7;
    // num++ : مقدار فعلی (7) استفاده می‌شود، سپس num به 8 افزایش می‌یابد
    // ++num : ابتدا num از 8 به 9 افزایش می‌یابد، سپس مقدار جدید (9) استفاده می‌شود
    // بنابراین: 7 + 9 = 16
  • پاسخ صحیح: 16

**پاسخ ۲:

  • 5 == "5"true (مقادیر پس از تبدیل نوع برابرند)
  • 5 === "5"false (مقادیر برابر ولی نوع‌ها متفاوت)
  • "" == falsetrue (رشته خالی و false هر دو falsy و پس از تبدیل نوع برابرند)
  • 0 == falsetrue (عدد صفر و false هر دو falsy و پس از تبدیل نوع برابرند)

**پاسخ ۳:

  • (a >= 18 && a <= 60) → بررسی بازه ۱۸ تا ۶۰
  • || a === 16 → یا دقیقاً برابر ۱۶ باشد
  • استفاده از === برای مقایسه دقیق

خلاصه نکات مهم:

  1. تفاوت ++x و x++:

    • x++:
      let x = 5;
      let y = x++; // y = 5, x = 6
    • ++x:
      let x = 5;
      let y = ++x; // y = 6, x = 6
  2. تفاوت و =:

    • همیشه از === استفاده کن مگر اینکه واقعاً نیاز به تبدیل نوع داشته باشی
    • == می‌تواند باعث خطاهای غیرمنتظره شود
  3. عملگرهای منطقی:

    • && (AND): برای ترکیب چند شرط که همه باید true باشند
    • || (OR): برای زمانی که حداقل یکی از شرط‌ها true باشد
    • ! (NOT): برای معکوس کردن مقدار boolean

بخش ۵: کنترل جریان برنامه - تصمیم‌گیری در کد (مطابق متن اصلی)

۱. دستور if

برای اجرای کد در صورت true بودن شرط:

سینتکس:

if (condition) {
    // کدی که اگر شرط true باشد اجرا می‌شود
}

مثال از متن:

let age = 18;
if (age >= 18) {
    console.log("شما بزرگسال هستید.");
}

۲. دستور if…else

اگر شرط true باشد یک بلوک، در غیر این صورت بلوک دیگر اجرا می‌شود:

سینتکس:

if (condition) {
    // اگر شرط true باشد
} else {
    // اگر شرط false باشد
}

مثال از متن:

let age_value = 22;
if (age_value >= 18) {
    console.log("شما بزرگسال هستید.");
} else {
    console.log("شما خردسال هستید.");
}

۳. دستور else if

برای بررسی چندین شرط مختلف:

مثال از متن:

let temperature = 30;
if (temperature > 35) {
    console.log("روز گرمی است!");
} else if (temperature > 25) {
    console.log("روز معتدلی است.");
} else {
    console.log("روز خنکی است.");
}

۴. دستور switch

برای مقایسه یک متغیر با چندین مقدار ثابت:

سینتکس:

switch (expression) {
    case value1:
        // کد اگر expression === value1
        break;
    case value2:
        // کد اگر expression === value2
        break;
    default:
        // کد اگر هیچکدام از caseها مطابقت نکرد
}

مثال از متن:

let fruit = "apple";
switch (fruit) {
    case "banana":
        console.log("میوه زرد");
        break;
    case "apple":
        console.log("میوه قرمز یا سبز");
        break;
    case "orange":
        console.log("میوه نارنجی");
        break;
    default:
        console.log("میوه ناشناخته");
}
// خروجی: "میوه قرمز یا سبز"

⚠️ هشدار مهم: فراموش نکنید break را بگذارید!

let color = "red";
switch (color) {
    case "red":
        console.log("توقف");
        // break فراموش شده!
    case "yellow":
        console.log("احتیاط");
        // break فراموش شده!
    case "green":
        console.log("حرکت");
}
// خروجی: "توقف", "احتیاط", "حرکت" (همه اجرا می‌شوند!)

سؤالات تمرینی بخش ۵:

۱. کد زیر چه خروجی می‌دهد؟

let score = 85;
if (score >= 90) {
    console.log("عالی");
} else if (score >= 80) {
    console.log("خیلی خوب");
} else if (score >= 70) {
    console.log("خوب");
} else {
    console.log("نیاز به تلاش بیشتر");
}

۲. دستور switch زیر را به if…else تبدیل کن:

let day = 3;
switch (day) {
    case 1: console.log("شنبه"); break;
    case 2: console.log("یکشنبه"); break;
    case 3: console.log("دوشنبه"); break;
    default: console.log("روز نامعتبر");
}

۳. مشکل کد زیر چیست و چگونه اصلاح می‌شود؟

let grade = "B";
switch (grade) {
    case "A":
        console.log("عالی");
    case "B":
        console.log("خوب");
    case "C":
        console.log("قابل قبول");
    default:
        console.log("نیاز به بهبود");
}