آموزش جدید و کامل برنامه نویسی پیشرفته جاوا: مفاهیم پایه در زبان جاوا , قسمت ۷ , بخش ۲

0

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

آموزش جدید و کامل برنامه نویسی پیشرفته جاوا: مفاهیم پایه در زبان جاوا , قسمت ۷ , بخش ۲

مقدمه: دوستان عزیزم در ادامه قسمت اول این بخش,  در زبان‌های برنامه نویسی دیگری مثل ++C به متد‌ها تابع گفته می‌شود. اما در جاوا از کلمه‌ی متد (Method) استفاده می‌شود. در این آموزش ما یک مثال ساده از نحوه‌ی نوشتن یک متد و استفاده از آن (فراخوانی متد) در برنامه آشنا شدیم. اگر بخواهیم نحوه‌ی کارکرد متد‌ها را در یک جمله برای شما توضیح دهیم، متد‌ها مانند یک کارخانه هستند که از یک سمت ورودی‌هایی را دریافت می‌کنند و بعد بر روی این ورودی‌ها که شامل هر نوع داده‌ای می‌تواند باشد پردازش‌هایی را انجام می‌دهند و از سمت دیگر خروجی‌ای را تولید می‌کنند.

متد‌ها را به روش‌های مختلفی می‌توانیم طراحی کنیم. می‌توان نوع برگشتی‌ای برای آن مشخص نکرد (یعنی متد از نوع void باشد) و یا می‌توان برای آن مقدار برگشتی مشخص کرد (می‌تواند از نوع int, double, String و … باشد). که اگر مقدار برگشتی برای آن‌ها مشخص کنیم، در آخر آن متد باید با استفاده از کلمه‌ی کلیدی return مقداری را برگرداند. در آموزشی که گفته شد متد ما مقدار برگشتی نداشت (یعنی از نوع void بود). اما در ادامه می‌خواهیم مثالی را برای شما بیاوریم که متد ما از نوع int باشد و مقداری را برگرداند. به کد زیر توجه کنید:

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

همانطور که در کد فوق مشخص است، ما در خط ۸ یک متدی با نام sum که از نوع int است ساخته‌ایم. (منظور از int نوع برگشتی متد ما است و متد باید یک مقدار صحیح برگرداند. بنابراین از کلمه‌ی کلیدی void استفاده نمی‌کنیم). در داخل متد هم همانطور که معلوم است دو متغیر از نوع عدد صحیح با مقادیر تعیین شده تعریف کرده‌ایم. در آخر هم (خط ۱۲) این دو متغیر را با هم جمع کرده‌ایم و با استفاده از کلمه‌ی کلیدی return مقداری را برگردانده‌ایم. (شاید برگرداندن مقدار کمی گنگ باشد. در ادامه متوجه می‌شوید). ما برای استفاده از این متد باید این متد را از داخل متد اصلی (main) فراخوانی کنیم. بنابراین برای فراخوانی متد فقط کافیست نام متد را بنویسیم. ما در متد main نام متد را در داخل جمله‌ی ;()System.out.println نوشته‌ایم. علت هم این است که می‌خواهیم مقداری که متد برمی‌گرداند را در کنسول مشاهده کنیم. بنابراین اگر برنامه را اجرا کنیم، خروجی اجرای برنامه‌ی ما ۱۰ است. یعنی مقدار برگشتی متد ما حاصل جمع دو متغیری است که در داخل آن تعریف شده است.

حالا می‌خواهیم متد فوق را به گونه‌ای تغییر دهیم که هنگامی که متد sum را از طریق متد main فراخوانی می‌کنیم، اعدادی را در نظر بگیریم تا آن اعدادی که ما مشخص می‌کنیم در متد با هم جمع شوند. در متد مفهومی است با نام پارامتر که به متغیر‌هایی که در داخل پرانتز‌های باز و بسته‌ی متد قرار می‌گیرند گفته می‌شود. برای فهم این مطلب به کد زیر نگاه کنید:

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

در برنامه‌ی قبلی ما دو متغیر num1 و num2 را داخل بدنه‌ی متد تعریف کردیم. اما این‌بار همانطور که مشاهده می‌کنید در پرانتز‌های باز و بسته‌ی متد sum تعریف کرده‌ایم. این‌ها پارامتر‌های متد ما هستند و نکته‌ی بسیار مهمی که وجود دارد این است که باید در همان ابتدای استفاده از متد پارامتر‌های متد را مقدار دهی کنیم. در غیر این صورت برنامه‌ی ما کامپایل نمی‌شود. زیرا در جاوا مقدار پیش فرض برای یک پارامتر وجود ندارد. یعنی برای فراخوانی یک متدی که دارای پارامتر است، باید حتما مقدار تمام پارامتر‌های متد را به ترتیب مشخص کنیم. به خط ۵ در داخل متد main توجه کنید. ما وقتی متد sum را فراخوانی کرده‌ایم، به ترتیب برای پارامتر‌های آن مقادیری را تعیین کرده‌ایم. شما می‌توانید هر مقدار دیگری را در نظر بگیرید. بنابراین اگر برنامه را اجرا کنید پاسخ ۱۲ خواهد بود.

استفاده از پارامتر‌های متد main

همانطور که قبلا هم گفته شد، تمام برنامه‌های جاوا یک متد اصلی دارند که نام آن main است. (نام این متد دقیقا باید به همین شکل نوشته شود. در غیر اینصورت برنامه اجرا نمی‌شود). متد main نقطه‌ی شروع هر برنامه‌ی جاوا است. همانطور که در آموزشی که گفته شد مشاهده کردین، برای استفاده از یک متد حتما باید آن متد توسط برنامه نویس فراخوانی شود. در غیر این صورت بود و نبود آن متد هیچ فرقی ندارد. اما در مورد متد main این قضیه فرق دارد. برنامه باید اجرا شود تا ما (برنامه نویس) بتوانیم متد‌هایی را در برنامه فراخوانی کنیم. سوال اینجاست که متد main چگونه اجرا می‌شود؟ پاسخ این است که متد ()main توسط برنامه نویس فراخوانی نمی‌شود، بلکه در زمان اجرا توسط JVM فراخوانی می‌شود. هنگامی که ما با استفاده از ابزار java کلاس را اجرا می‌کنیم، ماشین مجازی جاوا متد ()main درون کلاس مشخص شده را یافته و اجرا می‌کند.

با توجه به توضیحات قسمت قبل، گفتیم که در جاوا مقدار پیش فرض برای پارامتر‌ها وجود ندارد. پارامتر‌های ورودی متد main یک آرایه‌ای از رشته‌ها است (String[] args) (در مورد آرایه‌ها بعدا توضیح داده خواهد شد). اما ما هیچگاه مقادیر پارامتر‌های متد main را مشخص نکرده‌ایم. پس چگونه برنامه‌ی ما اجرا می‌شود؟ پاسخ این است که از آنجایی که متد main توسط JVm فراخوانی می‌شود، در فراخوانی آن می‌توانید هیچ پارامتری را مشخص نکنید، در این صورت JVM متد ()main را با یک پارامتر بدون مقدار (null) فراخوانی می‌کند.

آرایه‌ها: در این جلسه از آموزش ما نمی‌خواهیم در مورد آرایه‌ها صحبت کنیم. اما اندکی در مورد آن‌ها توضیح می‌دهیم تا کمی با آن‌ها آشنا شوید. آرایه‌ها پر کاربرد‌ترین ساختمان داده‌ها در برنامه نویسی هستند. درواقع آرایه‌ها لیستی از داده‌ها هستند که همگی آن‌ها از یک نوع هستند. (یعنی یا همه‌ی آن‌ها از نوع int هستند. یا از نوع double یا از نوع String و … هستند). همانطور که گفته شد آرایه‌ها لیستی از داده‌ها هستند. بنابراین برای دسترسی به هر خانه‌ی آرایه باید با استفاده از ایندکس یا اندیس آن آرایه به آن خانه‌ی آرایه دسترسی پیدا کرد. ایندکس در واقع شماره‌ای است که برای هر خانه‌ی حافظه در نظر گرفته می‌شود. نکته‌ی دیگری که باید به آن توجه کنیم این است که شماره‌ی خانه‌های آرایه از صفر شروع می‌شود. یعنی خانه‌ی یکم شماره‌ی صفر دارد. و آرایه‌ای با ۱۰ خانه، آخرین ایندکس آن ۹ است. در برنامه نویسی برای دسترسی به خانه‌ی مثلا اول آرایه باید به شکل زیر کدی را بنویسیم:

array[0];

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

حالا ما می‌خواهیم از پارامتر‌های متد main استفاده کنیم. یعنی می‌خواهیم مقادیری را برای آن‌ها در نظر بگیریم و آن‌ها را در خروجی استاندارد چاپ کنیم. برای این کار دو راه وجود دارد. یکی اینکه از طریق Command Prompt موقع‌ای که می‌خواهیم برنامه را اجرا کنیم پارامتر‌ها را ارسال کنیم. و راه دیگر که راه آسان تری است از محیط توسعه‌ی اکلیپس برای این کار استفاده کنیم. ما ابتدا روش اول را آموزش می‌دهیم. به کد زیر توجه کنید:

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

به پارامتر متد main توجه کنید. آرایه‌ای از جنس String تعریف شده است. (نحوه‌ی تعریف آرایه به این شکل است). در خطو ۵ و ۶ و ۷ هم با استفاده از جمله‌ی ;()System.out.println محتویات خانه‌های ۱ تا ۳ آرایه را چاپ کرده‌ایم. (توجه کنید که اگر به همین شکل برنامه را اجرا کنید با خطا مواجه می‌شوید. زیرا هنوز مقادیری برای پارامتر متد main در نظر نگرفته‌ایم). ابتدا این برنامه را با استفاده از Command Promt کامپایل کنید تا فایل class. آن ایجاد شود. سپس به عکس زیر توجه کنید:

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

همانطور که در تصویر مشاهده می‌کنید ما ابتدا برنامه‌ی خودمان را کامپایل کرده‌ایم و سپس با استفاده از ابزار java می‌خواهیم کلاس MainClass را اجرا کنیم. ما در برنامه‌ی خود محتویات سه خانه‌ی ابتدایی پارامتر متد main را در خروجی استاندارد چاپ کرده‌ایم. بنابراین در اینجا هنگام اجرای برنامه باید مقادیری را برای آن پارامتر‌ها در نظر بگیریم. همانظور که مشاهده می‌کنید مقادیر خانه‌های یک تا سه آرایه مشخص شده است. برای هر خانه چیزی را که می‌خواهیم می‌نویسیم و سپس یک Space می‌زنیم. هنگامی که Space می‌زنیم به سراغ خانه‌ی بعدی آرایه می‌رومیم. خروجی برنامه هم در کادر قرمز رنگ در تصویر مشخص شده است.

اما روشی راحت‌تر برای ارسال پارامتر به متد ()main وجود دارد و آن استفاده از اکلیپس است. برای ارسال پارامتر از طریق اکلیپس باید به پنجره‌ی Run Configurations مراجعه کنید. به تصویر زیر توجه کنید:

برنامه نویسی پیشرفته جاوا
برنامه نویسی پیشرفته جاوا

همانطور که در تصویر مشخص است دو راه برای دسترسی به Run Configurations وجود دارد. یا در فیلد Quick Access عبارت Run Configurations را سرچ کنید و یا اینکه بر روی علامت پیکان دکمه‌ی Run کلیک کنید تا منوی آن باز شود و گزینه‌ی مشخص شده را انتخاب کنید. بعد از انتخاب گزینه‌ی مورد نظر وارد پنجره‌ی زیر می‌شوید:

در پنجره‌ی فوق ابتدا تب Arguments را انتخاب کنید و در قسمت Program Arguments مقادیری را تایپ کنید و در آخر بر روی دکمه‌ی Run کلیک کنید. برنامه اجرا می‌شود و دقیقا این سه مقداری که ما در اینجا نوشته‌ایم در خروجی چاپ می‌شود.

تمرین

  1. برنامه‌ای بنویسید که از طریق کنسول نام خود را وارد کنید و بعد برنامه نام شما را به صورت برعکس در خروجی استاندارد چاپ کند. (توجه داشته باشید که خودتان الگوریتم این برنامه را بنویسید و به هیچ عنوان از متد‌های جاوا استفاده نکنید). (برای نوشتن این برنامه در مورد متد ()charAt جستجو کنید).
  2. برنامه‌ای بنویسید و در آن یک متد تعریف کنید که آن متد یک عدد را به عنوان پارامتر دریافت کند و تعیین کند که آیا آن عدد اول است یا خیر.
  3. متدی بنویسید که یک عدد را به عنوان پارامتر دریافت کند و تعیین کند که آیا آن عدد Perfect است یا خیر.

نتیجه گیری:کاربران محترم و عزیز به انتهای مطلب مفاهیم پایه در زبان جاوا , قسمت ۷ رسیدیم, عدد Perfect یا عدد کامل یک عدد صحیح مثبت است که مجموع همه‌ی مقسوم علیه‌های مثبتش (به غیر از خود عدد) برابر با خود عدد باشد. به عنوان مثال اعداد ۶ و ۲۸ اعداد کامل هستند. همراه با ما باشید.

گردآوری:گیگر

منبع:zoomit

لینک مطلب

پاسخ دهید