Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

أساسيات البرمجةالتحقق من أنواع القيم

  • أهمية فحص أنواع القيم
  • طريقة فحص نوع القيمة المدخلة
  • طريقة استخدام العامل typeof
  • طريقة استخدام الدالة isNaN()

أهمية فحص أنواع القيم

التشييك على أنواع القيم التي يدخلها المستخدم أمر مهم جداً لضمان عدم حدوث أي أخطاء منطقية أو برمجية أثناء تشغيل البرنامج لأننا لا نعلم و لا نضمن ما الذي قد يقوم المستخدم بإدخاله من الكيبورد فمثلاً في حال طلبنا منه إدخال عدد ما فنحن لا نضمن قيامه بالإلتزام بتعاليمنا و إدخال رقم, فقد يقوم بكل بساطة بإدخال نص ليرى هل سيحدث شيء خاطئ إن فعل ذلك.

ليس هذا فحسب، ففي المشاريع الحقيقية نقوم بالتشييك على مدخلات المستخدم لضمان أن لا يكون بينهم مخترق يريد إرسال كود بدل معلومة التي طلبناها منه و الذي من شأنه إلحاق ضرر بالغ في قاعدة البيانات الخاصة بالمشروع أو تضمين أوامر خبيثة في محتوى المشروع لكي يوقع باقي المستخدمين ضحايا له.

في دروس لاحقة سنقوم بإجبار المستخدم على إدخال قيم ضمن شروط محددة و عندها سنقوم بالتشييك على أنواع القيم التي يدخلها المستخدم كما سنتعلم في هذا الدرس.

طريقة فحص نوع القيمة المدخلة

طريقة فحص نوع القيمة التي يدخلها المستخدم تختلف من لغة برمجة للغة لأخرى و هناك لغات تجبرك من البداية على تحديد أنواع القيم التي ستقوم بتخزينها في المتغيرات و هناك لغات لا تفعل ذلك.

مهما كانت اللغة البرمجية التي ستتعامل معها مستقبلاً، كن على يقين أنها توفر لك العديد من الأوامر و الطرق السهلة التي يمكنك استخدامها لفحص أنواع القيم. لهذا لا تظن أنك في المستقبل ستواجه أي صعوبة بسبب هذا الأمر بالعكس هذا أمر تافه جداً.

الآن في حال أردت فحص نوع القيمة التي يدخلها المستخدم في محرر الكود لمعرفة ما إن كانت هذه القيمة هي قيمة عددية أم قيمة نصية فهنا لديك طرق كثيرة يمكنك فيها تحقيق ذلك و سنركز فقط على الطريقتين التاليتين لأنها الأكثر بساطة و تؤدي المطلوب:

  • فحص القيمة باستخدام العامل typeof.
  • فحص القيمة باستخدام الدالة isNaN().

طريقة استخدام العامل typeof

في المثال التالي طلبنا من المستخدم إدخال قيمة و من بعدها قمنا بفحص نوع القيمة التي قام بإدخالها و على أساس نوعها قمنا بطباعة جملة تناسب النوع.

مثال

write("Enter a value: ");
var x = read();

if (typeof(x) == "number")
{
    write("X contains a number."); 
}
else if (typeof(x) == "string")
{
    write("X contains a string."); 
}
else
{
    write("X contains a " + typeof(x)); 
}

عند التشغيل في حال قمت بإدخال رقم مثل 3 فستكون النتجية كالتالي.

Enter a number: 3
X contains a number.

عند التشغيل في حال قمت بإدخال نص مثل abc فستكون النتجية كالتالي.

Enter a number: abc
X contains a string.

جرب الكود


في المثال السابق لم يكن هناك أي داعي لوضع الجملة else لأن الدالة read() ترجع ما يدخله المستخدم إما كنص أو كرقم و لا يوجد أي إحتمال آخر.
سبب قيامنا بوضع else هي تعليمك كيف تعرف نوع قيمة المتغير بشكل عام إن كان هناك أي إحتمالية أن تكون من نوع آخر.

طريقة استخدام الدالة isNaN()

محرر هرمش يوفر لك هذه الدالة بشكل أساسي حتى تكتب كود أقل عند فحص مدخلات المستخدم.

إسم هذه الدالة مشتق من جملة is Not a Number و التي تعني: هل القيمة غير عددية؟
في عالم البرمجة القيمة يمكن أن تكون عددية، نصية، منطقية إلخ.. يكفي لك الآن التركيز فقط على أن تكون القيمة عددية أو غير عددية.

الآن، لاستخدام الدالة isNaN() يجب تمرير إسم المتغير الذي تريد فحص قيمته بين أقواسها و هي سترجع القيمة:

  • true إذا كانت قيمته غير عددية.
  • false إذا كانت قيمته عددية.

في المثال التالي طلبنا من المستخدم إدخال عدد، و من بعدها قمنا بفحص نوع القيمة التي قام بإدخالها لمعرفة ما إن كان قد أدخل عدد فعلاً أم لا.

مثال

write("Enter a number: ");
var x = read();

if (isNaN(x))
{
    write("X is not a number."); 
}
else
{
    write("X is number."); 
}

عند التشغيل في حال قمت بإدخال نص مثل Mhamad فستكون النتجية كالتالي.

Enter a number: Mhamad
X is not a number.

عند التشغيل في حال قمت بإدخال رقم مثل 3.5 فستكون النتجية كالتالي.

Enter a number: 3.5
X is number.

جرب الكود