آشنایی با مفهوم تقدم عملگرها
عملگرها دارای تقدم هستند، یعنی بعضی از عملگرها زودتر از بقیه محاسبه میشوند و در صورتی که این تقدم عملگرها وجود نداشت و تمام عملگرها از سمت چپ به راست ارزیابی میشدند، نتایج غیرمنتظرهای بهدست میآمد، زیرا هر عملگر معنی و مفهومی خاصی دارد. به اعداد یا عباراتی که این عملگرها روی آنها اعمال میشوند، عملوند میگوییم. برای مثال در عبارت 3 + 2، علامت + یک عملگر است و اعداد 2 و 3 هر دو عملوند هستند.
اولویت ها
در جدول زیر اولویتها از بالا به پایین هستند و عملگرهایی که در یک ردیف نوشته شدهاند، اولویت برابر دارند، در نتیجه باید آنها را از سمت چپ به راست ارزیابی کنیم. با توجه به اینکه هنوز در ابتدای مسیر هستیم، عملگرهای کمی در این جدول نوشته شدهاند. در ادامۀ مسیر با عملگرها و اولویتهایشان بیشتر آشنا میشویم.
توضیحات | |
ضرب، تقسیم، باقیمانده | x * y , x / y , x % y |
جمع، تفریق | x + y , x – y |
چگونه عبارات را ارزیابی کنیم؟
در زیر یک روش برای ارزیابی عبارات آمده است. دقت کنید که این روش دقیق نیست و فقط برای عباراتی که عملوندهای عددی دارند و عملگرهایی را که در جدول بالا آمده است، شامل میشوند، درست کار میکند. در ادامۀ مسیر با روش دقیقتر و درستتر آشنا میشویم.
به روش زیر اینگونه عبارات را ارزیابی میکنیم:
از سمت چپ شروع میکنیم و به سمت راست پیمایش میکنیم.
تمام محاسبات مربوط به ضرب، تقسیم، و باقیمانده را انجام میدهیم و نتیجه این محاسبات را در عبارت جایگذاری میکنیم.
سپس محاسبات مربوط به جمع و تفریق را انجام میدهیم تا نتیجۀ نهایی عبارت بهدست آید.
برای مثال عبارت زیر
2 + 5 * 3
برابر با 21 نیست، بلکه برابر با 17 است.
در مثال بالا ابتدا 3 * 5 محاسبه میشود که برابر با 15 است، سپس با 2 جمع میشود و نتیجه برابر 17 میشود.
به دلایل مختلفی مفهوم تقدم عملگرها وجود دارد. یکی از راههای ساده برای محاسبات بدون نیاز به حفظ کردن این تقدمها به روش زیر است (البته برای برخی عملگرها و شرایط ساده قابل اعمال کردن است، اما میتواند نگاه خوبی برای دلیل وجود تقدم عملگرها به ما دهد):
همانطور که میدانید، عملگر * جایگزینی برای تکرار عملگر + است. برای مثال 3 * 5 به معنی 3 بار جمع کردن عدد 5 است (5 + 5 + 5)، درنتیجه میتوان برای محاسبۀ عبارت
3 * 5 + 2، ابتدا ضرب را جایگزین کرد که عبارت 5 + 5 + 5 + 2 بهدست میآید و نتیجه 17 میشود.
یا در مثال زیر
8 + 9 – 4 * 2 + 6 / 2 + 10 =
محاسبات به شکل زیر است:
از سمت چپ شروع میکنیم و ابتدا تمام محاسبات مربوط به ضرب، تقسیم، و باقیمانده را انجام میدهیم، ابتدا 2 * 4 محاسبه میشود که برابر با 8 است، در مرحلۀ بعد 2 / 6 محاسبه میشود که برابر با 3 است و سپس تمام محاسبات مربوط به جمع و تفریق انجام میشود یعنی ابتدا 9 + 8 انجام میشود که برابر با 17 است، سپس منهای 8 (که نتیجۀ
2 * 4 است) میشود که برابر با 9 میشود، این مقدار هم با 3 (که نتیجۀ 2 / 6 است) جمع میشود که برابر با 12 است و درنهایت با 10 جمع و جواب نهایی 22 میشود که به ترتیب زیر انجام میشود. اعدادی که بهصورت متفاوتی از بقیه نمایش داده شدهاند، نتیجۀ محاسباتی در خط بالاتر هستند.
8 + 9 – 4 * 2 + 6 / 2 + 10 =
8 + 9 – 8 + 6 / 2 + 10 =
8 + 9 – 8 + 3 + 10 =
17 – 8 + 3 + 10 =
9 + 3 + 10 =
12 + 10 =
22
نتیجۀ محاسبات زیر چیست:
2 + 3 + 4
2 * 3 * 4
2 * 3 * 4 – 2 - 3 – 4
2 + 3 + 4 + 2 * 3 * 4
10 + 2 – 2 * 6 + 3 * 4 / 2
6 * 3 * 2 – 100 / 10 * 2 + 10 – 26
100 / 5 / 4 + 5 * 9
استفاده از پرانتز برای جا به جا کردن تقدم ها
برای جابهجایی تقدمها یا برای خوانایی بیشتر میتوانیم از پرانتز استفاده کنیم. در این حالت پرانتز تقدم بالاتری در مقایسه با همۀ این عملگرها دارد، یعنی ابتدا عبارات داخل پرانتز محاسبه میشوند.
دقت کنید همانطور که گفته شد، این روش دقیق نیست به این معنی که نمیتوان همیشه اول عبارات داخل پرانتز را محاسبه کرد و این روش فقط برای عباراتی که عملوندهای عددی دارند و عملگرهایی که در جدول بالا آمده است، شامل میشوند، درست کار میکند.
دو عبارت زیر با هم برابر هستند:
8 + 9 – 4 * 2 + 6 / 2 + 10
8 + 9 – (4 * 2 ) + (6 / 2 ) + 10
اما عبارت دوم خواناتر است و راحتتر و سریعتر میتوان متوجه تقدم عملگرها شد.
همانطور که گفته شد، با استفاده از پرانتز میتوانیم تقدمها را جابهجا کنیم. در مثال زیر
8 + (9 – 4 ) * (2 + 6 ) / 2 + 10
نتیجۀ محاسبات برابر با 38 است.
محاسبات به شکل زیر است:
از سمت چپ شروع میکنیم و ابتدا محاسبات داخل پرانتزها را انجام میدهیم. یعنی ابتدا (4 - 9) و سپس (6 + 2) انجام میشود. که به ترتیب برابر با 5 و 8 می شوند. سپس 8 * 5 محاسبه میشود (چون در عبارت 2 / 8 * 5 هر دو عملگر اولویت یکسانی دارند، پس باید عملگر سمت چپ را ابتدا اعمال کنیم) که برابر با 40 است، آنگاه 2 / 40 میشود یعنی 20، سپس 20 + 8 میشود و درنهایت با 10 جمع میشود و نتیجۀ محاسبات برابر با 38 میشود که بهترتیب زیر انجام میشود. اعدادی که بهصورت متفاوتی از بقیه نمایش داده شدهاند، نتیجۀ محاسباتی در خط بالاتر هستند.
8 + (9 – 4 ) * (2 + 6 ) / 2 + 10 =
8 + 5 * (2 + 6 ) / 2 + 10 =
8 + 5 * 8 / 2 + 10 =
8 + 40 / 2 + 10 =
8 + 20 + 10 =
28 + 10 =
38
نتیجۀ محاسبات زیر چیست:
(10 + 4) * 2 - 6 / 3
20 / (3 + 2) % 2
25 + (16 - 3 * 2) / 5