هناك قيمتان فقط لنوع البيانات المنطقية، وهما True و False. تُستخدم الحسابات المنطقية في البرمجة لإجراء الموازنات، والتحكم في مسار البرنامج.
تمثِّل القيم المنطقية قيم الحقيقة (truth values) في علم المنطق في الرياضيات. وتٌكتب القيمتان True
و False
دائمًا بالحرفين الكبيرين T و F على التوالي، لأنهما قيمتان خاصتان في بايثون.
في هذه المقالة، سنتعرف على العمليات المنطقية في بايثون، بما في ذلك الموازنة المنطقية، والعوامل المنطقية، وجداول الحقيقة.
عوامل الموازنة
في البرمجة، تُستخدم عوامل الموازنة للموازنة بين القيم، وتعيد إحدى القيمتين المنطقتين True
و False
.
يوضح الجدول أدناه عوامل الموازنة المنطقية.
العامل | الشرح |
---|---|
== | تساوي |
!= | تخالف |
< | أصغر من |
> | أكبر من |
<= | أصغر من أو تساوي |
>= | أكبر من أو تساوي |
لفهم كيفية عمل هذه العوامل، سنستخدم المتغيرين التاليين:
x = 5 y = 8
في هذا المثال، لمّا كان x
يساوي 5
، فهو أصغر من y
ذي القيمة 8
.
باستخدام هذين المتغيرين والقيم المرتبطة بهما، سنجرّب العوامل من الجدول أعلاه. سنطلب من بايثون أن تطبع ناتج عملية الموازنة، إما True أو False. لتوضيح المثال أكثر، سنطبع سلسلة نصية لتوضيح ما جرى تقييمه.
x = 5 y = 8 print("x == y:", x == y) print("x != y:", x != y) print("x < y:", x < y) print("x > y:", x > y) print("x <= y:", x <= y) print("x >= y:", x >= y)
والمخرجات هي:
x == y: False x != y: True x < y: True x > y: False x <= y: True x >= y: False
باتباع المنطق الرياضي، في كل من التعبيرات المذكورة أعلاه، هذه نتيجة الموازنات:
-
5 (
x
) تساوي 8 (y
)؟ خطأ - 5 تخالف 8؟ صح
- 5 أصغر من 8؟ صح
- 5 أكبر من 8؟ خطأ
- 5 أصغر من أو يساوي 8؟ صح
- 5 ليس أصغر من أو يساوي 8؟ خطأ
رغم أننا استخدمنا الأعداد الصحيحة هنا، إلا أنه بإمكاننا استبدال الأعداد العشرية بها.
يمكن أيضًا استخدام السلاسل النصية مع العوامل المنطقية. وهي حساسة لحالة الأحرف، ما لم تستخدم تابعًا إضافيًا للسلاسل النصية.
المثال التالي يوضح كيفية موازنة السلاسل النصية:
Sammy = "Sammy" sammy = "sammy" print("Sammy == sammy: ", Sammy == sammy) # Sammy == sammy: False
السلسلة "Sammy"
أعلاه لا تساوي السلسلة النصية "sammy"
، لأنهما ليستا متماثلتين تمامًا؛ فإحداهما تبدأ بحرف كبير S
، والأخرى بحرف صغير s
. ولكن لو أضفنا متغيرًا آخر قيمته "Sammy"، فستكونان متساويتين:
Sammy = "Sammy" sammy = "sammy" also_Sammy = "Sammy" print("Sammy == sammy: ", Sammy == sammy) # Sammy == sammy: False print("Sammy == also_Sammy", Sammy == also_Sammy) # Sammy == also_Sammy: True
يمكنك أيضًا استخدام عوامل الموازنة الأخرى، بما في ذلك >
و <
لموازنة سلسلتين نصيتين. ستوازن بايثون هذه السلاسل النصية بحسب الترتيب المعجمي في نظام محارف ASCII.
يمكننا أيضًا تقييم القيم المنطقية باستخدام عوامل الموازنة:
t = True f = False print("t != f: ", t != f) # t != f: True
تبيّن الشيفرة البرمجية أعلاه أنّ True
لا تساوي False
.
لاحظ الفرق بين العاملين =
و ==
.
x = y # x إلى y إسناد قيمة x == y # متساويين x و y تتحقق مما إذا كان
الأول =
، هو عامل الإسناد (assignment operator)، والذي سيحدد قيمة أحد المتغيرين، ويجعلها مساوية لقيمة الآخر. الثاني ==
، وهو عامل الموازنة الذي سيحدد ما إذا كانت القيمتان متساويتان.
العوامل المنطقية
هناك ثلاثة عوامل منطقية تُستخدم لموازنة القيم. وتعيد إما True
أو False
. هذه العوامل هي، and
(و)، و or
(أو)، و not
(النفي)، وقد عرّفناها في الجدول أدناه.
العامل | الشرح | الصياغة |
---|---|---|
and | إن كان كلا التعبيرين صحيحين True |
x and y
|
or | إن كان أحد التعبيرين على الأقل صحيحًا True |
x or y
|
not | إن كان التعبير خطأ True |
not x
|
عادةً ما تُستخدم العوامل المنطقية لتقييم ما إذا كان تعبيران منطقيان صحيحان أم لا. على سبيل المثال، يمكن استخدامها لتحديد ما إذا كان الطالب قد نجح، وأنه مُسجل في الفصل، وإذا كانت كلتا الحالتان صحيحتان، فسيتم إدخال الطالب إلى النظام. مثال آخر هو تحديد ما إذا كان المستخدم عميلًا نشطًا لمتجر إلكتروني استنادًا إلى ما إذا كان لديه رصيد في المتجر، أو أنه اشترى خلال الأشهر الستة الماضية.
لفهم كيفية عمل العوامل المنطقية، دعنا نقيّم التعبيرات الثلاث التالية:
print((9 > 7) and (2 < 4)) # كلا التعبيرين صحيحان print((8 == 8) or (6 != 6)) # أحد التعبيرين صحيح print(not(3 <= 1)) # التعبير الأصلي خاطئ
والمخرجات هي:
True
True
True
في الحالة الأولى، ((9> 7) و (2 <4))print
، كلا التعبيرين
9> 7 و
2 <4 ينبغي أن يكونا صحيحين لأنّ العامل and
مُستخدَم.
في الحالة الثانية، print((8 == ? or (6 != 6))
بما أنّ قيمة 8 == 8
تم تقييمها بـ True
، فإنّ نتيجة تقييم 6 != 6
لا تهم. لكن لو استخدمنا العامل and
، لتمّ تقييم العبارة المنطقية بالقيمة False
.
في الحالة الثالثة، print(not(3 <= 1))
، العامل not
ينفي القيمة False
التي تعيدها العملية المنطقية 3 <= 1
.
في المثال التالي سنستبدل بالأعداد العشرية أعدادًا صحيحة:
print((-0.2 > 1.4) and (0.8 < 3.1)) # أحد التعبيرين خاطئ print((7.5 == 8.9) or (9.2 != 9.2)) # كلا التعبيرين خاطئان print(not(-5.7 <= 0.3)) # التعبير الأصلي صحيح
في المثال أعلاه:
-
and
: يجب أن يكون واحد على الأقل من التعبيرين خاطئًا لتعيد القيمةFalse
، -
or
: يجب أن يكون كلا التعبيرين خاطئين لتعيد القيمةFalse
، -
not
: يجب أن يكون التعبير المرافق لها صحيحًا حتى تعيد القيمةFalse
.
إذا لم تكن النتائج أعلاه واضحة لك، فسنعرض بعض جداول الحقيقة أدناه لتفهم الأمر بشكل أفضل.
يمكنك أيضًا كتابة عبارات مركبة باستخدام and
, و or
, و not
:
not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))
التعبير الداخلي: (0.8 <3.1) أو (0.1 == 0.1)
. يعيد القيمة True
، لأنّ كلا العبارتين الرياضيتين تعيدان True
.
الآن، نأخذ القيمة المُعادة True
ونجمعها مع التعبير المنطقي التالي: (-0.2> 1.4) and (True)
. هذا المثال يعيد False
، لأنّ العبارة -0.2> 1.4
تعيد القيمة False
، و (False) and (True)
تعيد False
.
أخيرًا، يعيد التعبير الخارجي: not (False)
القيمة True
، وبالتالي ستكون القيمة النهائية المعادة هي:
True
جداول الحقيقة (Truth Tables)
المنطق مجال واسع، وسنكتفي في هذه المقالة ببعض الأفكار المهمة التي يمكن أن تساعدك على تحسين طريقة تفكيرك وخوارزمياتك.
فيما يلي جداول الحقيقة لعامل الموازنة ==
، والعوامل المنطقية and
, و or
, و not
. من المفيد أن تحفظ كيفية عملها، فذلك سيجعلك أسرع في اتخاذ القرارات أثناء كتابة الشيفرات البرمجية.
جدول الحقيقة الخاص بالعامل ==
x | == | y | القيمة المُعادة |
---|---|---|---|
True | == | True | True |
True | == | False | False |
False | == | True | False |
False | == | False | True |
جدول الحقيقة الخاص بالعامل AND
x | and | y | القيمة المُعادة |
---|---|---|---|
True | and | True | True |
True | and | False | False |
False | and | True | False |
False | and | False | False |
جدول الحقيقة الخاص بالعامل OR
x | or | y | القيمة المُعادة |
---|---|---|---|
True | or | True | True |
True | or | False | True |
False | or | True | True |
False | and | False | False |
جدول الحقيقة الخاص بالعامل NOT
not | x | القيمة المُعادة |
---|---|---|
not | True | False |
not | False | True |
تُستخدم جداول الحقيقة في المنطق الرياضياتي كثيرًا، وهي مفيدة، ويجب حفظها ووضعها في الحسبان عند إنشاء الخوارزميات البرمجية.
استخدام العوامل المنطقية للتحكم في مسار البرنامج
للتحكم في مسار ونتائج البرنامج عبر العبارات الشرطية (flow control statements)، يمكننا استخدام شرط (condition) متبوعًا بعبارة برمجية (clause).
يتم تقييم الشرط بإحدى القيمتين True أو False، تلك القيمة تُستخدم لاتخاذ قرار في البرنامج. أما العبارة (clause) فهي الكتلة البرمجية التي تعقب الشرط وتحدِّد نتيجة البرنامج وما ينبغي فعله في حال تحقق الشرط.
تُظهر الشيفرة أدناه مثالًا على عوامل الموازنة التي تعمل مع العبارات الشرطية للتحكم في مسار البرنامج:
if grade >= 65: # شرط print("Passing grade") # بند else: print("Failing grade")
سيحدد هذا البرنامج ما إذا كان الطالب سينجح أم يرسب. في حال كانت الدرجة التي حصل عليها الطالب تساوي 83 مثلًا، فتقييم العبارة الأولى سيكون True
، وسيُطبَع النص "Passing grade
. أما إن كانت درجة الطالب هي 59
، فتقييم العبارة الأولى سيكون False
، وبالتالي سينتقل البرنامج لتنفيذ العبارة المرتبطة بالتعبير else
، أي سيطبع Failing grade
.
يمكن تقييم كل كائنات بايثون بإحدى القيمتين True
أو False
، لذلك يوصي الدليل PEP 8 بعدم موازنة كائن بإحدى القيمتين True
أو False
، لأنّ ذلك قد يؤدي إلى إعادة قيم منطقية غير متوقعة. على سبيل المثال، عليك تجنب استخدام مثل هذه العبارة sammy == True
في برامجك.
تساعد العوامل المنطقية على صياغة شروط يمكن استخدامها لتحديد النتيجة النهائية للبرنامج من خلال التحكم في مسار التنفيذ.
خلاصة
ألقينا في هذه المقالة نظرة على الموازنات والعوامل المنطقية، بالإضافة إلى جداول الحقيقة، وكيفية استخدام القيم المنطقية للتحكم في مسار البرنامج.
هذه المقالة جزء من سلسة مقالات حول تعلم البرمجة في بايثون 3.
ترجمة -وبتصرّف- للمقال Understanding Boolean Logic in Python 3 لصاحبته Lisa Tagliaferri
اقرأ أيضًا
- المقالة التالية: مدخل إلى القوائم
- المقالة السابقة: الدوال الرياضية المضمّنة في بايثون 3
- المرجع الشامل إلى تعلم لغة بايثون
- كتاب البرمجة بلغة بايثون
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.