Friday 31 March 2017

پیش فروش اینترنتی بلیط قطار

پیش فروش اینترنتی بلیط قطار

پیش فروش اینترنتی بلیط قطار ویژه نوروز ۹۶ برای حرکت در تاریخ (۲۵ اسفند ۹۵ تا ۱۵ فروردین ۹۶) از ساعت ۵ عصر روز یکشنبه ۱۷ بهمن آغاز و تا روز سه شنبه ۱۹ بهمن ادامه خواهد داشت. کاربران گرامی با ورود به سایت سامتیک میتوانند بلیط قطار تمامی شرکت های ریلی ایران اعم از رجا، فدک و سفیر را در تمامی مسیرها به صورت کاملا آنلاین رزرو و خریداری نمایند.
کد خبر : 68776
تاریخ انتشار : سه شنبه 31 می 2016 - 18:35
0 views بازدید

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

آموزش برنامه نویسی جاوا: مفاهیم پایه در زبان جاوا, قسمت ۷ بخش اول مقدمه:دوستان خوبم در جلسه‌ی قبل ما با نحوه‌ی ورودی گرفتن از طریق کنسول آشنا شدیم. در این جلسه با انواع دیگری از روش‌های ورودی گرفتن در جاوا آشنا می‌شویم (ورودی از طریق اسکنر و واسط کاربری). همچنین با کلاس Math و متد‌های آن آشنا می‌شویم و به متد‌ها نگاهی عمیق‌تر می‌کنیم. در […]

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

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

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

کلاس Scanner

یکی دیگر از روش‌های دریافت ورودی از کاربر استفاده از کلاس Scanner است. این کلاس در پکیج java.util قرار دارد و برای استفاده از این کلاس حتما باید پکیج مربوطه را import کنیم. برای استفاده از کلاس اسکنر ابتدا باید با استفاده از کلمه‌ی کلیدی new یک آبجکت یا شی بسازیم. با توجه به اینکه در حال حاضر ما به مبحث شی‌گرایی نرسیده‌ایم بهتر است فقط نحوه‌ی استفاده از این کلاس را حفظ کنید تا بعدا در مبحث مربوطه با جزئیات کار آشنا شوید. به کد زیر دقت کنید:

Scanner input = new Scanner(System.in);

همانطور که مشاهده می‌کنید ما ابتدا نام کلاس Scanner را نوشته‌ایم و بعد متغیری با نام input تعریف کرده‌ایم و بعد با استفاده از کلمه‌ی کلیدی new شی‌ را ساخته‌ایم. متغیر input در اصل ارجاعی به شی Scanner است نه اینکه خود input شی باشد. اما تمام برنامه نویسان برای راحتی کار به متغیر input آبجکت یا شی می‌گویند. به عملی که ما در بالا انجام داده‌ایم ساختن یک آبجکت یا شی از روی کلاس Scanner گفته می‌شود. در مبحث شی‌گرایی مفهومی است با نام Constructor یا سازنده که به متد هم نام آن کلاس گفته می‌شود. (این مفاهیم در مبحث شی گرایی به طور مفصل توضیح داده خواهد شد. پس نگران نباشید!!!). اگر در کد بالا دقت کنید ما در داخل پرانتز‌های باز و بسته‌، استریم (جریان) System.in را نوشته‌ایم. همانطور که در آموزش قبلی مشاهده کردید ما با استفاده از System.in از طریق کنسول برنامه ورودی‌ را دریافت کردیم. در اینجا System.in در کانستراکتور کلاس Scanner معرف جریان داده‌ای است که از طریق کنسول برنامه از کاربر دریافت می‌شود. این جریان داده در اختیار آبجکت اسکنر قرار داده می‌شود تا این آبجکت نیز داده‌ها را در قالب یک متن قابل تفسیر در اختیار ما قرار دهد. در ادامه ما با استفاده از متد‌هایی که در کلاس Scanner تعریف شده اند می‌توانیم از کاربر ورودی دریافت کنیم. بعضی از این متد‌ها در زیر آورده شده اند:

nextLine() – next() – nextInt() – nextDouble()

حالا می‌خواهیم برنامه‌ای بنویسیم که کاربر یک متنی را بنویسد و تا زمانی که دکمه‌ی Space را نزده است، متن نوشته شده توسط کاربر وارد برنامه شود. یعنی زمانی که Space زده شد، از Space به بعد را برنامه نادیده بگیرد (وارد برنامه نشود). به کد زیر توجه کنید:

در مورد کدی که در خط هفت نوشته شده است توضیح داده شد. مهم ترین خط، خط ۱۰ است که ابتدا یک متغیر با نام name از نوع String تعریف کرده‌ایم و بعد علامت مساوی را قرار داده‌ایم. در سمت راست مساوی ما عملیات ورودی را انجام داده‌ایم. ما با استفاده از متد next می‌توانیم به متنی که توسط کاربر تایپ شده است دست یابیم. چون متد next در کلاس اسکنر است، بنابراین برای دسترسی به آن متد باید از آبجکتی که از روی آن کلاس ایجاد شده است استفاده کنیم. ما آبجکت input را از روی کلاس Scanner ایجاد کرده‌ایم. بنابراین ابتدا این آبجکت را می‌نویسیم و سپس یک نقطه (.) قرار می‌دهیم و بعد نام متد را می‌آوریم. وقتی اجرای برنامه به این خط از برنامه می‌رسد (خط ۱۰)، برنامه منتظر می‌ماند تا کاربر چیزی را در کنسول برنامه تایپ کند و سپس دکمه‌ی اینتر را بزند. بعد از اینکه کاربر دکمه‌ی اینتر را فشار داد، چیز‌هایی که کاربر تایپ کرده است در متغیر name ذخیره می‌شود. در خط آخر برنامه هم (خط ۱۳) استفاده از آبجکت اسکنر مسدود شده است. مسدود کردن آبجکت Scanner باعث آزاد شدن کنسول برنامه می‌شود تا قسمت‌های دیگر برنامه در صورت نیاز بتوانند از آن استفاده کنند.

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

java.util.Scanner input = new java.util.Scanner(System.in);

اگر پکیج‌ها را import نکنیم و به شکل بالا از کلاس‌ها استفاده کنیم، نکته‌ای است که همانطور که مشاهده می‌کنید ما در هر جایی که بخواهیم از کلاس Scanner استفاده کنیم، باید نام کلاس به همراه نام دقیق پکیج آن نوشته شود. اما اگر import کنیم دیگر نیازی به این کار نیست. بنابراین import کردن بهترین کار است. نکته‌ی مهم دیگری که در این کار وجود دارد این است که import کردن فقط در فایل java. است و وقتی که برنامه‌ی ما توسط ابزار javac کامپایل می‌شود و فایل class. ایجاد می‌شود، دیگر در فایل class. خبری از import نیست. زیرا کامپایلر جاوا زمانی که می‌خواد برنامه را کامپایل کند و به کلاس اسکنر می‌رسد، به import ها نگاه می‌کند و کلاس مورد نظر را پیدا می‌کند و آن را دقیقا مشابه آن چیزی که ما در بالا نوشته‌ایم می‌نویسد.

خروجی برنامه‌فوق به صورت زیر است:

What is your name? Sina Doshiri

Your name is: Sina

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

دریافت ورودی از طریق واسط کاربری

یکی دیگر از روش‌های دریافت ورودی در جاوا که روش جذابی هم است، استفاده از واسط کاربری است. منظور از واسط کاربری همان پنجره‌هایی است که مبنای کار سیستم عامل‌های امروزی است. از طریق این پنجره‌ها، ممکن است داده‌هایی را به یک برنامه وارد کنید یا خروجی اجرای یک برنامه را مشاهده کنید. کلاس JOptionPane یکی دیگر از کلاس‌های جاوا است که با استفاده از متد‌های آن می‌توان انواع مختلفی از پنجره‌های از پیش تعریف شده را نمایش داد. قبل از این آموزش ما با استفاده از کادر‌های گفتگو متنی را نمایش دادیم. اما در اینجا می‌خواهیم یک ورودی را از کاربر دیافت کنیم. برای این کار باید از متد showInputDialog استفاده کنیم. به کد زیر توجه کنید:

برنامه نویسی جاوا حرفه ای
برنامه نویسی جاوا حرفه ای

همانطور که در تصویر بالا مشاهده می‌کنید، هم کد و هم خروجی برنامه آورده شده است. کلاس JOptionPane در پکیج javax.swing قرار دارد و طبق معمول باید آن را import کرد.

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

برنامه نویسی جاوا حرفه ای
برنامه نویسی جاوا حرفه ای

برنامه‌ی بالا را می‌توان یک ماشین حساب ساده در نظر گرفت. نکته‌ای که در مورد کادر‌های گفتگو وجود دارد این است که ورودی‌ که برنامه از این طریق دریافت می‌کند همگی از نوع String هستند. بنابراین برای اینکه ما بخواهیم مقداری که کاربر از طریق کادر‌های گفتگو وارد برنامه می‌کند را در یک متغیر ذخیره کنیم تا در ادامه‌ی برنامه از آن استفاده کنیم، آن متغیر باید از جنس String باشد. همانطور که در خطوط هف و هشت مشاهده می‌کنید ما دو متغیر از نوع String با نام‌های firstNum و secondNum تعریف کرده‌ایم تا به ترتیب عدد اول و عدد دوم را ذخیره کند. توجه داشته باشید که ما می‌خواهیم عملیات جمع انجام دهیم. بنابراین مثلا عدد ۲ که به صورت String در حافظه ذخیره شده با ۲ که به صورت int یا double ذخیره شده است تفاوت دارد. اجازه دهید کار خود را با یک مثال پیش ببریم. به کد زیر توجه کنید:

برنامه نویسی جاوا حرفه ای
برنامه نویسی جاوا حرفه ای

در برنامه‌ی بالا ابتدا دو متغیر از نوع String تعریف شده‌اند که هر کدام مقدار ۲ را دریافت کرده اند. در خط هفت وقتی آن دو متغیر را با هم جمع می‌کنیم، براساس منطق ریاضی جواب باید ۴ شود. اما جواب ۲۲ است. در حقیقت ۲۲ هم نیست!!!. فقط برنامه دو تا دو را در کنار هم نوشته است. اما در قسمت بعد برنامه ما دو متغیر از نوع int تعریف کرده‌ایم و در خط ۱۱ آن‌ها را با هم جمع و در خروجی چاپ کرده‌ایم. اینبار جواب درست را می‌بینیم. یعنی ۴٫

در برنامه‌ای که دو عدد را از کاربر دریافت و سپس جمع می‌کند، برنامه ابتدا ورودی کاربر را در متغیر‌هایی از نوع String ذخیره کرده است. بنابراین اگر ما آن دو متغیر را با هم جمع کنیم، برنامه جواب درست را به ما نمی‌دهد. پس باید چه کاری انجام دهیم!؟ در خطوط ۱۰ و ۱۱ برنامه این مسئله روشن شده است. ما مقادیر String را به double تبدیل کرده‌ایم. در جلسه‌ی قبل در مورد cast کردن صحبت کردیم که می‌توانستیم داده‌ای از نوع دیگر را به داده‌ای از نوع دیگر تبدیل کنیم. اما در اینجا ما کست نکرده‌ایم. در حقیقت با استفاده از متد parseDouble، عمل پارس کردن را انجام داده‌ایم. علت هم این است که کست کردن فقط برای داده‌های پایه در جاوا است.

در جاوا ما به اندازه‌ی داده‌های پایه (Primitive Data Types)، کلاس‌های تقریبا با همین نام‌ها که با حروف بزرگ شروع می‌شوند داریم که به آن‌ها Wrapper class گفته می‌شود. ما در اینجا قصد صحبت کردن در مورد Wrapper class ها را نداریم. اما برای استفاده از متد parseDouble باید از Wrapper class ها استفاده می‌کردیم. نهایتا با کاری که ما در خطوط ۱۰ و ۱۱ انجام داده‌ایم، مقادیر String را به double تبدیل کرده‌ایم تا بتوانیم عملیات ریاضی بر روی آن‌ها انجام دهیم. خطوط بعدی برنامه هم کاملا واضح است. ما داده‌های تبدیل شده به double را با هم جمع کردیم و در یک متغیر دیگری از با نام result از نوع double ذخیره کرده‌ایم. در خط آخر هم جواب نهایی را با استفاده از کادر‌های گفتگو نمایش داده‌ایم.

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

System.exit(0);

استفاده از متد‌های کلاس Math

در جاوا کلاسی با نام Math وجود دارد که حاوی متد‌هایی برای انجام اعمال محسباتی و مثلثاتی است. بعضی از متد‌هایی که در این کلاس وجود دارند در زیر آمده است:

Math.sqrt() – Math.round() – Math.abs() – Math.ceil() – Math.floor() – Math.sin() – Math.cos()

متد‌های بسیار زیادی در این کلاس وجود دارد که در بالا فقط هفت متد آن آورده شده است.

  1. Math.sqrt ریشه‌ی دوم یک عدد را حساب می‌کند (جذر می‌گیرد).
  2. Math.round یک عدد را رُند می‌کند.
  3. Math.abs قدر مطلق یک عدد را حساب می‌کند.
  4. Math.ceil یک عدد را به سمت بالا رُند می‌کند.
  5. Math.floor یک عدد را به سمت پایین رُند می‌کند.
  6. Math.sin سینوس یک عدد را حساب می‌کند.
  7. Math.cos کسینوس یک عدد را حساب می‌کند.

تمام هفت متد معرفی شده در برنامه‌ی زیر به کار رفته است:

برنامه نویسی جاوا حرفه ای
برنامه نویسی جاوا حرفه ای

برنامه را اجرا کنید و خروجی آن را مشاهده کنید. (پاسخ سینوس و کسینوس را درست نمایش نمی‌دهد. در مورد آن سرچ کنید).

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

برنامه نویسی جاوا حرفه ای
برنامه نویسی جاوا حرفه ای

نتیجه گیری:دوستان خوبم به پایان مطلب مفاهیم پایه در زبان جاوا رسیدیم,  همانطور که مشاهده می‌کنید در خط اول import static را نوشته‌ایم و در استفاده از متد‌ها دیگر از نام کلاس Math استفاده نکرده‌ایم. همراه با ما باشید

لینک مطلب

منابع : ناموجود
نویسندگان : ناموجود
چه امتیازی می دهید؟
5 / 0
[ 0 رای ]

برچسب ها :

ناموجود
ارسال نظر شما
انتشار یافته : 0 در انتظار بررسی : 97
  • نظرات ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد.
  • نظراتی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • نظراتی که به غیر از زبان فارسی یا غیر مرتبط با خبر باشد منتشر نخواهد شد.


تبليغات تبليغات تبليغات تبليغات