المعاملات المنطقية والمقارنات: كيف يتخذ الكود قراراته؟
ماذا سنتعلم اليوم؟ سنتعلم كيف تستخدم لغات البرمجة المعاملات المنطقية والمقارنات لاتخاذ قرارات ديناميكية، مما يجعل برامجنا أكثر ذكاءً وتفاعلية.
في عالم البرمجة، القدرة على اتخاذ القرارات هي جوهر بناء تطبيقات ذكية ومتجاوبة. تُعد معاملات المقارنة والمعاملات المنطقية الأدوات الأساسية التي تمكن الكود من تقييم الشروط وتنفيذ مسارات مختلفة بناءً على هذه التقييمات. دعونا نتعمق في كيفية عملها.
الخطوة 1: معاملات المقارنة (Comparison Operators)
تُستخدم معاملات المقارنة لمقارنة قيمتين، وتُرجع دائماً قيمة منطقية (True أو False). هذه المعاملات هي أساس أي عملية اتخاذ قرار في الكود.
ملاحظة تقنية: تذكر أن
==يُستخدم للمساواة، بينما=يُستخدم لإسناد قيمة لمتغير.
# تعريف بعض المتغيرات لاختبار المقارنات
x = 10
y = 5
z = 10
print(f"هل x يساوي y؟ {x == y}") # هل x يساوي y؟ (False)
print(f"هل x لا يساوي y؟ {x != y}") # هل x لا يساوي y؟ (True)
print(f"هل x أكبر من y؟ {x > y}") # هل x أكبر من y؟ (True)
print(f"هل x أقل من y؟ {x < y}") # هل x أقل من y؟ (False)
print(f"هل x أكبر من أو يساوي z؟ {x >= z}") # هل x أكبر من أو يساوي z؟ (True)
print(f"هل y أقل من أو يساوي x؟ {y <= x}") # هل y أقل من أو يساوي x؟ (True)
الخطوة 2: المعاملات المنطقية (Logical Operators)
بينما تُقارن معاملات المقارنة القيم، تُستخدم المعاملات المنطقية لدمج أو عكس النتائج المنطقية (True/False). المعاملات الرئيسية هي and، or، و not.
ملاحظة تقنية: المعامل
andيُرجعTrueفقط إذا كانت جميع الشروط صحيحة. المعاملorيُرجعTrueإذا كان شرط واحد على الأقل صحيحاً. المعاملnotيعكس النتيجة المنطقية.
# تعريف بعض المتغيرات والشروط المنطقية
العمر = 25
هل_طالب = True
هل_عضو = False
# استخدام المعامل المنطقي 'and'
print(f"هل العمر أكبر من 18 و هل هو طالب؟ {العمر > 18 and هل_طالب}") # (True and True) -> True
# استخدام المعامل المنطقي 'or'
print(f"هل هو طالب أو هل هو عضو؟ {هل_طالب or هل_عضو}") # (True or False) -> True
# استخدام المعامل المنطقي 'not'
print(f"هل هو ليس طالباً؟ {not هل_طالب}") # (not True) -> False
# دمج أكثر من شرط
print(f"هل (العمر أكبر من 30 أو هل هو عضو) و ليس طالباً؟ {(العمر > 30 or هل_عضو) and not هل_طالب}")
# (False or False) and False -> False and False -> False
الخطوة 3: دمج المعاملات والجمل الشرطية (Combining Operators and Conditional Statements)
تظهر قوة هذه المعاملات الحقيقية عند دمجها مع الجمل الشرطية مثل if، elif، و else. هذا يسمح للكود باتخاذ قرارات معقدة بناءً على سيناريوهات متعددة.
ملاحظة تقنية: يمكن استخدام الأقواس
()لتحديد أولوية تقييم الشروط المنطقية، تماماً كما في العمليات الحسابية.
# سيناريو: نظام تحديد الأهلية لدخول حدث
العمر_المطلوب = 18
لديه_تذكرة = True
لديه_دعوة_خاصة = False
# تعريف بيانات الزائر
عمر_الزائر = 20
هل_الزائر_لديه_تذكرة = True
هل_الزائر_لديه_دعوة_خاصة = False
# تقييم الشروط لاتخاذ القرار
if (عمر_الزائر >= العمر_المطلوب and هل_الزائر_لديه_تذكرة) or هل_الزائر_لديه_دعوة_خاصة:
# الشرط الأول: الزائر مؤهل إذا كان عمره كافياً ولديه تذكرة
# أو الشرط الثاني: مؤهل إذا كان لديه دعوة خاصة (بغض النظر عن العمر أو التذكرة)
print("مرحباً بك! يمكنك الدخول إلى الحدث.")
elif عمر_الزائر < العمر_المطلوب:
# إذا لم يستوفِ الشروط أعلاه وكان عمره أقل من المطلوب
print("عذراً، عمرك لا يسمح بالدخول.")
else:
# إذا لم يستوفِ أي من الشروط السابقة (مثلاً: عمره كافٍ لكن لا تذكرة ولا دعوة)
print("عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.")
# سيناريو آخر لاختبار حالة مختلفة
عمر_الزائر_2 = 16
هل_الزائر_لديه_تذكرة_2 = True
هل_الزائر_لديه_دعوة_خاصة_2 = True # لديه دعوة خاصة
print("\n--- اختبار حالة زائر آخر ---")
if (عمر_الزائر_2 >= العمر_المطلوب and هل_الزائر_لديه_تذكرة_2) or هل_الزائر_لديه_دعوة_خاصة_2:
print("مرحباً بك! يمكنك الدخول إلى الحدث.")
elif عمر_الزائر_2 < العمر_المطلوب:
print("عذراً، عمرك لا يسمح بالدخول.")
else:
print("عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.")
الكود النهائي الكامل
هذا هو السكربت كاملاً الذي يجمع كل ما تعلمناه اليوم.
# الجزء الأول: معاملات المقارنة
x = 10
y = 5
z = 10
print("--- نتائج معاملات المقارنة ---")
print(f"هل x يساوي y؟ {x == y}")
print(f"هل x لا يساوي y؟ {x != y}")
print(f"هل x أكبر من y؟ {x > y}")
print(f"هل x أقل من y؟ {x < y}")
print(f"هل x أكبر من أو يساوي z؟ {x >= z}")
print(f"هل y أقل من أو يساوي x؟ {y <= x}")
print("\n--- نتائج المعاملات المنطقية ---")
# الجزء الثاني: المعاملات المنطقية
العمر = 25
هل_طالب = True
هل_عضو = False
print(f"هل العمر أكبر من 18 و هل هو طالب؟ {العمر > 18 and هل_طالب}")
print(f"هل هو طالب أو هل هو عضو؟ {هل_طالب or هل_عضو}")
print(f"هل هو ليس طالباً؟ {not هل_طالب}")
print(f"هل (العمر أكبر من 30 أو هل هو عضو) و ليس طالباً؟ {(العمر > 30 or هل_عضو) and not هل_طالب}")
print("\n--- نتائج دمج المعاملات والجمل الشرطية ---")
# الجزء الثالث: دمج المعاملات والجمل الشرطية
العمر_المطلوب = 18
# الزائر الأول
عمر_الزائر_1 = 20
هل_الزائر_لديه_تذكرة_1 = True
هل_الزائر_لديه_دعوة_خاصة_1 = False
print("\n--- اختبار الزائر الأول ---")
if (عمر_الزائر_1 >= العمر_المطلوب and هل_الزائر_لديه_تذكرة_1) or هل_الزائر_لديه_دعوة_خاصة_1:
print("مرحباً بك! يمكنك الدخول إلى الحدث.")
elif عمر_الزائر_1 < العمر_المطلوب:
print("عذراً، عمرك لا يسمح بالدخول.")
else:
print("عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.")
# الزائر الثاني
عمر_الزائر_2 = 16
هل_الزائر_لديه_تذكرة_2 = True
هل_الزائر_لديه_دعوة_خاصة_2 = True # لديه دعوة خاصة
print("\n--- اختبار الزائر الثاني ---")
if (عمر_الزائر_2 >= العمر_المطلوب and هل_الزائر_لديه_تذكرة_2) or هل_الزائر_لديه_دعوة_خاصة_2:
print("مرحباً بك! يمكنك الدخول إلى الحدث.")
elif عمر_الزائر_2 < العمر_المطلوب:
print("عذراً، عمرك لا يسمح بالدخول.")
else:
print("عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.")
# الزائر الثالث
عمر_الزائر_3 = 22
هل_الزائر_لديه_تذكرة_3 = False
هل_الزائر_لديه_دعوة_خاصة_3 = False
print("\n--- اختبار الزائر الثالث ---")
if (عمر_الزائر_3 >= العمر_المطلوب and هل_الزائر_لديه_تذكرة_3) or هل_الزائر_لديه_دعوة_خاصة_3:
print("مرحباً بك! يمكنك الدخول إلى الحدث.")
elif عمر_الزائر_3 < العمر_المطلوب:
print("عذراً، عمرك لا يسمح بالدخول.")
else:
print("عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.")
النتيجة المتوقعة
عند تشغيل السكربت، ستحصل على المخرجات التالية التي توضح نتائج كل مقارنة ومنطق، بالإضافة إلى رسائل الدخول للزوار بناءً على الشروط المحددة:
--- نتائج معاملات المقارنة --- هل x يساوي y؟ False هل x لا يساوي y؟ True هل x أكبر من y؟ True هل x أقل من y؟ False هل x أكبر من أو يساوي z؟ True هل y أقل من أو يساوي x؟ True --- نتائج المعاملات المنطقية --- هل العمر أكبر من 18 و هل هو طالب؟ True هل هو طالب أو هل هو عضو؟ True هل هو ليس طالباً؟ False هل (العمر أكبر من 30 أو هل هو عضو) و ليس طالباً؟ False --- نتائج دمج المعاملات والجمل الشرطية --- --- اختبار الزائر الأول --- مرحباً بك! يمكنك الدخول إلى الحدث. --- اختبار الزائر الثاني --- مرحباً بك! يمكنك الدخول إلى الحدث. --- اختبار الزائر الثالث --- عذراً، لا تملك تذكرة أو دعوة خاصة للدخول.