توضیحات
در زبان برنامه نویسی کاتلین مانند سایر زبان ها محاسبات ریاضی یک امر مهم و پر کاربرد است گاهی بعضی اعمال ریاضی پر تکرار هستند که برای جلوگیری از این تکرار بهتره براشون تابع تعریف کرد.
بعضی از توابع ریاضی بدیهی و به طور عمومی برای همه شناخته شده هستند؛ توابع و مقادیر ثابت ریاضی در بسیاری از زبان های برنامه نویسی به عنوان کتابخونه ی ارسمی زبان تعریف شدن؛ زبان کاتلین از این قاعده مستثنی نبوده و برای کاتلین نیز این توابع در کتابخونه ی رسمی زبان تعریف شده.
این توابع در کتابخونه ی استاندارد کاتلین در داخل پکیج kotlin.math برای کاتلین به صورت Top Level تعریف شدن.
در ادامه به بررسی چندتا از مهم ترین هاشون میپردازیم.
توجه:
بعضی از توابع در حال حاضر در کتابخونه رسمی کاتلین تعریف نشدن، اما در کلاس Math در جاوا به صورت استاتیک وجود دارن و از اونجایی که در کاتلین میشه از کلاس و تابع (متد) های جاوا استفاده کرد میتونیم از کلاس Math در جاوا کمک بگیریم.
در این مطلب توابع ریاضی در کاتلین رو به توابع مثلثاتی، توابع نمایی (exponential) و لگاریتم و توابع مقایسه ای و قدر مطلق دسته بندی کرده و در آخر نگاهی به تابع random انداختیم.
توابع مثلثاتی
ثابت PI
عدد PI نسبت یک دایره به محیطش است. از PI به عنوان زاویه (رادیان) در مثلثات استفاده میکنیم، این عدد به عنوان پراپرتی (فیلد) ثابت نوع Double در کاتلین تعریف شده و مقدارش تقریبا برابر با 3.14 است.
نکته
پارامتر توابع مثلثاتی در کاتلین Double یا Float و مقداری که بر میگردونن از نوع پارامتر است.
تابع سینوس (sin)
این تابع زاویه رو به عنوان پارامتر میگیره و مقدار سینوس زاویه رو بر میگردونه.
تابع کسینوس (cos)
زاویه رو به عنوان پارامتر میگیره و مقدار کسینوس بر میگردونه.
تابع تانژانت (tan)
زاویه رو به عنوان پارامتر میگیره و مقدار تانژانت رو برمیگردونه.
تابع سینوس اینورس (asin)
مقدار سینوس به عنوان پارامتر میگیره و زاویه رو به عنوان رادیان برمیگردونه.
تابع کسینوس اینورس (acos)
مقدار کسینوس به عنوان پارامتر میگیره و زاویه رو به عنوان رادیان بر میگردونه.
تابع تانژانت اینورس (atan)
مقدار تانژانت رو به عنوان پارامتر میگیره و زاویه رو به عنوان رادیان بر میگردونه.
توابع نمایی و لگاریتمی
عدد ثابت E
پایه ی لگاریتم طبیعی این متغیر به عنوان پراپرتی (فیلد) ثابت تعریف شده و مقدارش تقریبا برابر با 2.71 است.
تابع exp
یک مقدار به عنوان پارامتر میگیره و عدد e (اویلر) رو به توان پارامتر میرسونه.
تابع لگاریتم طبیعی (ln)
لگاریتم طبیعی رو حساب میکنه
تابع لگاریتم (log)
لگاریتم x رو بر پایه base حساب میکنه.
تابع توان (pow)
عدد رو به توان x میرسونه. تابع pow یک تابع اکستنشن است.
تابع جذر (sqrt)
جذر یک عدد رو میگیره
توابع گرد کردنی (rounding)
تابع ceil
مقدارو به اولین عدد صحیح بالاتر میرسونه، مثلا اگه مقدار 2.1 باشه به 3؛ و اگه عدد -2.1 باشه به -2 میرسونه.
تابع round
مقدارو به نزدیک ترین عدد صحیح میرسونه مثلا اگه 2.4 باشه به 2 میرسونه و اگه مقدار 2.6 باشه به 3 میرسونه.
تابع floor
مقدار عددو به اولین عدد صحیح پایینتر میرسونه مثلا اگه عدد 2.1 باشه به 2 میرسونه و اگه -2.1 باشه به -3 میرسونه.
تابع min، max و قدرمطلق
تابع max
بین دو عدد مقدار بزرگترو بر میگردونه
تابع min
مقدار کوچیکترو بین دو عدد بر میگردونه
تابع قدرمطلق (abs)
مقدار مثبت یک عدد رو بر میگردونه
ایجاد اعداد تصادفی با استفاده از تابع random
برای ایجاد اعداد تصادفی به دو روش میتونیم عمل کنیم
با استفاده از تابع random در کاتلین
مثال:
میخوایم یک عدد بین 0 تا 100 به صورت تصادفی ایجاد کنیم اگه بخوایم خود 100 به حساب نیاد از until استفاده میکنیم.
با استفاده از تابع استاتیک random در کلاس Math جاوا
اگه بخوایم از بین اعداد 0 تا x یک عدد به عنوان عدد تصادفی ایجاد کنیم کافیه تابع random رو ضربدر x کنیم.
مثال
میخوایم یک عدد تصادفی بین 0 تا 1000 ایجاد کنیم (خود 1000 به حساب نیاد).
محاسبه ی زاویه یک مثلث روی صفحه.
فرض کنید سه نقطه رو صفحه داریم
p0=(x0,y0), p1=(x1,y1)، p2=(x2,y2)
این سه نقطه سه رأس یک مثلث رو تشکیل میدن؛ حالا هر ضلع یک مثلث رو به ترتیب a, b, c در نظر بگیرید.
برای محاسبه ی طول هر ضلع از فرمول زیر استفاده میکنیم:
بعد از حساب کردن طول هر ضلع میتونیم از فرمول زیر زاویه هر رأس رو حساب کنیم:
پیادهسازی کامل کد ها:
خلاصه
در کتابخونه رسمی کاتلین مانند سایر زبون های برنامه نویسی توابع ریاضی تعریف شده.
توابع مثلثاتی شامل sin، cos، tan، asin، acos و atan هستند.
توابع نمایی شامل exp، ln، log، pow و sqrt هستند.
- توابع rounding شامل ceil، round و floor است.
بعضی از توابع در پکیج math کاتلین تعریف نشده مانند toDegree میتونیم از توابع (متد) های استاتیک در کلاس Math در جاوا بهره ببریم.