سرفصل‌های آموزشی
آموزش جاوا
آشنایی با برخی متدهای کاربردی کلاس Math در زبان برنامه‌نویسی جاوا

آشنایی با برخی متدهای کاربردی کلاس Math در زبان برنامه‌نویسی جاوا

در ادامۀ آموزش پیشین، در این آموزش جهت معرفی برخی دیگر از متدهای کاربردی کلاس Math از پروژۀ تعریف‌شده در آموزش قبل استفاده کرده و قصد داریم تا نحوۀ عملکرد متدهایی همچون ()max و ()min و همچنین متدهای ()pow و ()sqrt به همراه متد ()round را مورد بررسی قرار دهیم.

متد ()max

اولین متدی که در این آموزش از کلاس Math مورد بررسی قرار می‌دهیم ()max است که بر خلاف متدهای معرفی‌شده در آموزش پیش، دو آرگومان ورودی می‌گیرد که با یک , از یکدیگر جدا می‌شود. در واقع، وظیفۀ متد ()max این است که از بین دو آرگومان ورودی عدد بزرگ‌تر را در خروجی ریترن کند که برای درک بهتر نحوۀ کار این متد، کد مربوط به کلاس MathClass از آموزش پیشین را مد نظر قرار داده و در آن متد ()max را به صورت زیر فراخوانی می‌کنیم:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.max(12, 22));
    }
}

همان‌طور که ملاحظه می‌کنیم، متد ()max با دو آرگومان ورودی معادل اعداد 12 و 22 فراخوانی شده است که با اجرای برنامه انتظار داریم تا عدد 22 در خروجی ریترن شده و توسط متد ()println در کنسول چاپ شود. بنابراین با اجرای کد فوق در خروجی خواهیم داشت:

22

حال ببینیم چنانچه اعداد مربوط به آرگومان ورودی را به صورت ترکیبی از یک عدد اعشاری و یک عدد صحیح تعریف کنیم چه اتفاقی می‌افتد که برای این منظور نیز کد فوق را به صورت زیر بازنویسی می‌کنیم:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.max(12.1, 22));
    }
}

در کد فوق، متد ()max از کلاس Math با دو آرگومان ورودی معادل اعداد 12/1 و 22 فراخوانی شده است و انتظار داریم که خروجی حاصل از آن عدد 22 باشد که با اجرای برنامه در خروجی خواهیم داشت:

22.0

همان‌طور که مشاهده می‌کنیم، باز هم عدد بزرگ‌تر معادل عدد 22 توسط متد ()println در کنسول چاپ شده است با این تفاوت که عدد صحیح 22 به یک عدد اعشاری معادل 22/0 تبدیل شده است. در واقع، آرگومان‌های ورودی متد ()max هم می‌توانند داده‌ای از جنس int و هم double باشند اما در این مثال یکی از ورودی‌ها از نوع عدد صحیح و دیگری اعشاری بود و از همین روی با فراخوانی متد ()max ابتدا هر دو عدد به مقادیری از جنس double تبدیل شده و در ادامه با یکدیگر مقایسه شدند تا بزرگ‌ترین مقدار (در این مثال عدد 22/0) در خروجی ریترن گردد. 

متد ()min

متد ()min نقطۀ مقابل ()max است که وظیفۀ آن پیدا کردن کوچک‌ترین مقدار از میان دو آرگومان ورودی و ریترن کردن مقدار کوچک‌تر در خروجی می‌باشد که برای درک بهتر نحوۀ عملکرد این متد کد، فوق را به صورت زیر بازنویسی می‌کنیم:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.min(12.1, 22));
    }
}

پس از اجرای برنامۀ فوق، مشابه مثال پیشین ابتدا هر دو عدد به مقادیر اعشاری تبدیل شده سپس از میان آن‌ها کوچک‌ترین مقدار توسط متد ()println در کنسول چاپ شده است به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:

12.1

همان‌طور که می‌بینیم، فراخوانی متد ()min با دو آرگومان ورودی معادل اعداد 12/1 و 22 منجر به ریترن شده کوچک‌ترین مقدار معادل عدد 12/1 در خروجی شده است.

متد ()pow

در این بخش از آموزش متد دیگری از کلاس Math تحت عنوان ()pow را معرفی می‌نماییم. در واقع، متد ()pow جهت به توان رساندن مقادیر عددی مورد استفاده قرار می‌گیرد و نحوۀ کار آن بدین صورت است که دو آرگومان ورودی گرفته و عدد مربوط به آرگومان ورودی اول را به توان آرگومان ورودی دوم می‌رساند که با دانستن این نکته می‌توانیم کد فوق را به صورت زیر بازنویسی نماییم تا خروجی متدی را مشاهده کنیم که مسئول به توان رساندن در زبان برنامه‌نویسی جاوا است:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.pow(2, 3));
    }
}

در تفسیر کد فوق باید گفت که متد ()pow از کلاس Math را با دو آرگومان ورودی معادل اعداد 2 و 3 فراخوانی کرده‌ایم که پس از اجرای برنامه نیز عدد 2 به توان 3 رسیده و نتیجۀ حاصل از آن توسط متد ()println در خروجی ریترن می‌شود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:

8.0

همان‌طور که می‌بینیم، حاصل عملیات ریاضیاتی 2 به توان 3 معادل عدد 8 در کنسول چاپ شده است. در ادامه، متد دیگری را معرفی می‌کنیم که نقطۀ مقابل متد ()pow می‌باشد.

متد ()sqrt 

از جمله دیگر متدهای کلاس Math می‌توان به ()sqrt اشاره کرد که به منظور گرفتن جذرِ عدد مربوط به آرگومان‌ ورودی مورد استفاده قرار می‌گیرد و نحوۀ عملکرد آن بدین صورت است که یک آرگومان ورودی گرفته و عدد معادل جذر آن را در خروجی ریترن می‌کند (توجه داشته باشیم که نام این متد از واژۀ Square Root به معنای «جذر» در ریاضیات گرفته شده است.) اکنون پس از آشنایی با این متد می‌توانیم کد مربوط به مثال پیشین را به صورت زیر بازنویسی کنیم:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.sqrt(9));
    }
}

در کد فوق، عدد 9 را به عنوان آرگومان ورودی به متد ()sqrt داده‌ایم. در حقیقت، علت انتخاب عدد 9 به عنوان آرگومان ورودی این است که عدد مذکور دارای یک مجذور رُند می‌باشد اما می‌توانیم هر عدد مثبت دلخواهی را به عنوان ورودی به این متد بدهیم. اکنون پس از اجرای برنامه در خروجی خواهیم داشت:

3.0

همان‌طور که می‌بینیم، فراخوانی متد ()sqrt با آرگومان ورودی معادل عدد 9 منجر به ریترن شدن عدد 3 در خروجی شده و این عدد نیز توسط متد ()println در کنسول چاپ شده است.

متد ()round

در پایان، با متد ()round و همچنین نحوۀ عملکرد آن آشنا می‌شویم که این وظیفه را دارا است تا تمامی اعدادی که به عنوان آرگومان ورودی دریافت می‌کند را به عددی رُند تبدیل کرده و در خروجی ریترن نماید و نکتۀ قابل‌توجه در ارتباط با نحوۀ عملکرد متد ()round این است که عددی همچون 21/3 را به عدد 21 و عددی مانند 21/6 را به عدد 22 رُند می‌کند بدین معنی که چنانچه مقدار اعشار عدد مورد نظر کوچک‌تر از 0/5 باشد، عدد مذکور را رو به پایین و در غیر این صورت آن را رو به بالا رُند نموده و در خروجی ریترن می‌کند که برای روشن شدن نحوۀ عملکرد این متد، کد فوق را به صورت زیر بازنویسی می‌کنیم:

public class MathClass {
    public static void main(String[] args) {
        System.out.println(Math.round(21.3));
    }
}

در کد فوق، متد ()round را با آرگومان ورودی معادل عدد 21/3 فراخوانی نموده‌ایم و می‌بینیم که بخش اعشار این عدد کمتر از 0/5 می‌باشد و از همین روی متد ()round آن را رو به پایین معادل عدد 21 رُند می‌کند که برای حصول اطمینان از این موضوع، برنامۀ فوق را یک بار اجرا می‌کنیم و در خروجی خواهیم داشت:

21

همان‌طور که می‌بینیم، عدد اعشاری 21/3 رو به پایین رُند شده و نتیجۀ حاصل از آن توسط متد ()println در کنسول نمایش داده می‌شود. حال اگر عدد مربوط به آرگومان ورودی را به 21/6 تغییر دهیم، در خروجی خواهیم داشت:

22

در واقع، بخش اعشاری عدد 21/6 بزرگ‌تر از 0/5 بوده و از همین روی متد ()round آن را رو به بالا معادل عدد 22 رُند کرده است.

online-support-icon