التحويل المنطقي (Boolean Casting)

مقدمة

التحويل المنطقي هو عملية تحويل القيم بكل أنواعها إلى القيم المنطقية (true or false)؛ فمثلاً ربما قد سمعت سابقاً أن الحاسوب يعتبر أن 0 يعني false وأن 1 يعني true فهذا بالضبط ما سنتعلمه في التحويل المنطقي، وهذه العملية هامة جداً خصوصا في الشروط.

التحويل المنطقي والشروط

تأمل المثال التالي:

var num = 1;
if (num){
  console.log('test');
}
ناتج التشغيل test

في المثال السابق، كيف قام المفسر بطباعة "test" على الرغم من أن الشرط لا يساوي true أو false! الشرط هنا يساوي 1، فكيف حدثت؟

كيف يتحقق المفسر من الشرط؟

لمعرفة سبب ناتج المثال السابق يجب أن نعرف جيداً ما يحدث وراء الكواليس، كيف يعمل المفسر؟ كيف يتحقق من الشرط؟

  • معالجة التعبير: يقوم المفسر بمعالجة التعبير (إن وُجد) والحصول على الناتج
  • التحويل المنطقي: يقوم المفسر بتحويل الناتج إلى قيمة منطقية
  • التحقق المنطقي: التحقق هل الناتج يساوي true أم false

معالجة التعبير

لنفرض أن الشرط الذي أدخلته للمفسر هو تعبير مقارنة، مثلاً: 5 == 4، يقوم المفسر أولاً بمعالجة تعبير المقارنة والحصول على ناتجه، في هذه الحالة سيكون الناتج false، ويتم نفس الشيء مع أي تعبير أخر، مثلاً استدعاء دالة، استخدام متغير، تعبير حسابي، تعبير منطقي .. الخ، ومن الممكن ألّا يحتوي الشرط على تعبير، مثلاً يكون الشرط if (5) ففي هذه الحالة سيتخطى مرحلة معالجة التعبير.

التحويل المنطقي (Boolean Casting)

يقوم المفسر بتحويل الناتج إلى قيمة منطقية عن طريق التحويل المنطقي، فيقوم المفسر بالتحقق هل القيمة الحالية إذا حولناها إلى قيمة منطقية تكون true أم false ?

التحقق المنطقي

يتحقق المفسر أخيراً هل الناتج true إذن تحقق الشرط ويقوم المفسر بتنفيذ كتلة اﻷوامر، غير ذلك يتخطى الشرط... كما ذكرنا سابقاً في درس الشروط

إذن يجب عليك تعلم التحويل المنطقي، وقواعده، حتى تتمكن من التعامل مع الشروط بشكل صحيح!

قيم تتحول إلى false

هذه القيم يتعامل المفسر معها منطقياً على أنها false، وتسمى هذه القيم (Falsy):

  • false: القيمة المنطقية false بالتأكيد منطقياً تساوي false
  • 0: العدد صفر ولكن بشرط أن يكون من نوع عدد (integer) أو عدد عشري، وليس نصّ
  • null: القيمة الفارغة يعتبرها المفسر منطقياً false
  • "": النصّ الفارغ (empty string) يعتبره المفسر منطقياً false

بإختصار كل ما هو "فارغ" تقريباً يُعتبر false

المحوّل المنطقي
جرّب اكتب أي قيمة وسيظهر لك كيف يفسّرها المفسر منطقياً!
ﻻ تنسى استخدام علامات التنصيص "" مع النصوص (strings)

في معظم لغات البرمجة تُعتبر المصفوفة الفارغة [] هي قيمة Falsy أيضاً، يعتبرها المفسر false وكذلك مع القواميس {} فمثلاً في بايثون {} يعتبر منطقياً false ولكن جافاسكريبت تختلف في هذه النقطة، فتتعامل مع المصفوفة الفارغة [] والقاموس الفارغ {} على أنه true لذلك انتبه جيداً لهذه الملحوظة، وسنزودك بحل لهذه المشكلة لاحقاً في الدرس.

أمثلة مع الشروط

var data = null;
var num = 0;
var text = "";

if (data){
  console.log('data is true');
}
if (num){
  console.log('num is true');
}
if (text){
  console.log('text is true');
}
ناتج التشغيل

المثال السابق لن يطبع أي شيء ﻷن القيم كلها منطقياً تعتبر false

قيم تتحول إلى true

هي القيم التي يتعامل المفسر معها منطقياً على أنها true، وتسمى (Truthy Values)

  • true: القيمة المنطقية true بالتأكيد تُعتبر منطقياً true
  • كل النصوص ما عدا النص الفارغ
  • كل اﻷعداد ما عدا صفر
  • المصفوفات والقواميس الغير فارغة

بإختصار: هي كل القيم التي لا يعتبرها المفسر false!

بإختصار: هي كل القيم الغير فارغة، التي تعبر عن قيمة

المحوّل المنطقي
جرّب اكتب أي قيمة وسيظهر لك كيف يفسّرها المفسر منطقياً!
ﻻ تنسى استخدام علامات التنصيص "" مع النصوص (strings)
___

كل النصوص ما عدا النص الفارغ

  • النصوص كـ: "دليل مبرمج"
  • "0": يعتبره المفسر true ﻷنه نصّ (string) وليس عدد
  • "false": يعتبرها المفسر true ﻷن نوعها نصّ (string) وليست boolean لأنها داخل ""
var text = "test";
if (text){
  console.log("it's true");
}
ناتج التشغيل it's true

كل اﻷعداد ما عدا صفر

يتعامل المفسر مع كل اﻷعداد على أنها منطقياً true ما عدا الصفر يعتبر false

if (0){
  console.log("0 is true");
}else{
  console.log("0 is false");
}
ناتج التشغيل 0 is false
if (1){
  console.log("1 is true");
}else{
  console.log("1 is false");
}
ناتج التشغيل 1 is true

استخدام الدالة Boolean()

يمكن استخدام الدالة Boolean() لتحويل أي قيمة إلى قيمة منطقية.

ذكرناها لاستخدامها في اﻹختبار والتعلّم فقط

console.log( Boolean("1") ); // true
console.log( Boolean(1) ); // true
console.log( Boolean("0") ); // true
console.log( Boolean(0) ); // false
console.log( Boolean(22) ) // true

console.log( Boolean("") ); // false
console.log( Boolean("test") ); // true

console.log( Boolean("true") ); // true
console.log( Boolean(true) ); // true
console.log( Boolean("false") ); // true
console.log( Boolean(false) ); // false

console.log( Boolean([1,2,3]) ) // true
ناتج التشغيل true
true
true
false
true
false
true
true
true
true
false
true

المساهمين

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