درس ۱۳: عملگرها و شرط‌ها

یادگیری عملگرها و دستورات شرطی در JavaScript

پیشرفت درس ۱۳ از ۲۰ درس

عملگرها در JavaScript

عملگرها نمادهایی هستند که برای انجام عملیات بر روی متغیرها و مقادیر استفاده می‌شوند. JavaScript انواع مختلفی از عملگرها دارد که هر کدام کاربرد خاص خود را دارند.

عملگرهای ریاضی (Arithmetic Operators)

برای انجام محاسبات ریاضی استفاده می‌شوند:

عملگر نام مثال نتیجه
+ جمع 5 + 3 8
- تفریق 5 - 3 2
* ضرب 5 * 3 15
/ تقسیم 15 / 3 5
% باقی‌مانده 10 % 3 1
** توان 2 ** 3 8

مثال‌های عملی:

let a = 10;
let b = 3;

console.log(a + b);  // 13
console.log(a - b);  // 7
console.log(a * b);  // 30
console.log(a / b);  // 3.333...
console.log(a % b);  // 1 (باقی‌مانده)
console.log(a ** b); // 1000 (10 به توان 3)

عملگرهای انتساب (Assignment Operators)

برای انتساب مقدار به متغیرها استفاده می‌شوند:

عملگر معادل مثال
= انتساب ساده x = 5
+= x = x + y x += 3
-= x = x - y x -= 2
*= x = x * y x *= 4
/= x = x / y x /= 2

مثال:

let score = 100;
score += 50;  // score = 150
score -= 20;  // score = 130
score *= 2;   // score = 260
score /= 4;   // score = 65

عملگرهای مقایسه (Comparison Operators)

برای مقایسه مقادیر استفاده می‌شوند و نتیجه true یا false برمی‌گردانند:

عملگر نام مثال نتیجه
== مساوی (مقدار) 5 == '5' true
=== مساوی (مقدار و نوع) 5 === '5' false
!= نامساوی (مقدار) 5 != '5' false
!== نامساوی (مقدار و نوع) 5 !== '5' true
> بزرگ‌تر 5 > 3 true
< کوچک‌تر 3 < 5 true
>= بزرگ‌تر مساوی 5 >= 5 true
<= کوچک‌تر مساوی 3 <= 5 true

تفاوت == و ===:

console.log(5 == '5');   // true (تبدیل نوع)
console.log(5 === '5');  // false (بدون تبدیل نوع)
console.log(0 == false); // true
console.log(0 === false); // false

تمرین عملی: عملگرها و شرط‌ها

در ادامه، با عملگرها و دستورات شرطی آزمایش کنید:

عملگرهای منطقی (Logical Operators)

برای ترکیب شرط‌ها استفاده می‌شوند:

عملگر نام توضیح مثال
&& AND (و) هر دو شرط باید true باشد true && false → false
|| OR (یا) یکی از شرط‌ها باید true باشد true || false → true
! NOT (نه) معکوس شرط !true → false

مثال‌های عملی:

let age = 25;
let hasLicense = true;
let hasInsurance = false;

// AND - هر دو شرط باید برقرار باشد
if (age >= 18 && hasLicense) {
  console.log('می‌تواند رانندگی کند');
}

// OR - یکی از شرط‌ها کافی است
if (hasLicense || hasInsurance) {
  console.log('حداقل یکی از مدارک را دارد');
}

// NOT - معکوس شرط
if (!hasInsurance) {
  console.log('بیمه ندارد');
}

دستور if

دستور if برای اجرای کد بر اساس شرط استفاده می‌شود:

ساختار پایه:

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

مثال:

let score = 85;

if (score >= 60) {
  console.log('قبول شدید!');
}

if...else:

let age = 16;

if (age >= 18) {
  console.log('بالغ هستید');
} else {
  console.log('نابالغ هستید');
}

if...else if...else:

let grade = 85;

if (grade >= 90) {
  console.log('عالی');
} else if (grade >= 80) {
  console.log('خوب');
} else if (grade >= 70) {
  console.log('متوسط');
} else if (grade >= 60) {
  console.log('قابل قبول');
} else {
  console.log('مردود');
}

عملگر سه‌گانه (Ternary Operator)

روش کوتاه‌تر برای نوشتن if...else ساده:

ساختار:

شرط ? مقدار_در_صورت_true : مقدار_در_صورت_false

مثال‌ها:

let age = 20;
let status = age >= 18 ? 'بالغ' : 'نابالغ';
console.log(status); // بالغ

// معادل با:
let status2;
if (age >= 18) {
  status2 = 'بالغ';
} else {
  status2 = 'نابالغ';
}

// استفاده در تابع
function getDiscount(isMember) {
  return isMember ? 0.1 : 0;
}

// استفاده تودرتو
let score = 85;
let result = score >= 90 ? 'عالی' : 
             score >= 80 ? 'خوب' : 
             score >= 70 ? 'متوسط' : 'ضعیف';

دستور switch

برای مقایسه یک متغیر با مقادیر مختلف استفاده می‌شود:

ساختار:

switch (متغیر) {
  case مقدار1:
    // کد
    break;
  case مقدار2:
    // کد
    break;
  default:
    // کد پیش‌فرض
}

مثال:

let day = 3;
let dayName;

switch (day) {
  case 1:
    dayName = 'شنبه';
    break;
  case 2:
    dayName = 'یکشنبه';
    break;
  case 3:
    dayName = 'دوشنبه';
    break;
  case 4:
    dayName = 'سه‌شنبه';
    break;
  case 5:
    dayName = 'چهارشنبه';
    break;
  case 6:
    dayName = 'پنج‌شنبه';
    break;
  case 7:
    dayName = 'جمعه';
    break;
  default:
    dayName = 'نامعلوم';
}

console.log(dayName); // دوشنبه

بدون break (Fall-through):

let month = 12;
let season;

switch (month) {
  case 12:
  case 1:
  case 2:
    season = 'زمستان';
    break;
  case 3:
  case 4:
  case 5:
    season = 'بهار';
    break;
  case 6:
  case 7:
  case 8:
    season = 'تابستان';
    break;
  case 9:
  case 10:
  case 11:
    season = 'پاییز';
    break;
  default:
    season = 'نامعلوم';
}

تمرین‌های عملی

برای تسلط بیشتر بر مطالب این درس، تمرین‌های زیر را انجام دهید:

تمرین ۱: ماشین حساب ساده

برنامه‌ای بنویسید که دو عدد و یک عملگر دریافت کرده و نتیجه را نمایش دهد.

تمرین ۲: تشخیص سال کبیسه

برنامه‌ای بنویسید که تشخیص دهد سالی کبیسه است یا نه.

تمرین ۳: نمره‌گذاری

برنامه‌ای بنویسید که بر اساس نمره، درجه (A, B, C, D, F) تعیین کند.

تمرین ۴: تشخیص عدد زوج یا فرد

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

نکات مهم و بهترین شیوه‌ها

بهترین شیوه‌ها:

  • از === به جای == استفاده کنید
  • شرط‌های پیچیده را به متغیرهای جداگانه تقسیم کنید
  • از عملگر سه‌گانه برای شرط‌های ساده استفاده کنید
  • همیشه break در switch استفاده کنید (مگر عمداً)
  • شرط‌ها را خوانا و قابل فهم بنویسید

نکات عملکرد:

  • عملگرهای منطقی short-circuit evaluation دارند
  • switch سریع‌تر از if...else if زیاد است
  • شرط‌های ساده‌تر را ابتدا قرار دهید
  • از مقایسه‌های غیرضروری اجتناب کنید

اشتباهات رایج:

  • استفاده از = به جای == یا ===
  • فراموش کردن break در switch
  • عدم درک تفاوت == و ===
  • شرط‌های پیچیده و غیرخوانا
  • عدم استفاده از پرانتز در شرط‌های ترکیبی

ادامه یادگیری

در درس بعدی با حلقه‌ها و تکرار در JavaScript آشنا خواهید شد.

درس قبلی: متغیرها و انواع داده درس بعدی: حلقه‌ها و تکرار