درس یازدهم- آبجکتهای ریاضی و تاریخ
تا با حال با مفاهیم گوناگونی از جاوا اسکریپت آشنا شدهایم و توانایی کدنویسی با این زبان را پیدا کردهایم. در این درس میخواهیم به دو مفهوم مهم و کاربردی ریاضی و تاریخ در جاوا اسکریپت بپردازیم. این دو مفهوم هر کدام در جای جای برنامههایی که شما در آینده خواهید نوشت کارامد خواهند بود.
ریاضی در جاوا اسکریپت
با
معنی ریاضی همگان آشنایی دارند، بله ریاضی، همان درسی که خیلیها از آن
فراری هستند. اما رابطه ریاضی با جاوا اسکریپت چیست؟ از آنجا که کار اصلی
ما برنامه نویسها نوشتن برنامههایی برای حل مشکلات مشتریهایمان است،
گاهی اتفاق میافتند که برنامهای به ما پیشنهاد میشود که در آن باید از
عملیاتهای ریاضی استفاده کرد. بطور مثال محاسبه حقوق کارمندان یک سیستم با
احتساب کسریها و افزایشها (مالیات، اضافه کاری).
نترسید قرار نیست ما در این درس به حل مسئلههای ریاضی بپردازیم. ما تنها با چند قابلیت جاوا اسکریپت در قالب متدهای آن برای عملیاتهای ریاضی آشنا میشویم.
آبجکت Math
این آبجکت به ما توانایی انجام عملیاتهای ریاضی را میدهد. این آبجکت از
تعدادی «ثابتها» و «متدها» تشکیل شده است که با استفاده از آنها
میتوانیم عملیاتهای مورد نظر خود را انجام دهیم. برای نمونه به کدهای زیر
توجه کنید:
var x=Math.PI;خروجی این دستور می شود 3.14 //
این یکی از ثابتهای آبجکت فوق است که خروجی آن مشخص و ثابت (۳.۱۴) است. آبجکت ریاضی دارای هشت ثابت است که از طریق این آبجکت قابل دسترس هستند.
var y=Math.sqrt(16);
یکی از متدهای آبجکت ریاضی که جذر عدد داخل پرانتز را بر میگرداند.
ثابتها در آبجکت ریاضی
همانطور که در قسمت پیشین گفتیم آبجکت ریاضی دارای هشت ثابت است که از طریق این آبجکت میتوانیم از آنها بهره ببریم. در زیر این ثابتها آورده شدهاند.
- Math.E
- Math.PI
- Math.SQRT2
- Math.SQRT1_2
- Math.LN2
- Math.LN10
- Math.LOG2E
- Math.LOG10E
برای دیدن هر کردام از این ثابتها کافیست که آنها را در مرورگر خود چاپ کنید:
<!DOCTYPE html>
<html> <body> <script>
document.write(Math.E);
document.write("<br />");
document.write(Math.PI);
document.write("<br />");
document.write(Math.SQRT2);
document.write("<br />");
document.write(Math.SQRT1_2);
document.write("<br />");
document.write(Math.LN2);
document.write("<br />");
document.write(Math.LN10);
document.write("<br />");
document.write(Math.LOG2E) ;
document.write("<br />");
document.write(Math.LOG10E);
document.write("<br />");</script>
</body>
</html>
متدهای ریاضی
آبجکتهای
ریاضی علاوه بر ثابتها دارای متدهایی هستند که توسط آنها میتوان
عملهایی را بر روی مقادیر انجام داد. بطور نمونه متد زیر مقدار ورودی متد
را گرد میکند:
Math.round(5.7) ;
خروجی این دستور6 می شود//
هر کدام از نمونههای زیر عملی را بر روی ورودی متد انجام میدهند:
Math.random() ; خروجی این دستور یک عدد بین 0 و 1 می باشد //
Math.floor(Math.random()*11) ;خروجی این دستورات یک عدد بین 0 و 10 می شود //
Math.max(3,6); // 6 = عدد بزرگتر را بین دو عدد انتخاب می کند
Math.min(2,8) ;// 2 = عدد کوچکتر را بین دو عدد انتخاب می کند
این گفتمان بسیار ساده و کارامد است. برای پی بردن به سادگی آن کافیست نگاهی به مجموعه کدهای زیر و خروجی آنها کنید که در آنها متدهای ریاضی بکار برده شدهاند:
<!DOCTYPE html>
<html> <body>
<script>
var num = 1.48 ;
num = Math.round(num) ;
document.write(num + "<br />") ;
num = Math.round(5.7) ;
document.write(num + "<br />") ;
document.write(Math.random() + "<br />") ;
document.write(Math.floor(Math.random() * 11)+ " <br /> ") ;
document.write(Math.max(3,6) + "<br />") ;
document.write(Math.min(2,8) + "<br />") ;
</script> </body> </html>
آبجکت Date
آبجکت تاریخ (date) برای کار کردن با دو فاکتور تاریخ و زمان در جاوا اسکریپت بکار گرفته میشود. این آبجکت توسط «سازنده آبجکت» تاریخ (Date () constructor) ساخته میشود. برای آغاز کردن کار با این آبجکت چهار روش وجود دارد.
روش یکم:
new Date()
روش دوم:
new Date(milliseconds)
روش سوم:
new Date(dateString)
روش چهارم:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
بیشتر ورودیها (پارامترها)ی متدهای یاد شده در بالا انتخابی هستند و اگر ورودی ارسال نشود عدد 0 برای آن متد فرستاده میشود.
بعد از ساختن یک آبجکت از date (به یکی از روشهای چهاگانه بالا) تعدادی از متدها برای انجام عملیات بر روی دادهها قابل استفاده میشوند. اغلب این متدها به شما این اجازه را میدهند که بر روی سال، ماه، روز، ساعت و غیره زمان و تاریخ را بر اساس استاندارد محلی یا جهانی تنظیم کرده و یا دریافت کنید. به نمونههایی از این دست توجه فرمایید:
var today = new Date() ;
var date1 = new Date("October 13, 2012 11:12:00") ;
var date2 = new Date(2012,5,24) ;
var date3 = new Date(2012,5,24,11,33,0) ;
در نمونه پایین به محض بالا آمدن برگه تاریخ روز بر روی صفحه خواهد آمد. در کنار آن چند تاریخ بر اساس زمان مشخصی تعیین و چاپ شده است.
<!DOCTYPE html>
<html>
<head>
<SCRIPT LANGUAGE = "Javascript"> var today= new Date() </SCRIPT>
</head>
<body onload=alert(today)>
<script>
var today = new Date()
var d1 = new Date("October 13, 2012 11:13:00")
var d2 = new Date(2012,5,24)
var d3 = new Date(2012,5,24,11,33,0)
document.write(d1 + "<br />" + d2 + "<br />" + d3 + "<br />") ;
</script>
</body>
</html>
ما براحتی میتوانیم تاریخ را بر اساس زمان دلخواه خود توسط متدهای موجود تغییر دهیم. برای نمونه ما میتوانیم یک تاریخ را بر حسب زمان مشخصی تنظیم کنیم:
var myDate=new Date();
myDate.setFullYear(2012,1,15);
در این نمونه تاریخ بر اساس پارامتر وارد شده تنظیم میشود. ما حتی میتوانیم یک تاریخ را بر اساس زمانی در آینده تنظیم کنیم:
var myDate=new Date();
myDate.setDate(myDate.getDate()+6);
در نمونه بالا تاریخ بر اساس ۶ روز جلوتر (آینده) تنظیم شده است. اگر این تغییرات برای روزهای آخر ماه باشد و این تغییرات باعث تغییر ماه شود در این صورت آبجکت تاریخ خود این تغییرات را انجام میدهد.
با استفاده از آبجکت تاریخ میتوانیم دو زمان را با هم مقایسه کنیم:
var x = new Date() ;
x.setFullYear(2100,0,14) ;
var today = new Date() ;
if ( x>today )
{ alert(" امروز پیش از 16th January 2010 است ") ; }
else
{ alert("امروز پش از 16th January 2010 است ") ; }
نمونه کامل کدهایی که دو تاریخ را باهم مقایسه میکنند را در نمونه زیر میبینید:
<!DOCTYPE html>
<html> <head> <SCRIPT LANGUAGE = "Javascript"> var today = new Date() </SCRIPT> </head>
<body onload = alert(today)>
<script>
var x = new Date() ;
x.setFullYear(2013,3,14) ;
var today = new Date() ;
if ( x > today )
{ alert( " امروز پیش از 16 th January 2013 است " ) ; }
else
{ alert("امروز پس از 16 th January 2013 است ") ; }
document.write( "امروز " + today) ;
</script> </body> </html>
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.