2024208494886170954365459073536587125329324600425355324472245929212525005525530030271027810172575929800065427858557245242200073127892960531555

الأحد، 30 أغسطس 2020

لغة JavaScript المتغيرات - الدرس الرابع

 


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


المتغيرات Variables:

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

var x;

هنا المتغير إسمه x ، كما يمكننا أن نعين قيمة للمتغير وذلك من خلال وضع اشارة = بين إسم المتغير والقيمة كما يلي:

var x= 5;

الأن أصبح في الذاكرة موقع لمتغير إسمة x وقيمتة الإبتدائية هي 5 السؤال هل يمكننا تغير القيمة ؟ نعم تتبع الشيفرة:

var x=5;

x=8;

x=6;

document.write(x);

برأيك ماذا سيطبع البرنامج؟


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

لكن هل يمكن أن نمكن المستخدم من إدخال هذه القيمة ؟ نعم وذلك بجعل جمل الإدخال مثل prompt قيمة للمتغير تابع المثال:



وبعد الضغط على زر ok سيقوم بطابعة ما أدخلة المستخدم وهي هنا 99


لاحظ هنا أننا يمكنا أن نضع قيمة المتغير في نفس السطر أو تقسيمها الى سطرين أي أن الشيفرة التالية:

var x= prompt('أدحل القيمة' , '  ');

document.write(x);

هي بديل مكافئ للشيفرة المثال كما يمكن أن نخزن في المتغيرات أنواع أخرى من البيانات غير الرقيمة منها مثل الرموز والأحرف والقيم المنطقة true/false

فلو أردنا ان نحزن إسم المستخدم وطباعة الإسم بعد الترحيب تتبع الشيفرة التالية:



والنتيجة ستكون:




لاحظ هنا لإدخال المسافة بين مرحبا بك وبين قيمة المتغير x  وهي محمد حسب ما أدخل المستخدم قمنا بوضع إشارات التنصيح المفردة وبينها مسافة:


لكن هل يجوز لي أن أضع المتغير x  في جملة الطباعة بين إشارة التنصيح ما الذي سيحدثه ذلك؟

<html><body><script>

var x;


x=prompt('أدخل الإسم',' '); 

 

document.write( 'مرحباً بك' + '  ' + 'x');


</script></body></html>


النتيجه هنا ستكون:




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


شروط تسمة المتغيرات:

هناك شروط خاصه لطرح تسمية للمتغير وهي:

1- أن لا تكون أول خانة من المتغير رقم أو رموز بل يجب أن تكون حرف باللغة الإنجليزية

2- أن لا يكون كلمة محجوزة لجمل الجافاسيكربت مثل جملة الطباعة print

3- إذا أردنا أن ندرج متغير من مقطعين يمكننا أن نضع بينها إشرة _ ولكن لا يصح أن نضع فراغ ومثال ذلك ٍstudent_name هذا إسم صحيح أما student name هذا خاطئ.


إدراج أكثر من متغير:

هل يمكنناأن ندرج أكثر من متغير؟ نعم و بعدة طرق فيمكننا أن نجمع عملية خلق القيم var x, y,.... , وتُسمى declaration  لكن عند اعطاء القيمة لابد أن يكون كل متغير في سطر لوحة لاحظ الجدول:

تحويل نوع قيم المتغير:

هل يمكنن أن اصنع برنامج يطلب من المستخدم أدخال راتبة ثم أقوم بزيادة ما قيمتة 50 دولر لراتب واطبع القيمة بعد تعديلها؟

فلنجرب هذا معاً:


  var x;
  x=prompt('أدخل الراتب',' '); 
  x=x+50;
  document.write(x);


هنا في السطر الثالث قمنا بتحديث قيمة المتغير x  وذلك بجلب القيمة السابقة له التي أدخلها المتغير وإضافة 50:





هنا المستخدم كان راتبة 270 دولارلكن ماذا سيطبع البرنامج هل بالفعل سيقوم بزيادة 50 دولار للراتب ليصبح 320 دولار لاحظ النتيجة ؟




الواضح أن البرنامج لم يجمع بل قام بوضع القيمتين بجانب بعضهما أي أنه قام بعملية   Concatenation كما شرحنا سابقاُ ، لكن ما السبب وما هو الحل:

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


 parseInt();


لاحظ أن الحرف I  هنا كبير ولغة الجافاسيكربت لغة حساسة لا يجوز التلاعب في أنواع الحروف فيها بالتالي سنضع كل ما يقوم المستخدم بإدخالة في هذه الشيفرة وهنا سيدخل راتبة كما يلي:



ماذا لو كان الراتب فيه أعشار كالسنتات 270.40 واريد أن أضيف عليه 50.5 هل سيفهم  parseInt الأعشار ؟ الجواب لا ولكي تُفهم الأعشار لابد من إستخدام الشيفرة :


 parseFloat();

وهنا ايضاً حرف F كبير تتبع الشيفرة :



النتيجة :



نستكمل في الدروس القادمة إن شاء الله حيث سنتعرف على جمل الشرط 

IF Stuntmen  وكلذلك الإقترانات فإلى اللقاء قريب..










----------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------

كافة الحقوق محفوظة لـ مدونة رعد: لإثراء المعرفة التقنية 2019