پرش به محتوا

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

از ویکی‌پدیا، دانشنامهٔ آزاد

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

عملوندها اشیائی هستند که عملگرها طبق آنها عمل می کنند. اینها شامل اعداد واقعی و سایر ثابت‌ها و همچنین شناسه‌ها (نام‌ها) است بسته به پیچیدگی و قابلیت زبان مورد استفاده و همچنین زمینه استفاده ممکن است هر چیزی را از متغیرهای عددی ساده گرفته تا ساختارهای مجتمع پیچیده و اشیاء را نشان دهند، یک نوع خاص از عملوند، گروه پرانتزی است. یک عبارت داخل پرانتز معمولاً به صورت بازگشتی ارزیابی می شود تا در مرحله بعدی ارزیابی به عنوان یک عملوند تنها در نظر گرفته شود.

به هر عملگر یک موقعیت، تقدم و یک ارتباط داده می شود. تقدم عملگر عددی است (از زیاد به کم یا بالعکس) که تعیین می کند کدام عملگر، یک عملوند را که میان دو عملگر با تقدم (یا اولویت) متفاوت احاطه شده است بگیرد. عمل ضرب معمولاً اولویت بالاتر نسبت به عمل جمع دارد، برای مثال ، 3+4×5 = 3+(4×5) ≠ (3+4)×5

ارتباط یک عملگر

[ویرایش]

ارتباط یک عملگر تعیین می کند زمانی که یک عملوند میان عملگر هایی با تقدم یکسان باشد چه اتفاقی بیافتد ، همانطور که در 1-2-3 می بینید: یک عملگر می تواند چپ انجمنی ، راست انجمنی، یا غیر انجمنی باشد. عملگرهای چپ انجمنی به ترتیب از چپ به راست برای عملوندها اعمال می شوند در حالی که برای عملگرهای راست انجمنی برعکس می باشد. عملگرهای اصلی حسابی معمولاً همگی چپ انجمنی هستند، که به این معنی است که 1-2-3 = (1-2)-3 ≠ 1-(2-3). این برای اپراتورهای بالاتر صدق نمی کند. برای مثال، توان در ریاضیات معمولا راست انجمنی است، اما در بعضی از برنامه های کامپیوتری مثل اکسل به صورت چپ انجمنی پیاده سازی می شود. در زبان‌های برنامه‌نویسی که تخصیص به عنوان یک عملگر پیاده‌سازی می‌شود، آن عملگر اغلب اوقات با راست ارتباط دارد . که در این صورت، یک عبارت مانندa := b := c معادل است باa := (b := c) به این معنی است که مقدار c به b کپی می شود و سپس به a کپی می شود. عملگر غیرانجمنی نمی تواند برای عملوندهایی با عملگرهایی با اولویت یکسان رقابت کند. برای نمونه عملگر هموندی:- غیر انجمنی است، بنابراین عبارت هایی مانندa :- b :- c خطاهای نحوی هستند. عملگرهای پیشوندی تک عملوندی مثل - (نقیض) یا sin (تابعی مثلثاتی سینوس) معمولاً عملگرهای پیشوند انجمنی هستند. زمانی که بیشتر از یک پیشوند یا عملگر پسوندی با اولویت یکسان مقدم بر یک عملوند یا بعد از آن قرار می گیرد، نزدیکترین عملگر به عملوند اول می شود. برای مثال

sin x = −(sin x)−، و sin -x = sin(-x).


زبان‌های ریاضی‌گرا (برای مثال ماشین‌حساب‌های علمی ) بعضی وقت ها ضرب ضمنی را با اولویت بیشتر از عملگرهای پیشوندی (مانند sin) مجاز می‌کنند، به‌طوری‌که برای مثال sin 2x+1 = (sin(2x))+1.[نیازمند منبع]


با این حال، عملگرهای پیشوندی (و پسوندی) لزوماً تقدم بیشتری نسبت به همه عملگرهای هموندی ندارند. به عنوان مثال، برخی از زبان های برنامه نویسی (فرضی) ممکن است عملگری به نام sin با اولویت کمتر از عمل ضرب اما بالاتر از عمل جمع داشته باشند. در چنین زبانی، sin 2·x+1 = sin(2·x)+1 به جای (sin 2)·x+1، همانطور که معمولاً صحیح است، صحیح است.


قوانین ارزیابی عبارت ها معمولاً سه دسته هستند:

1.هر عبارت فرعی داخل پرانتز را به‌عنوان یک عملوند واحد با ارزشیابی بازگشتی در نظر بگیرید (هر چند ممکن است انواع پرانتز با معنای متفاوت وجود داشته باشد).

2.عملوندها را به عملگرهایی با اولویت بالاتر قبل از آنها که اولویت کمتری دارند ارتباط دهید.

3.برای اولویت یکسان، عملوندها را با توجه به ارتباط عملگرها به ازتباط عملگرها متصل کنید.

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

[ویرایش]

ستفاده از انواع تقدم عملگر و ارتباط ها فقط یکی از روش های موجود است. با این حال، این کلی‌ترین راه نیست: این روش نمی‌تواند به یک عملگر در هنگام رقابت با «−» تقدم بیشتری نسبت به رقابت با «+» بدهد، در حالی که همچنان تقدم ها و ارتباط های معادل «+» و «−» را می‌دهد. همچنین مدل های تعمیم یافته تری نیز وجود دارد و این تنها شکل برای تعمیم نماد ها نیست.