کدنویسی در گیم میکر-سطح مبتدی-قسمت یازدهم : قانون تقدم عملگرها

کدنویسی در گیم میکر-سطح مبتدی-قسمت یازدهم : قانون تقدم عملگرها

قانون تقدم عملگرها
در قسمت قبل کدنویسی در گیم میکر،پنج عملگر اصلی در زبان برنامه نویسی گیم میکر و دیگر زبان های برنامه نویسی را شناختیم. در این درس با قانون بسیار مهمی در رابطه با این عملگرها آشنا می شویم که رعایت نکردن آن در اغلب موارد موجب بروز مشکل در کار کدنویس های مبتدی می شود. بنابراین بیایید با این قانون کلی که به نام قاعده تقدم عملگرها معروف است آشنا شویم.
 این قانون به این موضوع بسیار مهم می پردازد که زمانی که در یک عبارت بیش از دو عملگر وجود دارند، اولویت محاسبه را باید به کدام عملگر داد. برای آنکه اهمیت این موضوع را بهتر درک کنید، به عبارت زیر توجه کنید:
X = 2 + 3 * 10;
اگر بخواهیم مقدار X در این عبارت را بدانیم٬ فرض کنید ابتدا حاصل جمع را محاسبه کنیم و سپس حاصلضرب را به دست آوریم. در نتیجه مقدار X برابر  با 50 خواهد بود. اما اگر برعکس عمل کنیم و ضرب را بر جمع مقدم بدانیم، در نتیجه مقدار X برابر با 32 خواهد بود. بنابراین همانطور که می بینید این که کدام عملگر را بر دیگری اولویت بدهیم تفاوت قابل توجهی در نتیجه محاسبات خواهد داشت. اما کدام روش درست است؟ جواب این سوال را باید از قانون تقدم عملگرها به دست آورد:

قانون تقدم عملگرها

قانون ۱: همیشه عملگری که داخل پرانتز قرار دارد٬ نسبت به بقیه عملگرها  اولویت دارد.
قانون ۲: بعد از عملگرهای داخل پرانتز٬ اولویت بعدی به عملگرهای ضرب و تقسیم اختصاص دارد. عملگرهای ضرب و تقسیم نسبت به هم اولویت یکسان دارند.
قانون ۳: بعد از محاسبات داخل پرانتز و ضرب و تقسیم٬ اولویت آخر به عملگرهای جمع و تفریق اختصاص پیدا می کنند.جمع و تفریق نسبت به هم اولویت یکسان دارند.
حالا با توجه به قوانین تقدم بیایید با هم چند مثال را بررسی کنیم:
مثال اول:
y = (3 + 6) * 10;
بر طبق قانون تقدم ابتدا عملگر داخل پرانتز محاسبه می شود و پس از آن نوبت به عملگر بیرون از پرانتز یعنی ضرب می رسد. در نتیجه مقدار y برابر با 90 خواهد بود.
حالا اگر عبارت بالا را دوباره بنویسیم و در آن جای پرانتز را تغییر بدهیم تا به صورت زیر در آید:
مثال دوم:
y = 3 + (6 * 10);
بر طبق قانون تقدم ابتدا ۶ در ۱۰ ضرب شده و حاصل با ۳ جمع میشود که نتیجه ۶۳ خواهد بود.
مثال سوم:
X = 5 + 4 * 2;
همانطور که می بینید در این عبارت پرانتز نداریم؛ در نتیجه  به سراغ قانون دوم تقدم یعنی اولویت ضرب و تقسیم می رویم. برطبق این قانون ابتدا ۴ در ۲ ضرب شده و نتیجه با ۵ جمع خواهد شد.بنابراین مقدار X برابر با ۱۳ است. حالا اگر جای دو عملگر را تغییر دهیم:
مثال چهارم:
 X = 5 * 4 + 2;
بر طبق توضیحات داده شده نتیجه برابر با ۲۲ خواهد بود.
مثال پنجم:
X = 36-16/(32/4);
بر طبق قانون تقدم ابتدا به سراغ عملگر درون پرانتز می رویم.حاصل محاسبه درون پرانتز ۸ است.سپس از میان عملگرهای بیرون از پرانتز٬ تقسیم نسبت به تفریق اولویت دارد. در نتیجه مقدار X برابر با  2-36 یعنی ۳۴ خواهد بود.
نکته مهم: زمانی که در یک عبارت عملگرهای دارای اولویت برابر داریم، ترتیب محاسبات از چپ به راست خواهد بود.
مثال ششم:
X=30/5*6;
در این عبارت اولویت تقسیم و ضرب یکسان است. در نتیجه با توجه به نکته گفته شده محاسبات را از سمت چپ به راست انجام می دهیم و نتیجه ۳۶ خواهد بود.
مثال هفتم:
y=5+(6-4)*7/(1*7);
مثل همیشه اولویت اول عملگرهای داخل پرانتز هستند. بنابراین با محاسبه عملیات داخل پرانتزها(ابتدا پرانتز اول از چپ)، عبارت ما به شکل زیر در می آید:
y=5+2*7/7;
حالا عملگرهای ضرب و تقسیم اولویت بیشتری نسبت به عملگر جمع دارند. از بین این دو نیز اولویت ضرب چون از سمت چپ تقدم دارد، ابتدا محاسبه می شود و پس از آن نوبت به تقسیم می رسد.در نتیجه عبارت ما به صورت زیر در می آید:
Y=5+2;
در نتیجه مقدار y برابر با ۷ خواهد بود.
به عنوان آخرین نکته از این درس باید بگوییم که قرار نیست در زمان کدنویسی این محاسبات را شما به عنوان برنامه نویس انجام دهید و تقدم ها را یکی یکی محاسبه وحاصل را به ترتیب به دست آورید. زیرا تمامی این محاسبات و سنجش اولویت ها به عهده رایانه است و شما نقشی در آن ندارید. اما هدف از این آموزش این است که توجه داشته باشید که رایانه شما تنها کدهایی که توسط شما نوشته شده است را به اجرا در می آورد.در نتیجه برنامه نویس باید بداند که چگونه برای پیاده سازی ایده خود در محیط یک بازی کدنویسی کند. زیرا همان طور که در ابتدای این درس گفته شد، موارد بسیاری پیش می آید که برنامه نویس مبتدی کدی را نوشته است که به دلیل رعایت نکردن همین قوانین ساده به نتایج نادرست یا غیرمنتظره منجر می شود. بنابراین در صورتی که با روش کار رایانه ها در تجزیه و تحلیل داده ها آگاهی داشته باشید، می توانید آسانتر به اهداف خود در پیاده سازی یک موضوع خاص در بازی تان بپردازید و همچنین در صورت بروز خطا ، با سرعت بیشتری مشکل به وجود آمده را رفع کنید.
در درس بعد تصمیم داریم نگاه عمیق تری به بحث متغیرها در گیم میکر بپردازیم. پس لطفاً سری آموزش برنامه نویسی در گیم میکر را دنبال کنید.

4 دیدگاه ها

  1. farhan گفت:

    ممنون.به نکته های مفیدی اشاره کردید.

  2. Yasin Game گفت:

    ادامه بدید عالیه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *