التعبيرات المنطقية (Logical)

التعبيرات المنطقية (Logical Expressions)

التعبيرات المنطقية هي نوع من التعبيرات مختص بالقيمة المنطقية (Boolean) وهي true و false وبالتالي هذا النوع من التعبيرات يكون ناتج تشغيله قيمة منطقية أيضاً؛ فإما true أو false

العلامات المنطقية

العلامةمعناهامثال على العلامةالمثال يساوي
||أو (Or)true || falsetrue
&&و (And)true && falsefalse
!ليس (not)!truefalse

التعبير أو (Or) ||

التعبير "أو" علامته || مثل: x == 5 || x == 6 فعندما يمر المفسر على التعبير السابق يعتبر أن ناتجه يساوي:

  • true: إن كان الطرف اﻷول يساوي true أو الطرف التاني يساوي true
  • false: إذا كان الطرفان كلاهما يساوي false

يمكن كتابة العلامة | عن طريق الضغط على Shift ثم الضغط على مفتاح يتواجد أعلى زر Enter أو يساره حسب لوحة المفاتيح

كيف يعمل المفسر؟

يمر المفسر على التعبير المنطقي (أو)، فيتحقق أولاً من الطرف اﻷول.. هل true أم false، فإن كان true يكون ناتج التعبير true أما إن كان false يقوم بالتحقق من الطرف الثاني، فإذا كان true يكون ناتج التعبير true غير ذلك يكون الطرفين false بالتالي يكون ناتج التعبير false

مثال التحقق من أن أحد المتغيرين يساوي 5

var x = 5,
  y = 4;

console.log(x == 5 || y == 5);
ناتج التشغيل true
var x = 3,
  y = 4;

console.log(x == 5 || y == 5);
ناتج التشغيل false

إذا كان: (x يساوي 5 أو y يساوي 5) فإن ناتج التعبير المنطقي يساوي true

مثال التحقق من العمر

تخيل أن لدينا متغير age قيمته تساوي عُمر المُستخدم، ونريد أن نسمح فقط باﻷطفال (تحت 10 سنوات) أو كبار السن (فوق 40 سنة)، كيف يمكننا تنفيذها ؟

كنا سابقاً نستخدم الشروط المتعددة بهذا الشكل:

var age = 20;
if (age < 10){
  console.log("مسموح");
}else{
  if (age > 40){
    console.log("مسموح");
  }else{
    console.log("غير مسموح");
  }
}
ناتج التشغيل غير مسموح

ولكن اﻵن مع التعبيرات المنطقية باستخدام التعبير (أو) يمكننا تنفيذها بهذه الطريقة:

var age = 20;
if (age < 10 || age > 40){
  console.log("مسموح");
}else{
  console.log("غير مسموح");
}

نتحقق أولاً هل العمر أقل من 10 أو أكبر من 40 ؟ إذن نطبع مسموح، غير ذلك نطبع غير مسموح!

جدول نواتج التعبير (أو)

التعبيرناتج تفسير التعبير
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse

التعبير و (And) &&

التعبير "و" علامته && مثل: x >= 10 && x <= 20 فعندما يمر المفسر على التعبير السابق يعتبر أن ناتجه يساوي:

  • true: إن كان الطرف اﻷول يساوي true و الطرف التاني يساوي true أيضاً.
  • false: إذا كان واحد من الطرفين يساوي false أو كلاهما يساوي false

يمكن كتابة العلامة & عن طريق الضغط على Shift ثم الضغط على مفتاح العدد 7 أعلى لوحة المفاتيح

مثال التحقق من العمر

لدينا متغير age قيمته تساوي عُمر المُستخدم، ونريد أن نسمح فقط بالشباب (أكبر من 15 سنة وأقل من 40 سنة)، كيف يمكننا تنفيذها ؟

هنا التعبير المنطقي يكون "و" ﻷننا نريد أن نسمح بمن هم أكبر من 15 و أقل من 40 لذلك سنستخدم العلامة &&

كنا سابقاً نستخدم الشروط المتعددة بهذا الشكل:

var age = 20;
if (age > 15 && age < 40){
  console.log("مسموح");
}else{
  console.log("غير مسموح");
}
ناتج التشغيل مسموح

كيف يعمل المفسر؟

يمر المفسر على التعبير المنطقي (و)، فيتحقق أولاً من الطرف اﻷول.. فإذا كان false لا يكمل المفسر ويعتبر أن ناتج التعبير كله يساوي false أما إن كان true فيتحقق من الطرف الثاني، إن كان الطرف الثاني true أيضاً، يعتبر المفسر ناتج التعبير true غير ذلك يعتبره false

جدول نواتج التعبير (و) &&

التعبيرناتج تفسير التعبير
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse

التعبير ليس (not) !

التعبير (ليس) من أهم التعبيرات المنطقية، ويُستخدم لعكس القيمة المنطقية، لاحظ الجدول:

جدول نواتج التعبير (ليس) !

التعبيرناتج تفسير التعبير
!truefalse
!falsetrue

مثال الوضع الغير ليلي

تخيل أن لدينا متغير dark قيمته منطقية، true إن كان الوضع الليلي مفعل، وfalse إن كان غير مفعل... ونريد أن نضع شرط يتحقق إن كان الوضع الليلي غير مفعل يعني إن كان يساوي false.. يمكننا كتابة dark == false لكننا لا نفضل هذا التعبير، بل نفضل اﻹختصار: !dark

var dark = false;
if (!dark){
  console.log("الوضع الليلي غير مفعل");
}
ناتج التشغيل الوضع الليلي غير مفعل

ويمكن استخدامه مع تعبيرات المقارنة والتعبيرات المنطقية اﻷخرى باستخدام اﻷقواس:

التعبيرناتج تفسير التعبير
!(5 > 6)true
!(5 == 5)false
!(true && true)false

تستخدم التعبيرات المنطقية بكثرة مع الشروط if وتختصر الكثير وتسهّل عليك تنفيذ الكثير من الخوارزميات

يمكن استخدام التعبيرات المنطقية كأي تعبير من التعبيرات التي درسناها سابقاً، فمثلاً يمكن أن يكون التعبير مُدخل لدالة console.log(true || true) وممكن أن يكون قيمة لمتغير var result = true || true وهكذا

المساهمين

وجدت خطأ أو تريد المساهمة في محتوى الدرس؟ عدل الصفحة على Github