Have an account? Sign in
Login  Register  Facebook
This Page is Under Construction! - If You Want To Help Please Send your CV - Advanced Web Core (BETA)
[Edit] Math
ربما مازال الأمر غامضا بالنسبة لك و لست مدركا بالضبط لما هو الكائن ,أعتقد أنه من خلال هذا الدرس سيتضح لك أكثر ما هو الكائن ,فبشكل عام ستدرك أكثر معنى المفهوم ,كما ستتعلم كيف تتعامل مع الكائنات الموجودة في اللغة مسبقا عامة ,و ستتعرف بشكل خاص على عدد من الخصائص و الدوال الموجودة في الكائن Math و التي تختص بالعمليات الحسابية و حساب المثلثات . كما قلنا في البداية الكائن هو مجموعة من الدوال و المتغيرات المجموعة معا و تتمحور وظائفها حول موضوع معين و بالنسبة للكائن Math فإنه يحتوي على عدد من الخصائص "متغيرات" تمثل ثوابت رياضية هامة كما يحتوى على عدد من الدوال التي تقوم بعمليات حسابية هامة سنقوم الآن باستعراض بعضها .و ستجد أن ثمة شيء مشترك بينها جميعها انها كلها دوال و متغيرات خاصة بالعمليات الحسابية و الرياضيات .

أولا:الخصائص .

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

الثابت PI.

وهو االثابت المشهور الذي نستخدمه في حساب محيط الدائرة و مساحتها و نسميه "ط" و قيمته 22/7 و القيمة الموجودة في الجافا سكريبت له هي القيمة العشرية مقربه لخمسة عشر رقم بعد العلامة العشرية 3.141592653589793 و نستدعيه هكذا Math.PI و كما من المفترض أننا جميعا نعلم أن محيط الدائرة يحسب من خلال القانون PI*Dأي حاصل ضرب القطر في قيمة الثابت "ط" ولذا إن أردنا عمل برنامج لحساب محيط دائرة فإنه يكون كالتالي:
PI
<html>
 <script>
    var dia=parseInt(prompt("Enter the diameter"))
  function circumference(diameter)
{
if (typeof diameter == "number" && diameter >= 0)
return Math.PI * diameter
} 
   alert("the circumference is :"+ circumference(dia) ) 
 </script>
  
</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و كما ترى في المثال إستخدمنا الثابت هنا في هذا السطر : return Math.PI * diameter لاحظ أن الحروف لابد أن تكون "كابيتال" أي أنك لو كتبته هكذا pi لن يعمل كما أنه أيضا حرف الM في Math لا بد أن يكون "كابيتال". يوجد أيضا معلومتين جديدتين في هذا المثال الأداة typeof و هي تستخدم في معرفة نوع البينات الموجود فيما بعدها و هنا بإستخدام هذا التعبير typeof diameter == "number" فإننا نتأكد من الدخل رقم و أنظر للقيم التي ترجعها typeof في الحالات المختلفة .
typeof 4  ترجع  "number"                
typeof "man"  ترجع "string"  
typeof alert ترجع "function"
 typeof Math  ترجع "object"
الشيء الآخر الجديد هو إستخدام الأداة && في هذا السطر : if (typeof diameter == "number" && diameter >= 0) وقد ذكرنا من قبل أن هذه الأداة && أي "and" بمعنى "و" تجعل الناتج يكون صحيحا فقط في حالة أن يكون ما على يمينها صحيحا و ما على يسارها صحيحا و لذا فإن الشرط هنا لا يتحقق إلا إذا كان القطر diameter رقم و أيضا أكبر من أو يساوي الصفر بمعنى انه لابد من تحقق الشرطين معا .و يمكن إستخدام الإداة || أي or بمعنى "أو" بنفس الأسلوب إن كنت تريد أن ينفذ الأمر إن تحقق شرط من الشروط فقط .

ثانيا:الطرق.

و كما قلنا بالسابق ايضا أن الدوال الموجودة داخل الكائن تسمى باالطرق methods و سنستعرض بعض الدوال الموجوده في الكائن Math الآن.

ceil()

هذه الدالة تستقبل رقم و ترجع الرقم نفسه إن كان رقم صحيحها مثل 9 مثلا أما إن كان فيه كسر مثل 9.1 فإنها ترجع الرقم الصحيح الأكبر منه و هو 10 و الأمثلة التالية توضح إستخدامها أكثر حيث توضح تنفيذ الدالة و الناتج:
Math.ceil(16) == 16
Math.ceil(16.01) == 17
Math.ceil(–15.01) == –15

floor()

هذه الدالة تستقبل رقم و ترجع الرقم نفسه إن كان رقم صحيحها مثل 9 مثلا أما إن كان فيه كسر مثل 9.1 فإنها ترجع الرقم الأصغر منه و هو 9 و الأمثلة التالية توضح إستخدامها أكثر حيث توضح تنفيذ الدالة و الناتج:
Math.floor(16) == 16
Math.floor(16.01) == 16
Math.floor(–15.01) == –16

max(), min()

كل دالة من هؤلاء تأخذ رقمين الأولى min() ترجع الأصغر بينما الثانية max() ترجع الرقم الأكبر كما بالأمثلة:
Math.max(1, 2) == 2
Math.min(2, Math.abs(–2)) == 2
Math.min(2, –2) == –2

random()

وهي دالة ترجع رقم عشوائية ما بين صفر وواحد و يكون بدقة 16 خانة فمثلا خرج هذه الحلقة :
for (var i = 0; i < 5; ++i)
{
document.write(Math.random() + "<BR>")
}
قد يكون كالتالي:
.924853870611902
.8248305636609181
.9539277224126104
.9806934571332098
.7639888801207115
لاحظ أن الأرقام عشوائية و في كل مرة تنفذ الحلقة ستكون هناك أرقام مختلفه. هناك دوال عديدة أخرى مثل round(), و التي تقوم بالتقريب لأقرب رقم صحيح ,و مثل sqrt() التي تحسب الجذر التربيعي ,و cos() التي تحسب جيب تمام الزاويةو العديد من الدوال الأخرى الموجوده في هذا الكائن .و لن أذكرها كلها. لأن الهدف من الدروس أن تفهم كيف تسير الأمور و لن أعرض لك كل الدوال و كل شيء في كل شيء ,المهم أن تفهم كيف يسر الأمر و تكتب الأكواد و تجربها فليس هناك من يحفظ كل الدوال حيث يوجد لها مراجع عديدة ستجد فيها كل الدوال مع وظيفتها و سنتحدث عن ذلك في نهاية الدروس أما الآن فلننجرب تطبيق بمثال على الطرق الخاصة بالكائن Math. المثال التالي يقوم بعرض صورة من عدة صور بشكل عشوائي ومع كل تحديث للصفحة refresh ستتغير الصورة بدون أن يكون هناك نظام يحكم تغيرها ,و إن كنت تجرب المثال في محرر الأكواد الخاص بالموقع ,فلكي يحدث إعادة تحديث للكود فقط تحتاج بأن تضغط مرة في نافذة كتابة الكود و مرة في التي يظهر فيها .
math methods
<html>

<script language="JavaScript">
  
var imageList=new Array();
    
imageList[0] = "src/image1.jpg"
imageList[1] = "src/image2.jpg"
imageList[2] = "src/image3.jpg"
imageList[3] = "src/image4.jpg"
  
var imageChoice = Math.floor(Math.random()*imageList.length); 

  
document.write("<img src= "+ imageList[imageChoice] 
+ ">")
               
</script>

</html>

Try it yourself »Click on the "Try it yourself" button to see how it works

و عندما نحلل الكود سنجد أننا في البداية أنشأنا مصفوفه فيها أسامي و مسارات الصور التي سيتم التبديل بينها و تتكون المصفوفه من اربع عناصر ,(لاحظ أن مسارات الصور هنا "src/image1.jpg" ستستبدلها أنت بالأماكن التي توجد فيها الصور على جهازك إن كنت ستكتب الكود في محرر نصوص لديك غير الخاص بالموقع). ثم بعد ذلك يوجد كود مهمته أنه ينتج عدد صحيح من صفر حتى ثلاثه بشكل عشوائي وهو هذا الكود var imageChoice = Math.floor(Math.random()*imageList.length); و يعمل هذا الكود كالتالي: imageList.length الخاصية length من الخواص التي تستخدم مع المصفوفات و مهمتها أن ترجع عدد عناصر المصفوفه و هنا سيرجع لنا العدد أربعه 4. Math.random()و قد تحدثنا عنها بالأعلى و سوف تنتج رقم ما بين الواحد و الصفر و لذلك فإن حاصل ضرب ناتج هذه الدالة في العدد 4 الذي ينتج من imageList.length دائمارقم عشوائي اقل من 4 و أكبر من الصفر . Math.floor() أما هذه الدالة فستقوم بحذف الكسر و بالتالي يصبح الرقم الناتج في النهاية رقم صحيح من صفر حتى ثلاثة و هي الأرقام التي تمثل ترتيب عناصر المصفوفه. أما السطر الأخير فإنه يطبع تاج هيتميل الذي يستخدم في إضافة الصور مع وضع قيمة المصفوفه بعد src و الذي يكون مسار الصورة. document.write("<img src= "+ imageList[imageChoice] + ">") و نتيجة تنفيذه إن كان قيمة imageChoice تساوي صفر تكون

<img src=src/image1.jpg >

و كما تعلم عندما تكتب هذا التعبير في Html فإنه يظهر الصورة التي مسارها بعد src.
November 11, 2011