مدونة علم البرمجة والحاسوب
من حقك ان تتعلم اكثر

دورة جافا سكربت - Javascript الدرس السادس



نبدأ بالفصل السادس

محتوياته

*** القيم الثابته لكائن 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>

انتهى الفصل السادس

أرشيف المدونة الإلكترونية

من انا ؟