نبدأ بالفصل السادس
محتوياته
*** القيم الثابته لكائن Math
*** استخدام Pi
*** تقنيات Math
*** تقريب الارقام
*** تقريب الارقام السالبه والموجبه
*** مقارنه الارقام
*** حصر القيمه بين عددين عشوائيين
*** الارقام العشوائيه
*** الصور العشوائيه
B]القيم الثابته لكائن Math[/B]
يحتوي كائن Math في لغة جافا سكربت على عدد من القيم الرياضيه القياسيه
الثابتة لتسهيل الإشارة إليه وتستخدم الأحرف الكبيرة في الإشارة إلى هذه القيم
الثابتة
الثابت Math.E يدل على(الثابت e اساس للوغاريتم الطبيعي الذي تبلغ قيمته تقريبا2.71828)
الثابت Math.LN2 يدل على(لوغاريتم الطبيعي للعدد 2 الذي يبلغ قيمته تقريبا 06931471805599458623)
الثابت Math.LN10 يدل على(لوغاريتم الطبيعي للعدد 10 الذي تبلغ قيمته تقريبا2.3025850929940459011)
الثابت Math.LOG2E يدل على(لوغاريتم الاساس 2 للثابت e والذي يبلغ تقريبا1.44269504888963387)
الثابت Math.LOG10E يدل على(لوغاريتم الاساس 10 للثابت e والذي يبلغ تقريبا0.434249448190325181677)
الثابت Math.PI يدل على(الثابت pi الذي تبلغ قيمته تقريبا 3.14159265358979)
الثابت Math.SQRT_2 يدل على(القيمه المعكوسه للجذر التربيعي للاساس 2 والذي
تبلغ قيمته تقريبا.7071067811865476)
الثابت Math.SQRT2 يدل على(الجذر التربيعي للاساس 2 الذي تبلغ قيمته تقريبا 1.414213562373095)
يمكن استخدام الثوابت التي تم تعيينها في كائن Math في اي مكان داخل نص البرمجه
تستخدم الثوابت المعينه في كائن Math فقط في تطبيقات الخاصه بلغه
جافا سكربت والتي تحتوي على اغراض رياضيه محدده ولكن القائمه السابقه
تم عرضها من اجل العلم بها
B]استخدام الثابت PI[/B]
يقوم ثابت Math.PI بانشاء امكانيات جيده وتاثيرات فعاله ويقوم نص البرمجه في المثال
التالي بتدوير اربع طبقات يطلق عليها lyr0 و lyr1 و lyr2 و lyr3
كود:
var pos=new Array(); //array for position data var xos=30,yos=30; //xy coordinate offsets var rad=40; //radius of circle function init(){ for(var i=0;i<4;i++){ pos[i] = (i==0)?0:parseFloat(pos[i-1]+((2*Math.PI/4));} spin(); } function spin(){ for(var i=0;i<4;i++){ pos[i]+=Math.PI/45; //increment degrees var x=xos+(rad*Math.cos(pos[i])); var y=yos+(rad*Math.sin(pos[i])); if(document.layers)document.layers["lyr"+i].moveTo(x,y); if(document.all) eval("lyr"+i+".style.top=x;lyr"+i+".style.left=y"); } setTimeout("spin()",100); }
**** ملاحظه ****
تعتبر تقنيتي Math.cos و Math.sin المستخدمتين في هذا المثال بمثابه مجموعه
من تقنيات كائن Math
يمكن الحصول على تقنيه moveTo الخاصه بالتنقل عبر الطبقات والموضحه هنا من
خلال مصتفح نت سكيب فقط ولذلك فان الكود يحتوي عباره منفصله
لتشغيل الدوره في انترنت اكسبلور
التقنيات الخاصه بالكائن Math
يحتوي كائن Math على العديد من التقنيات المدرجه جميعها التاليه
Math.abs() يقوم بعرض القيمة المطلقة
Math.acos() يكون الناتج عبارة عن جيب تمام الزاوية
Math.asin() يكون الناتج عبارة عن جيب الزاوية
Math.atan() يكون الناتج عبارة عن ظل الزاوية
Math.atan2() تقوم بنقل الزاوية من محور x إلى نقطة
Math.ceil() تقوم بالتقريب لأقرب عدد موجب
Math.cos() يقوم بعرض قيمه جيب تمام الزاوية
Math.exp() يكون الناتج عبارة عن أس الثابت e
Math.floor() تقوم بالتقريب لأقرب عدد سالب
Math.log() يقوم بعرض اللوغاريتم الطبيعي
Math.max() يكون الناتج عبارة عن أكبر العدديين
Math.min() يكون الناتج عبارة عن أصغر العدديين
Math.pow() تقوم بعرض القيمه المقدرة
Math.random() يكون الناتج عبارة عن رقم عشوائي
Math.round() تقوم بالتقريب لأقرب عدد صحيح
Math.sin() تقوم بعرض قيمه جيب الزاوية
Math.sqrt() يكون الناتج عبارة عن الجذر التربيعي
Math.tan() يكون الناتج عبارة عن ظل الزاوية
ويتم تناول تقنيات Math الاكثر استخداما
تقريب الارقام
تستخدم تقنيه Math.round في لغه جافا سكربت في تقريب الاعداد التي تشتمل على علامه عشريه
بحيث تصل الى اقرب رقم صحيح وكذلك في ابدال الاعداد العشريه الطويله الى اعداد اقصر
وهذا بدوره سيعمل على تقليل طول العدد العشري بفارق عددين بعد العلامه العشريه
واذا كانت القيمه والتي هي عباره عن عدد مشتمل على علامه عشريه المحدده كوسيط موجوده تماما
في منتصف رقمين صحيحين فان وسيط التقنيه سيقوم بتقريب الرقم الى اقرب رقم صحيح
بعد العلامه العشريه يوضح المثال التالي الطريقه التي تقوم بها تقنيه Math.round
بتقريب القيم الموجبه والسالبه ويعرض كيف يمكن استخدامها في تقريب عدد يشتمل
على علامه عشريه بفارق عددين من مكان الحالي بعد العلامه
كود:
<SCRIPT TYPE="text/javascript"> <!-- var a=7.5; a=Math.round(a); a="Rounded positive:"+a+"\n"; var b=-7.5; b=Math.round(b); b="Rounded Negative:"+b+"\n"; var c=3.764638467915; c=c*100 //take it up two places c=Math.round(c); //do the round c/=100; //take it back down 2 places c="Commuted Long Float:"+c; alert(a+b+c); //--> </SCRIPT>
**** ملاحظه ****
لايمكن ان يصل تقريب رقم -7.5 الى 8.0- لانه رقم سالب وبالتالي فان التقريب سيكون بالسالب
تقريب الارقام السالبه والموجبه
وكبديل لاستخدام تقنيه Math.round التي تحدثنا عنها سابقا فان النص البرمجي قد يتطلب
ان يكون التقريب لاقرب رقم صحيح سواء اكان اكبر من هذاالعدد الذي يتم تقريب له اصغر منه
وتقد لغه جافا سكربت تقنيه Math.ceil التي تساعد على تقريب العدد العشري الى اكبر رقم صحيح
وكذلك تقنيه Math.floor التي تعمل على تقريب العدد العشري الى اصغر عدد عشري صحيح
كود:
<SCRIPT TYPE="text/javascript"> <!-- var a=7.5; var a1="a1:"+Math.ceil(a); var a2="a2:"+Math.floor(a); var b=-7.5; b=Math.round(b); var b1="b1:"+Math.ceil(b); var b2="b2:"+Math.floor(b); var rup="ROUNDING UP\n"+a1+"\n"+b1+"\n\n"; var rdn="ROUNDING DOWN\n"+a2+"\n"+b2; alert(rup+rdn); //--> </SCRIPT>
**** ملاحظه ****
عند تقريب القيم السالبه الى اقرب رقم صحيح فان التقريب يصل الى الصفر
مقارنه الارقام
يحتوي كائن Math على تقنيتين تسمحان بمقارنه رقمين معا وتوضيح قيمه الفرق بينهما
وتقوم تقنيه Math.max بمقارنه القيمتين كوسيطين ثم تقوم بعرض القيمه الاكبر
في الاثنين الفرق بين القيمتين
وتعمل تقنيه Math.min بنفس الطريقه ولكنها تقوم بعرض اقل القيمتين
في المثال التالي تستخدم تقنيه Math.pow لانشاء قيم مربعه ومكعبه سيتم مقارنتها
بعد ذلك بتقنيتي Math.max وMath.min وتتطلب تقنيه Math.pow وسيطين لتحديد الرقم
وكذلك التي تساعد على زياده الرقم
كود:
<SCRIPT TYPE="text/javascript"> <!-- var sq=Math.pow(5,2); var cb=Math.pow(3,3); var hi="Round up:"+Math.max(sq,cb); var lo="Round Down:"+Math.min(sq,cb); var ng="Round Negative Up:"+Math.max(-5,-4.75); alert("MAXMIN\n\n"+hi+"\n"+lo+"\n"+ng); //--> </SCRIPT>
**** ملاحظه ****
يعتبر اكبر الرقمين السالبين هو اقربهما الى الصفر
حصر القيمه بين عددين عشوائيين
من الممكن الحصول على قيم عشوائيه باستخدام تقنيه Math.random لعرض قيمه عباره
عن رقم عشري محصور بين 0.0 و 0.1
ويمكن استخدام هذه التقنيه في انشاء سلسله من اختيارات الارقام العشوائيه
كما انها شائعه الاستخدام في احداث المؤثرات العشوائيه في صفحات الويب
وسيقوم ضرب الارقام العشوائيه بتحديد مدى اكبر ولذلك على سبيل المثال فان مضروب
الرقم 10 سيعمل على انشاء رقم عشوائي يتراوح بين 0.0 و 10.0
وحتى يمكنك الاستفاده من الرقم العشوائي بشكل اكبر من الافضل ان تقوم بتقريب القيمه
الناتجه والتي هي عباره عن عدد عشري بحيث يكون المدى عباره عن قيمتين صحيحتين
وتستخدم تقنيه Math.ceil في تقريب الرقم العشوائي الى اكبر رقم صحيح يتراوح
بين 1 و 10 يوضح الكود التالي هذا المثال
كود:
var rand1=Math.random(); var rand2=rand1*10; var rand3=Math.ceil(rand3); var another=Math.ceil(Math.random()*10);
الارقام العشوائيه
يستخدم هذا المثال تقنيه Math.random() من اجل انشاء سلسله تتكون من سته ارقام
عشوائيه محصوره بين المدى العددي للرقمين 1 و 49 والذي يمكن ان يستخدم كاختيارات
في UKlottery الدوليه
كود:
<SCRIPT TYPE="text/javascript"> <!-- var n=new Array(6); for(var i=0;i<6;i++){n[i]="";} while(n[5]==""){ var j=Math.ceil(Math.random()*49); if(n[0]=="")n[0]=j; else if(n[1]==""&&j!=n[0])n[1]=j; else if(n[2]==""&&j!=n[0]&&j!=n[1])n[2]=j; else if(n[3]==""&&j!=n[0]&&j!=n[1]&&j!=n[2])n[3]=j; else if(n[4]==""&&j!=n[0]&&j!=n[1]&&j!=n[2]&&j!=n[3])n[4]=j; else if(n[5]==""&&j!=n[0]&&j!=n[1]&&j!=n[2]&&j!=n[3]&&j!=n[4])n[5]=j; } var str="" for(var i=0;i<6;i++){str+=n[i]+"";} alert("LOCKY NUMBERS\n\n"+str); //--> </SCRIPT>
**** ملاحظه ****
عند كل تحديث للصفحه تظهر الارقام مختلفه
الصور العشوائيه
تستخدم تقنيه Math.random() في المثال المدرج في جزء <body> في هذه الصفحه التي تم انشاؤها
بلغه html وتقوم لغه جافا سكربت بعرض صوره تم تحديدها بواسطه كود في كل
مره يتم تحميل الصفحه وتنفيذ النص البرمجي من خلال علامه الترميز img لخاصه
بــ Html وتحديد قيمه pic في سمه scr
كود:
<SCRIPT TYPE="text/javascript"> <!-- var pix=new Array("pic0.gif","pic1.gif","pic2.gif","pic3.gif","pic4.gif","pic51.gif","pic6.gif"); var rand=Math.floor(Math.random()*7); document.images.pic.scr=pix[rand]; document.write(rand+":"+pix[rand]); //--> </SCRIPT>
انتهى الفصل السادس