نمایش دادن داده ها و انجام محاسبات
شما می توانید یک ثابت یا یک متغیر را با استفاده از دستور ()print یا ()println به تنهایی یا بصورت ترکیب با یک رشته، نمایش دهید. بعنوان مثال در کلاس NumbersPrintln که در عکس 2.3 نشان داده شده است، یک عدد صحیح به نام billingDate تعریف شده است که مقدار 5 به آن انتساب داده شده است. همان طور که در عکس 2.3 مشاهده می کنید، در اولین خط رنگی شده، مقدار متغیر billingDate به تنهایی در داخل متد ()print قرار گرفته است. اما در دومین خط رنگی شده، متغیر billingDate با یک رشته(String) ترکیب شده است.
در زبان جاوا، هنگامی که یک متغیر عددی با استفاده از علامت بعلاوه(+) با یک رشته(String) ترکیب می شود، تمام عبارت ما به رشته تبدیل می شود. متد ()println قادر است تا یک عدد و یا یک رشته را بپذیرد. بنابراین هر دوی این عبارات در این متد کار می کنند. خروجی اپلیکیشن نشان داده شده در عکس 2.3 را می توانید در عکس 2.4 مشاهده کنید.
نکته: بعداً در این فصل خواهید آموخت که اگر یک علامت بعلاوه(+) بین دو مقدار عددی قرار بگیرد، عملیات جمع بین این دو عدد انجام می شود. اما هنگامی که شما یک رشته را در یکی از طرف های علامت بعلاوه قرار دهید، عمل الحاق انجام خواهد شد. در فصل 1، آموختید که چندریختی قابلیتی است که به ما امکان می دهد تا یک عبارت یا یک علامت بر اساس محتوایی که با آن روبه رو می شود، به صورت های متفاوتی تفسیر شود. علامت بعلاوه، یک علامت چند ریختی است که هنگامی که با یک رشته مورد استفاده قرار می گیرد عمل الحاق را انجام می دهد و هنگامی که با اعداد بکار برده شود، عمل جمع این اعداد را انجام می دهد.
برنامه ی نشان داده شده در عکس 2.3 برای نمایش دادن مقادیر از خط فرمان استفاده می کند، اما شما می توانید از یک جعبه ی گفتگو(dialog box) برای نشان دادن مقادیر استفاده کنید. همان طور که در فصل 1 مشاهده کردید، شما می توانید برای متد ()showMessageDialog از دو آرگومان استفاده کنید. اولین آرگومان را null قرار می دهیم که مشخص می کند که جعبه ی گفتگو در وسط صفحه قرار بگیرد، و دومین آرگومان، همان رشته ای است که می خواهیم نمایش یابد.
عکس 2.5 کلاسی به نام NumbersDialog را نشان می دهد که در آن دو بار از متد ()showMessageDialog استفاده شده است. یک بار برای نمایش دادن یک عدد صحیح و یک بار هم برای نمایش دادن یک رشته با استفاده از متغیر creditDays که دارای مقدار 30 است.
همان طور که در عکس 2.5 مشاهده می کنید، در هر یک از عبارت های رنگی شده در این کلاس، متغیر عددی با یک رشته الحاق شده است و باعث شده است تا یک رشته ی کلی ایجاد شود. در اولین عبارت رنگی شده، رشته ی مورد نظر یک رشته ی خالی است که با استفاده از دو علامت دابل-کوتیشن ایجاد شده است.
این اپلیکیشن، دو جعبه ی گفتگو را ایجاد می کند که به ترتیب در عکس های 2.6 و 2.7 نشان داده شده اند. همان طور که مشاهده می کنید، اولین جعبه ی گفتگو، مقدار 30 را نشان می دهد و هنگامی که بر روی دکمه ی ok کلیک کنید، جعبه ی گفتگوی دوم ظاهر می شود.
انجام محاسبات در جاوا
جدول 2.7 پنج عملگر استاندارد محاسباتی را نشان می دهد. شما می توانید از عملگرهای محاسباتی، برای انجام محاسبات بر روی مقادیر درون برنامه ی خود، استفاده کنید. به مقدار قرار گرفته در سمت چپ یا راست یک عملگر، عملوند گفته می شود. بعنوان مثال در عبارت 2+45 اعداد 45 و 2 را عملوند می گوییم.
جدول 2.7:
عملگر | توضیحات | مثال |
+ | جمع | 45+2 می شود 47 |
- | تفریق | 45-2 می شود 43 |
* | ضرب | 45*2 می شود 90 |
/ | تقسیم |
45.0/2 می شود 22.5 45/2 می شود 22(نه 22.5) |
% | باقی مانده(پیمانه) | 45%2 می شود 1 |
نکته: برای یافتن باقی مانده ی صحیح یک عدد، می توانید از عملگر % استفاده کنید.
هنگام کار با عملگرهای / و % کمی دقت کنید. زیرا جاوا از دو نوع تقسیم پشتیبانی می کند، که عبارتند از:
- تقسیم اعداد ممیز شناور: این تقسیم زمانی رخ می دهد که هر دوی عملوندها اعدادی ممیز شناور باشند. بعنوان مثال عبارت 45.0/2 برابر است با 22.5
- تقسیم اعداد صحیح: این تقسیم زمانی رخ می دهد که هردوی عملوندها اعدادی صحیح باشند. آنچه بعنوان نتیجه به دست می آید، یک عدد صحیح دیگر است به طوری که قسمت کسری آن حذف شده است. بعنوان مثال نتیجه ی 45/2 برابر است با 22. همچنین مقدار عبارت 39/5 برابر است با 7 . همچنین حاصل تمام تقسیم های 38/5 و 37/5 و 36/5 و 35/5 برابر با 7 است.
علامت درصد(%) را عملگر باقی مانده می نامیم. عملگر باقی مانده، بیشتر اوقات به همراه دو عدد صحیح مورد استفاده قرار می گیرد و حاصل برابر است با باقی مانده ی صحیح تقسیم آن دو عدد بر یکدیگر. بعنوان مثال حاصل 2 % 45 برابر است با 1 زیرا 45 برابر است با \(22\times 2+1\).
هنگامی که شما عملگرهای ریاضی را در یک عبارت با یکدیگر ترکیب می کنید، باید با مفاهیم شرکت پذیری و تقدم عملگرها آشنا باشید. شرکت پذیریِ عملگرهای محاسباتی با تقدم یکسان، از سمت چپ به سمت راست می باشد.
مثلاً در عبارت answer = x + y + z چون که هرسه مقدار دارای تقدم یکسانی هستند، ابتدا x و y با یکدیگر جمع می شوند و سپس حاصل با مقدار z جمع می شود. پس از اینکه عمل جمع کامل شد، مقدار بدست آمده در متغیر answer ذخیره می شود.
تقدم عملگرها به معنی ترتیبی است که عبارات ریاضی مورد محاسبه قرار می گیرند. عملگر های ضرب و تقسیم و باقی مانده، دارای تقدم یکسانی هستند. اما تقدم آنها بیشتر از عملگرهای جمع و تفریق است. همچنین عملگر های جمع و تفریق دارای تقدم یکسانی هستند. به عبارت دیگر، عملگرهای ضرب و تقسیم و باقی مانده در یک عبارت قبل از عملگرهای جمع و تفریق مورد محاسبه قرار می گیرند(از چپ به راست). بعنوان مثال در عبارت زیر مقدار 14 در متغیر result ذخیره می شود:
مثال (نمایش دادن داده ها و انجام محاسبات)
int result = 2 + 3 * 4;
در مثال بالا، عمل ضرب (4*3) قبل از عمل جمع با عدد 2 مورد محاسبه قرار می گیرد. شما می توانید با استفاده از پرانتزها، تقدم عملگرها را به دلخواه تغییر دهید. مثلا در مثال زیر، مقدار 20 در متغیر result ذخیره می شود:
مثال (نمایش دادن داده ها و انجام محاسبات)
int result = (2 + 3) * 4;
در مثال بالا، عمل جمع قبل از عمل ضرب انجام می شود و سپس مقدار 5 در مقدار 4 ضرب می شود. هنگامی که چندین پرانتز در یک عبارت استفاده شده باشند، داخلی ترین عبارت که در داخل پرانتز قرار دارد، ابتدا مورد محاسبه قرار می گیرد. بعنوان مثال مقدار عبارت زیر برابر با 46 است:
مثال (نمایش دادن داده ها و انجام محاسبات)
2 * (3 + (4 * 5))
در مثال بالا ابتدا عدد 4 در عدد5 ضرب می شود و سپس با 3 جمع می شود پس مقدار آن تا اینجا 23 می شود. در نهایت حاصل در 2 ضرب می شود و عدد 46 به دست می آید.
این مهم است که به خاطر داشته باشید که عملگرهای * و / و % در محاسبات دارای تقدم یکسانی هستند. این سه عملگر به هر ترتیبی که قرار بگیرند، از سمت چپ به راست محاسبه می شوند. بعنوان مثال مقدار عبارت زیر برابر با 9 است:
مثال (نمایش دادن داده ها و انجام محاسبات)
25 / 8 * 3
در مثال بالا ابتدا 25 بر 8 تقسیم می شود و در نتیجه عدد 3 به دست می آید زیرا در تقسیم صحیح، باقی مانده ها از بین می روند. سپس عدد 3 در 3 ضرب می شود و مقدار 9 به دست می آید. در مثال بالا اگر شما ابتدا عدد 8 را در 3 ضرب کنید و سپس عمل تقسیم را انجام دهید، به یک جواب نادرست خواهید رسید.
نکته: در فصل های بعدی، در مورد تقدم عملگرها بیشتر صحبت خواهیم نمود.
درک مفهوم دقت، در اعداد ممیز شناور
توجه داشته باشید که اعداد ممیز شناور، بطور تقریبی مورد محاسبه قرار می گیرند. به دو نکته ی زیر توجه کنید:
- اگر شما در خروجی یک عدد ممیز شناور را تولید کنید، ممکن است این عدد دقیقاً آنچه که شما می خواهید نباشد.
- اگر شما اعداد ممیز شناور را با یکدیگر مورد مقایسه قرار دهید، ممکن است این مقایسه آنطور که انتظار دارید انجام نشود.
بعنوان مثال عکس 2.8 یک کلاس را نشان می دهد که در آن از نظر ریاضی مقدار 2.00-2.20 مورد محاسبه قرار گرفته است و نتیجه برابر با 0.20 شده است. اما همان طور که در عکس 2.9 مشاهده می کنید، مقدار نشان داده شده کمی بیشتر از 0.20 است و وقتی که ما حاصل را با 0.20 مورد مقایسه قرار می دهیم، نتیجه flase می شود:
اکنون شما ممکن است پذیرفته باشید که اعداد ممیز شناور، با اعداد ریاضی یک اختلاف جزئی دارند. اما اگر بخواهید این اختلاف جزئی را از بین ببرید می توانید از تکنیک های گرد کردن مقادیر استفاده کنید.
آزمون: گزینه ی صحیح را مشخص کنید
موضوع: نمایش دادن داده ها و انجام محاسبات
1. در زبان جاوا، هنگامی که یک مقدار عددی با استفاده از علامت بعلاوه، به یک رشته الحاق شود، کل آن عبارت به یک رشته(String) تبدیل می شود.
2. عملگرهای محاسباتی نوعی عملگر یگانی هستند. و به این دلیل یگانی گفته می شوند که در یک زمان تنها یک عملیات را انجام می دهند.
3. در زبان جاوا، تقدم عملگرها حکم می کند که عمل های ضرب و تقسیم و باقی مانده قبل از عمل جمع یا تفریق در یک عبارت، انجام شوند.
پاسخ: گزینه 2 اشتباه است. عملگرهای محاسباتی نوعی عملگر باینری(دوگانی) هستند. و به این دلیل باینری گفته می شوند که به دو عملوند احتیاج دارند.
- نوشته شده توسط احسان عباسی
- بازدید: 7653