درس ۱۳: عملگرها و شرطها
یادگیری عملگرها و دستورات شرطی در 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 آشنا خواهید شد.