در آموزش قبلی با عملگرهای VBA آشنا شدیم. در این بخش از آموزش های رایگان وی بی ای مفهوم اولویت عملگرها در VBA و تاثیر آن بر محاسبات را با بررسی می نماییم.
تعریف
اولویت عملگرها در ریاضی مجموعه از قوانین تعیین شده است که مشخص می نماید هنگام ارزیابی یک عبارت ریاضی کدام عملگر باید زودتر انجام بشود.
مثال
برای درک بهتر مفهوم اولویت عملگرها عبارت ریاضی زیر را در نظر بگیرید.
x = 12 × 2 + (1 + 5) ÷ 2
اگر بخواهیم جواب این عبارت ریاضی را از چپ به راست محاسبه نماییم، جواب 15 خواهد بود.
در صورتی که اگر بخواهیم همین عبارت را با در نظر گرفتن اولویت عملگرها محاسبه نماییم جواب 27 خواهد گردید.
علت این است که قواعد مربوط به اولویت عملگرها بر روی ترتیب محاسبه عملگرها تاثیر گذاشته و محاسبات را تغییر می دهد.
اجازه بدهید عبارت ریاضی بالا را مرحله به مرحله با هم تجزیه و تحلیل نماییم.
مرحله اول
عبارت داخل پرانتزها (1 + 5)
قبل از همه عملگرها اجرا می شود و بنابراین عبارت ریاضی ما به شکل زیر تغییر خواهد یافت.
x = 12 × 2 + 6 ÷ 2
مرحله دوم
حالا سه عملگر ×، + و ÷ در عبارت ما باقی مانده است. ضرب و تقسیم اولویت بالاتری نسبت به جمع و تفریق دارند بنابراین ضرب و تقسیم در عبارت بالا قبل از جمع محاسبه خواهند گردید.
از آنجایی که ضرب و تقسیم دارای اولویت یکسان هستند عملگری که در سمت چپ قرار گرفته است ابتدا محاسبه می شود. بنابراین ضرب ابتدا محاسبه شده و عبارت به شکل زیر تغییر می یابد.
x = 24 + 6 ÷ 2
مرحله سوم
در این مرحله از بین عملگرهای تقسیم و جمع، عملگر تقسیم زودتر محاسبه شده و عبارت به شکل زیر تغییر می یابد.
x = 24 + 3
حال می توان با توجه به اینکه عملگر جمع آخرین عملگر عبارت می باشد، حاصل عبارت را که 27 می باشد را محاسبه نمود.
اولویت عملگرها در VBA
در VBA و سایر زبان های برنامه نویسی نیز مشابه ریاضی، وقتی که چندین عملگر در یک عبارت بصورت همزمان ظاهر می شوند، عملگرها بر طبق یک ترتیب از پیش تعیین شده محاسبه می شوند.
در VBA عملگرهای ریاضی و منطقی طبق جدول زیر سنجیده می شوند:
ریاضی ( Arithmetic ) | مقایسه ای ( Comparison ) | منطقی ( Logical ) |
توان ( ^ ) |
تساوی (= ) |
Not |
منفی ( - ) |
نابرابری (<> ) |
And |
ضرب و تقسیم ( * و/ ) |
کوچکتر از (< ) |
Or |
تقسیم عدد صحیح ( \ ) |
بزرگتر از (> ) |
Xor |
باقیمانده تقسیم ( Mod ) |
کوچکتر یا مساوی (<= ) |
Eqv |
جمع و تفریق ( + و - ) |
بزرگتر یا مساوی (>= ) |
Imp |
ترکیب رشته ای ( & ) |
Like, Is |
ملاحظات در خصوص اولویت عملگرها
۱- اولویت گروه عملگرها
وقتی یک عبارت شامل بیش از یک گروه عملگر باشد، عملگرهای ریاضی ابتدا، سپس عملگرهای مقایسه ای (رابطه ای) و در نهایت عملگرهای منطقی سنجیده می شوند.
۲- عملگرهای با اولویت یکسان
وقتی در یک عبارت عملگرهایی با اولویت یکسان ظاهر شوند، عملگری اولویت بالاتری خواهد داشت که زودتر در سمت چپ ظاهر شده باشد.
بعنوان مثال وقتی یک عبارت شامل ضرب و تقسیم با هم باشد، اولویت عملگرها از سمت چپ به راست سنجیده می شود. این موضوع در مورد جمع و تفریق و سایر عملگرهای با اولویت یکسان نیز صادق می باشد.
۳- اولویت یکسان عملگرهای مقایسه ای
همه عملگرهای مقایسه ای (رابطه ای) اولویت یکسان دارند، این بدین معناست که این عملگرها بر اساس ترتیبی که از چپ به راست در یک عبارت ظاهر می شوند سنجیده خواهند شد.
۴- پرانتزها
پرانتزها می توانند برای لغو قواعد مربوط به اولویت عملگرها و تحمیل سنجش زودتر از موعد بخش یا بخش هایی از عبارت استفاده شوند.
عملیات داخل پرانتز ها همیشه زودتر از عملیات خارج از پرانتز سنجیده می شوند. عملیات داخل پرانتز به هر حال تابع اولویت عملگرها خواهد بود.
۵- سایر ملاحظات در خصوص عملگرها
- عملگر ترکیب رشته ای
&
یک عملگر ریاضی نمی باشد، اما در اولویت عملگرها بعد از عملگرهای ریاضی و جلوتر از عملگرهای مقایسه ای (رابطه ای) سنجیده می شود.
- عملگر Like با وجودی که یک عملگر تطبیق الگو می باشد با همه عملگرهای مقایسه ای (رابطه ای) حق تقدم یکسانی دارد.
- عملگر Is یک عملگر مقایسه مرجع اشیاء می باشد. این عملگر دو شیء یا مقدار آن ها را مقایسه نمی کند و فقط بررسی می نماید که تعیین شود که آیا مرجع دو شیء مورد مقایسه به یک شیء واحد اشاره دارد یا خیر.
منبع
بیشتر بخوانید
توابع توکار VBA | لیست کامل توابع داخلی در ویژوال بیسیک
عملگرهای VBA | انجام عملیات روی داده ها و ایجاد عبارت ها
حلقه در VBA | ایجاد حلقه برای تکرار دستورات در ویژوال بیسیک
کدهای VBA | آشنایی با کدها و دستور زبان برنامه نویسی VBA
دستور IF | اجرای مشروط کد با استفاده از عبارت های شرطی و منطقی
آرایه در VBA | آرایه ها و کاربرد آن ها در برنامه نویسی
میدان دید متغیر در VBA | نحوه دسترسی به متغیرها در قسمت های مختلف پروژه