سرفصل‌های آموزشی
آموزش جاوا
مقدمه‌ای بر ریاضیات در زبان برنامه‌نویسی جاوا

مقدمه‌ای بر ریاضیات در زبان برنامه‌نویسی جاوا

در این آموزش یکی از پرکاربردترین کلاس‌های اصطلاحاً‌ Built-in در زبان برنامه‌نویسی جاوا تحت عنوان Math را مورد بررسی قرار داده و از برخی متدهای تعریف‌شده در این کلاس به منظور انجام برخی عملیات ریاضیاتی در طراحی برنامه‌های خود بهره‌مند خواهیم شد (توجه داشته باشیم که نام این کلاس با حرف اول بزرگ نوشته می‌شود.) در همین راستا، ابتدا پروژه‌ای تحت عنوان Math ایجاد کرده و کلاسی به نام MathClass در آن ایجاد می‌کنیم و پیش از کلیک کردن بر روی دکمۀ Finish، تیک گزینۀ public static void main را می‌زنیم.

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

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

حال چنانچه آرگومانی را به عنوان ورودی به متد ()println بدهیم، مقدار در نظر گرفته شده در پنجرۀ کنسول نمایش داده می‌شود اما پیش از ادامۀ آموزش، دو رویکرد متفاوت در به اصطلاح ایمپورت کردن کلاس‌های مختلف در برنامه را معرفی کرده و در ادامه متدهایی مانند ()abs و ()ceil و همچنین متد ()floor از کلاس Math را معرفی می‌کنیم.

معرفی روش‌های مختلف ایمپورت کردن کلاس‌ها در برنامه‌های جاوا

به طور خلاصه، می‌توان گفت که کلیۀ کلاس‌ها در زبان برنامه‌نویسی جاوا به دو صورت اصطلاحاً Implicit و Explicit در برنامۀ مورد نظر ایمپورت می‌شوند. برای مثال، کلاسی همچون Scanner به صورت Explicit یا «آشکارا» در برنامۀ مورد نظر ایمپورت می‌شود. به عبارت دیگر، جهت به‌کارگیری این کلاس در برنامه می‌باید در سطر اول به صورت آشکارا آن را ایمپورت نماییم اما از سوی دیگر برخی از کلاس‌ها مانند کلاس String ،Math و بسیاری از کلاس‌های دیگر در زبان جاوا هستند که به صورت Implicit یا «ناآشکار» در برنامۀ مورد نظر ایمپورت می‌شوند. برای مثال، زمانی که از کلاس String استفاده می‌کنیم، می‌بینیم که هیچ دستوری جهت ایمپورت کردن کلاس مذکور در برنامه نمی‌نویسیم بدین دلیل که کلاس String به صورت ضمنی در پروژه‌های ساخته‌شده در اکلیپس ایمپورت می‌شود و کلاس Math نیز به همین صورت است و برای استفاده از آن نیازی به ایمپورت کردن دستی کلاس مذکور نداریم.

حال با آگاهی از این نکته که کلاس Math به صورت ضمنی در برنامۀ ما ایمپورت شده و نیازی به نوشتن دستور مرتبط با ایمپورت آن نداریم، در ادامه به معرفی برخی از متدهای کلاس Math و نحوۀ عملکرد هر یک از آن‌ها می‌پردازیم.

متد ()abs

از جمله متدهای پرکاربرد کلاس Math می‌توان به ()abs اشاره کرد که نام آن از واژۀ Absolute به معنای «مطلق» گرفته شده و این وظیفه را دارا است تا در صورت فراخوانی، تمامی اعدادی که به عنوان آرگومان ورودی به آن پاس داده می‌شوند را به یک عدد مثبت تبدیل کرده و در خروجی ریترن نماید که برای روشن شدن نحوۀ عملکرد این متد، کد فوق را به شکل زیر تکمیل می‌کنیم:

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

همان‌طور که مشاهده می‌کنیم، به منظور استفاده از کلاس Math، نام این کلاس را نوشته سپس یک . قرار داده و در ادامه نام متد مورد نظر از این کلاس را می‌نویسیم. در واقع، پس از نوشتن نام کلاس Math و قرار دادن نقطه، اکلیپس به صورت خودکار کلیهٔ متدهای مرتبط با این کلاس را برای‌مان نمایش می‌دهد که از میان متدهای مذکور می‌توانیم ()abs را انتخاب کرده و عدد مربوط به آرگومان ورودی را به آن پاس دهیم. بنابراین در کد فوق عدد 100- به عدد مثبت 100 تبدیل شده و توسط متد ()println در خروجی چاپ می‌گردد.

به علاوه، همان‌طور که در آموزش‌های پیشین اشاره کردیم، جهت نمایش متدهای کلاس Math می‌توانیم پس از نوشتن نام کلاس و درج علامت . کلیدهای Ctrl + Space را به صورت هم‌زمان فشار داده و بدین ترتیب متدهای تعریف‌شده در این کلاس را مشاهده نماییم. همچنین از میان گزینه‌های مربوط به متد ()abs می‌باید متدی را انتخاب کنیم که مرتبط با دیتا تایپ آرگومان ورودی مورد نظر می‌باشد. با در نظر گرفتن این توضیحات، با اجرای برنامۀ فوق در خروجی خواهیم داشت:

100

همان‌طور که ملاحظه می‌کنیم، با استفاده از متد ()abs عدد 100- به عدد مثبت 100 تبدیل شده و در کنسول چاپ شده است. 

متد ()ceil

یکی دیگر از متدهای کلاس Math متدی تحت عنوان ()ceil می‌باشد که نام آن از واژۀ Ceiling به معنای «سقف اتاق» گرفته شده است و وظیفۀ آن تبدیل عددی از نوع اعشاری به یک عدد صحیح می‌باشد به طوری که داده‌ای از جنس اعشاری را به عنوان آرگومان ورودی گرفته و آن را رو به بالا رُند کرده و عددی صحیح را در خروجی ریترن می‌کند. برای مثال، اگر عدد 12/3 را به این متد دهیم، خروجی حاصله عدد 13 خواهد بود که برای درک بهتر نحوۀ کارکرد متد ()ceil و همچنین ارتباط آن با واژۀ Ceiling، تصویر زیر را مد نظر قرار می‌دهیم:

متد ()ceil

حال در ادامه متد ()ceil را در مثال مربوط به کد فوق فراخوانی می‌کنیم به طوری که در کد زیر داریم:

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

همان‌طور که در کد فوق ملاحظه می‌کنیم، متد ()ceil از کلاس Math را فراخوانی کرده و عدد اعشاری 12/3 را به عنوان آرگومان ورودی به آن داده‌ایم که عدد ریترن‌شده توسط متد ()println در کنسول چاپ می‌شود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:

13.0

همان‌طور که می‌بینیم، عدد 12/3 رو به بالا رُند شده و در نتیجۀ آن عدد 13 در کنسول چاپ می‌شود. 

متد ()floor

نحوۀ عملکرد متد ()floor دقیقاً برعکس متد ()ceil می‌باشد که نام آن نیز از واژۀ Floor به معنای «کف اتاق» گرفته شده است و با توجه به تصویر زیر می‌توانیم عملکرد این متد را حدس بزنیم:

متد ()floor

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

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

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

12.0

همان‌طور که مشاهده می‌کنیم، متد ()floor عدد 12/3 را رو به پایین رُند کرده و آن را به عدد 12 کاهش داده است. 

online-support-icon