if المتداخلة (Nested if)
الـ Nested if تعني:
استخدام جملة if داخل جملة if أخرى.
- إذا تحقق الشرط الأول، عندها يتم التحقق من شرط آخر داخله.
- ولو تحقق الشرط الثاني، ينفذ كود أعمق.
- كأنك تسأل سؤال داخل سؤال حسب الحالة.
if (condition1) {
if (condition2) {
// كود إذا تحقق الشرطان
}
}
Dartمثال:
bool isLoggedIn = true;
bool hasPremium = false;
if (isLoggedIn) {
if (hasPremium) {
print("مرحباً بالعضو المميز");
} else {
print("يمكنك ترقية حسابك إلى مميز");
}
} else {
print("الرجاء تسجيل الدخول");
}
/////////////////////////////////
void main() {
bool isStudent = true;
double gpa = 3.8; // المعدل التراكمي
if (isStudent) {
print('أنت طالب.');
if (gpa >= 3.5) {
print('وأنت طالب متفوق! أحسنت 👏');
} else {
print('لكن تحتاج لرفع معدلك لتصبح متفوقًا.');
}
} else {
print('أنت لست طالبًا.');
}
}
/////////////////////////////////
void main() {
int age = 16;
String nationality = 'مصري';
if (age >= 18) {
if (nationality == 'مصري') {
print('أنت مؤهل للتصويت');
} else {
print('ليست الجنسية المطلوبة');
}
} else {
print('أنت صغير بالعمر');
}
}
//////////////////////////////
if (age >= 18 && nationality == 'مصري') {
print('أنت مؤهل للتصويت');
}
Dartمثال:
void main() {
String role = 'مدير';
int age = 30;
String nationality = 'مصري';
int experience = 6;
if (role == 'مدير') {
if (age >= 25) {
if (nationality == 'مصري') {
if (experience >= 5) {
print('مسموح لك بالدخول مع كامل الصلاحيات');
} else {
print('تحتاج إلى خبرة أكثر للحصول على كامل الصلاحيات');
}
} else {
print('يجب أن تكون مصري الجنسية');
}
} else {
print('يجب أن يكون العمر 25 سنة أو أكثر');
}
} else {
print('فقط المدراء يمكنهم محاولة الدخول');
}
}
Dartمتى تستخدم Nested if؟
✅ عندما تحتاج التحقق من شرطين أو أكثر بشكل تسلسلي،
✅ أو عندما تعتمد الشروط على بعض (أي الشرط الثاني لا معنى له بدون الأول).
ما هي if المختصرة (Ternary Operator)؟
هي طريقة سريعة ومختصرة لكتابة شرط بسيط بدلاً من استخدام if
و else
بشكل كامل.
تُستخدم عندما تريد اتخاذ قرار بين قيمتين فقط بناءً على شرط واحد.
صيغتها العامة: طريقة كتابتها
condition ? expression1 : expression2;
Dartشرح طريقة التنفيذ:
- إذا كان الشرط صحيح ✅ → استخدم القيمة الأولى.
- إذا كان الشرط خطأ ❌ → استخدم القيمة الثانية.
if (age >= 18) {
message = 'شاب';
} else {
message = 'فتى';
}
////////////////////////////////////////////////////////
void main() {
int age = 20;
String message = (age >= 18) ? 'فتى' : 'شاب';
print(message);
}
Dartمثال:
void main() {
double grade = 72.5;
String result = (grade >= 50) ? 'ناجح' : 'راسب';
print('نتيجتك: $result');
}
Dartمتى نستخدم Ternary Operator؟
✅ عندما يكون لديك شرط بسيط جدًا.
✅ عندما يكون لديك قرار بين اختيارين فقط.
ملاحظة مهمة
لو عندك أكثر من اختيارين، من الأفضل استخدام if-else if-else
العادي
أو سلسلة من ternary operators ولكن بحذر لكي لا يصبح الكود معقد وصعب الفهم.
مثال للشرط المتعدد:
void main() {
double grade = 92.0;
int attendance = 95; // نسبة الحضور %
String award = (grade >= 90 && attendance >= 90)
? 'مؤهل للحصول على الجائزة'
: 'غير مؤهل للجائزة';
print(award);
}
Dartشرح المثال:
- الشرط الأول: الدرجة
>= 90
- والشرط الثاني: الحضور
>= 90
لو تحقق الشرطين معًا ✅ →
يطبع “مؤهل للحصول على الجائزة”.
لو أحدهم أو كلاهما خطأ ❌ →
يطبع “غير مؤهل للجائزة”.
void main() {
double grade = 88.0;
int attendance = 92;
String award = (grade >= 90 || attendance >= 90)
? 'مؤهل لدخول السحب على الجائزة'
: 'غير مؤهل للسحب';
print(award);
}
Dartvoid main() {
double grade = 76.5;
String result = (grade >= 90) ? 'ممتاز'
: (grade >= 80) ? 'جيد جدًا'
: (grade >= 70) ? 'جيد'
: (grade >= 60) ? 'مقبول'
: 'راسب';
print('تقديرك: $result');
}
Dartملاحظات مهمة:
✅ كل شرط يتم تقييمه بالتسلسل من الأعلى للأسفل.
✅ أول شرط صحيح يتم اختياره وتوقف التقييم.
✅ لو كل الشروط خطأ ➡️ يتم اختيار القيمة الافتراضية في النهاية.
void main() {
int temperature = 30;
String weather = (temperature >= 35) ? 'حر جدًا'
: (temperature >= 25) ? 'معتدل'
: (temperature >= 15) ? 'بارد'
: 'بارد جدًا';
print('الطقس: $weather');
}
Dart