عملگرهای محاسباتی ، ثابت ها:
درس دوم
در این قسمت از آموزش دوره مقدماتی، با عملگرهای محاسباتی (Arithmetic Operations) آشنا می شویم. عملگرهایی مثل + ، – ، * ، / ، % ، ++ ، — جزو عملگرهای محاسباتی هستند.
به عنوان مثال:
❓ مسئله شماره 1 :
برنامه بنویسید که یک ورودی از کاربر گرفته، آن را بعلاوه 2 کند و در خروجی نمایش دهد.
اینک کدنویسی را شروع می نماییم.
وارد برنامه شده و سند جدید بسازید، این سری گزینه Expert Advisor (template) را انتخاب کنید.
نام کلاس را تایپ و next را کلیک کنید.
مرحله بعدی را بدون تغییر next بزنید.
مراحله بعدی را نیز با انتخاب finish به اتمام برسانید. (تمام موارد در آینده یک به یک توضیح خواهد داد.)
اینک ساختار اولیه شکل گرفت.
در قدم اول گرفتن مقداری از فضای کاربر می باشد. از گزینه extern استفاده کنید .
سپس دیتا تایپ int را قرار دهید نام آن را به عنوان مثال x انتخاب کنید. به آن مقدار ندهید. در مرحله دوم x=x+2; را تایپ کنید تا دو مقدار به متغیر اضافه بشود. در مرحله بعدی در Comment دستور را با استفاده از فرمول روبه رو نمایش دهید.
;Comment (x)
در آخر Compile را کلیک کنید. در قسمت گزارش نباید هیچ اخطاری نمایش شود.
وارد برنامه شوید و نام کلاس تعریف شده را داخل فضای مشکی رنگ درگ کنید.
با درگ کردن پوشه نام کلاس به داخل فضای برنامه کادر Expert – class2 نمایش می شود. می توانید از سربرگ inputs در قسمت value مقدار موردنظر را قرار دهید. به عنوان مثال عدد 20 را وارد نمایید. اما باید مقدار 22 را نمایش دهد چرا که مقدار به علاوه 2 تعریف شده.
همانگونه که مشاهده می کنید مقدار 22 نمایش داده شد.
چنانچه مایل نباشید سایر افراد نوع متغیر تعریف شده را در پنجره Expert ببیند می توانید مراحل زیر را دنبال کنید.
وارد قسمت کدنویسی شوید و روبه روی کد ; extern int x دوتا اسلش // قرار دهید و نام دلخواه را بنویسید به عنوان مثال: number 1 سپس Compile را کلیک کنید.
(extern int x; //number 1)
مشاهده می کنید که متغیر نامعلوم و تنها نام تعریف شده نمایش می شود.
اینک با قرار دادن متغیر در قسمت value دستور درخواستی اجرا خواهد شد. مثلا با قرار دادن مقدار 25 در برنامه عدد 27 نمایش می شود زیراکه دستور x تعریف شده به علاوه 2 بوده است.
ثابت ها:
به مقدار ذخیره شده ای ثابت گفته می شود که در طی اجرای برنامه قابل تغییر نباشد. برای اعمال دستور از کلید const استفاده می شود. به عنوان مثال:
; Const int num=15
اگر num2++; را وارد و compile را انتخاب کنید یک پیام خطا ظاهر می شود. که متغیر num2 در خط22 قابل تغییر نیست.
شیوه دوم استفاده از ثابت ها اینکه const را بعد از int بیاورید به عنوان مثال:
; Int const num=15
برای اینکه از کاربر بگیرید از کلمه کلیدی input استفاده نمایید.
دلیل نمایش اخطار این است که کلمه کلیدی input در طول برنامه مقادیر آن قابل تغییر نمی باشد.
❓ مسئله شماره 2 :
برنامه بنویسید که دو عدد از کاربر گرفته و چهار عمل (+ – * / ) را انجام داده و در خروجی نمایش دهد.
مانند مسئله پیشین ابتدا مراحل پاسخ را بررسی کنید. دو عدد به نام متغیر x y از کاربر بگیرید.
برای اینکه بتوانید حاصل جمع x y را داشته باشید متغیر دیگری به نام SUM بسازید.
متغیر SUB جهت حاصل منها ، متغیر MUL جهت حاصل ضرب و متغیر DIV جهت حاصل تقسیم بسازید.
برای مقداردهی SUM=X+Y ، SUB=X-Y ، MUL=X*Y ، DIV=X/Y قرار دهید.
سپس 4 متغیر را در دستور کامنت نمایش دهید.
اسکریپت را باز کرده و دو متغیر بالا را مطابق تصویر زیر بسازید.
نکته شایان ذکر این است اگر دو int را تقسیم بر هم بکنید جواب int خواهد بود. یعنی به طور مثال اگر 13 را تقسیم بر 2 بکنید جواب آن 6.5 خواهد بود اما چونکه دو int را تقسیم کرده اید جواب آن عدد اعشاری از بین خواهد رفت و تنها عدد 6 در متغیر بعدی ذخیره خواهد شد.
برای جلوگیری از چنین خطای به اصطلاح منطقی ، بایست یکی از دو متغیر int را به double تغییر دهید. (خطای منطقی: یعنی برنامه کار خواهد کرد اما به جواب مطلوب نخواهید رسید.)
اینک متغیرها را قرار دهید.
Compile را کلیک کرده و نباید خطایی مشاهده گردد.
در تابع onstsrt شروع به نوشتن متغیرها کنید.
سپس در دستور کامنت متغیرها را بسازید و Compile را کلیک کنید.
اسکریپت برعکس اندیکاتور و اکسپرت پنجره متغیرها و پنجره پارامترها را نمایش نمی دهد. برا نمایش آن از دستور #property استفاده کنید.
به عنوان مثال:
property script_show_inputs#
بدون کاما می باشد. دکمه Compile را کلیک کنید. اینک با دستور وارد شده پنجره پارامترها را خواهید دید. وارد پارامترها شوید و نام پوشه را به داخل برنامه درگ کنید.
با توجه به فلش سبز رنگ سربرگ inputs را کلیک کنید و قسمت value مقداری را وارد کنید. اعدادی را خواهی دید که نامفهوم و پشت سرهم قرار دارند.
برای حل این مشکل باید در محیط کدنویسی مراجعه کنید.
چنانچه بین دستورهای comment(sum,sub,mul,div) فاصله قرار دهید و بار دیگر در چارت اجرا کنید مشکل برطرف نمی شود. راه حل آن این است که بین متغیرها رشته تعریف کنید.
به عنوان مثال:
comment(sum,” ”,sub,” ”,mul,” ”,div)
برنامه بار دیگر اجرا کنید. و در قسمت value مقداری را وارد کنید.
اگر بخواهید مقدارها در خطوط زیر هم قرار بگیرند کافی در قسمت کدنویسی به جای فاصله \n را قرار دهید.
به عنوان مثال:
comment(sum,” \n”,sub,” \n”,mul,” \n”,div)
دکمه Compile را کلیک و وارد برنامه شوید.
اگر بخواهید دستور print را خط به خط کنید باید برای هر متغیر یک دستور پرینت قرار بدهید به عنوان مثال:
;Print(sum)
;Print(sub)
;Print(mul)
;Print(div)
دکمه Compile را کلیک و وارد برنامه شوید.
منبع : کتاب آموزش زبان MQL (دوره مقدماتی)
مدرس: استاد حسین احمدی
پاسخها