if Statment2

 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);
}
Dart
void 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