![]() |
![]() |
|
|
|
#1
|
|
Senior Member
|
آموزش گام به گام زبان MQL
0
__________________
deadliness amuse me |
|
|
| 30 تشکر کننده از ReSeller: |
|
|
#2
|
|
Senior Member
|
0
بر اساس پيشنهاد و درخواست بعضي از دوستان جهت يادگيري زبان MQL ، تصميم به ايجاد يك تاپيك مجزا گرفتم و هدف آموزش اين زبان از پايه و براي دوستان بسيار مبتدي ميباشد كه البته با گذشت زمان پيشرفته خواهند شد. از تمامي دوستان عزيز تقاضا ميكنم كه تمامي سوالات مربوط به درسها را در تاپيكي به غير از اين تاپيك مطرح كنند و از ارسال هرگونه پستي در اين تاپيك پرهيز كنند. توصيه هاي من: 1-برنامه نويسي نيازمند تمرين مداوم است پس از تمرين غافل نشويد. 2-هر درس را بيش از يكبار بطور دقيق مطالعه فرماييد. 3- به مثالهاي ذكر شده بسنده نكنيد و خودتون مثال بسازيد. 4-برروي كاغذ تمرين كنيد كه باعث يادگيري سريعتر شما ميشود. سعي من در آموزش اين زبان، به صورت بسيار عاميانه و قابل درك براي دوستان تازه كار ميباشد. پس پيشاپيش از تمام اساتيد ادبي و برنامه نويس حاضر بابت نكات احيانا اشتباه انشائي عذرخواهي ميكنم. ضمنا اميدوارم كه دوستان خواننده اين تاپيك، حداقل با وارد شدن به محيط برنامه نويسي MQL آشنا باشند چون من از اين بخش رد ميشم. زياد اهل مقدمه نويسي نيستم پس به اميد خدا درس اول را به زودي شروع ميكنيم. با تشكر پيشاپيش از همه دوستان بابت همكاري با اين تاپيك و با آرزوي توفيق...
__________________
deadliness amuse me |
|
|
|
|
#3
|
|
Senior Member
|
0
پس از باز كردن محيط كاري جديد در MQL با چند قسمت آماده روبرو ميشويم. كه در اين درس به نحوه كار كرد آنها ميپردازيم. به قسمتهاي طوسي رنگ كه اصلا اجرايي هم نيستند و نقشي در برنامه ما ندارند فعلا كاري نداريم و بعدا كاربرد آنها را با هم بررسي خواهيم كرد. به گزينه زير هم توجه نكنيد و آنرا به حال خود رها كنيد تا در درسهاي آينده با آن برخورد كنيم. كد:
#property... كد:
int init()
{
...
...
}
مهم:دقت كنيد كه اين تابع فقط يكبار و آنهم در هنگام بار گذاري اجرا ميشود و بعد از آن ديگر هيچ نقشي در برنامه ما ندارد. در آينده بيشتر با كارايي آن آشنا ميشويد ولي اجازه بديد كه يك مثال براي شما بزنم كه از الآن اهميت آنرا بدانيد. مثلا شما يك انديكاتور نوشته ايد و ميخواهيد آنرا بر روي چارت نصب كنيد و انديكاتور شما موظف است كه خطهايي را بر روي چارت ترسيم كند. حال فرض كنيد كه قبلا يك انديكاتور ديگر بر روي چارت بوده و خطها و نوشته هاي آن هنوز بر روي چارت باقي است. و شما نياز داريد كه هنگام الصاق انديكاتور جديد، چارتي عاري از هرگونه خط و علامت و نوشته داشته باشيد. حال ميتونيد دستورات پاكسازي چارت را در همين تابع انديكاتور خود اضافه كنيد و هنگامي كه انديكاتور را الصاق ميكنيد قبل از هر چيز، چارت شمارا پاكسازي كند. همانطور كه دقت كرديد عمليات پاكسازي فقط يكبار مد نظر شما است و دوست نداريد كه مرتب چارت شما پاك شود. بنا براين اهميت اين تابع در اجراي يكباره دستورات و آنهم هنگام بارگذاري مشخص ميشود. البته عمليات پاكسازي تنها وظيفه اين تابع نيست و بعدها با نحوه كاركرد اين تابع و وظايف آن بيشتر آشنا خواهيد شد.
__________________
deadliness amuse me |
|
|
| 10 تشکر کننده از ReSeller: |
|
|
#4
|
|
Senior Member
|
0
كد:
int deinit()
{
...
...
}
همان مثال قبلي براي اين تابع نيز قابل بيان است يعني عمليات پاكسازي چارت و يا حافظه را توسط اين تابع و هنگامي كه كارتان با انديكاتور يا اكسپرت مبروطه تمام است و ميخواهيد آن را از چارت حذف كنيد، انجام ميدهد. در آينده نزديك حتما بيشتر يا اين توابع آشنا خواهيد شد. و اما رسيديم به تابع اصلي برنامه: كد:
int start()
{
...
...
}
لطفا فعلا ذهن خود را از بابت int اول اين توابع و شكل كلي آنها خالي كنيد و سعي كنيد با درس پيش برويم و بعدا تمام اين سوالهاي ذهني شما پاسخ داده خواهد شد. خب تا اينجا با فرم كلي برنامه آشنا شديم و حالا ميخوايم يه كم كار عملي شروع كنيم كه من خودم اعتقادم به يادگيري بيشتر و بهتر از طريق كار عملي ميباشد. با آرزوي توفيق...
__________________
deadliness amuse me |
|
|
|
|
#5
|
|
Senior Member
|
0
با ساده ترين دستور متاتريدر شروع ميكنيم كه فرم كلي آن به صورت زير ميباشد. كد:
void Comment( ...) و البته بعد از تسلط شما به برنامه نويسي ميتونيد از اين دستور براي يافتن خطاهاي برنامه نيز استفاده كنيد. فعلا به گزينه Void توجه نكنيد كه بعدا مفصلا توضيح داده خواهد شد. نكته اينكه مطالب خام مورد نظر شما جهت چاپ بر روي چارت بايد بين 2 گيومه(" ") جهت چاپ قرار گيرند. يك محيط جديد از نوع انديكاتور در MQL باز كنيد و مثالها را با من دنبال كنيد. مثال: كد:
Comment("Hello Forex");
براي دوستاني كه نميدانند بدنه تابع ()start چي هست مثال زير گوياي كار است. كد:
int start()
{
Comment("Hello Forex");
return(0);
}
مهم: توجه كنيد كه هميشه آخرين دستور Comment در برنامه شما چاپ ميشود. يعني چي؟ به مثال زير توجه كنيد: كد:
int start()
{
Comment("Hello Forex");
Comment("How Are You?");
return(0);
}
حالا ميخواهيم كه يك نوشته در 2 خط چاپ شود چطور عمل كنيم؟ به مثال زير دقت كنيد: كد:
int start()
{
Comment("Hello Forex\n"+"How Are You?");
return(0);
}
خب در مثال بالا 2 نكته وجود داره كه خيلي ساده ميباشند. علامت + به عنوان يك چسب بكار رفته است و عبارت اول را به عبارت دوم چسبانده است. توجه كنيد كه اين علامت بايد خارج گيومه ها باشد. علامت n\ به معني ايجاد يك خط جديد است و به تابع Comment دستور ميدهد كه عبارتي كه بعد از اين علامت ميآيد در خط پايين تري چاپ شود. يه كم با اين تابع كار كنيد تا بيشتر با آن آشنا شويد. با آرزوي توفيق...
__________________
deadliness amuse me |
|
|
| 13 تشکر کننده از ReSeller: |
|
|
#6
|
|
Senior Member
|
0
كد:
Comment("Hello Forex\nHow Are You?");
همانطور كه مشاهده ميكنيد بعد از حذف انديكاتور از چارت، همچنان جمله هاي چاپ شده باقي ميمانند. حالا بايد نوشته ها بعد از حذف شدن انديكاتور از روي چارت پاك شوند. يادتون هست كه كدام تابع مسول اجراي فرامين هنگام پايان كار انديكاتور بود؟ درسته تابع ()deinit حالا ما جهت آشنايي بيشتر با اين تابع اقدام با پاكسازي چارتمون از نوشته ها ميكنيم. كد:
int deinit()
{
Comment("");
return(0);
}
نكته: دستور Comment پاك نميكند و فقط چاپ ميكند. اما ما با دستور بالا در حقيقت يك حرف فاصله چاپ كرده ايم كه جايگزين جمله هاي قبلي شده است. در پست بعدي كمي با متغير ها (Variables) آشنا خواهيم شد. با آرزوي توفيق...
__________________
deadliness amuse me |
|
|
| 13 تشکر کننده از ReSeller: |
|
|
#7
|
|
Senior Member
|
0
به عبارتي ساده تر ميشه گفت كه متغيرها نوع كوچكي از يك حافظه مجازي ميباشند كه تاوقتي يك برنامه فعال است، وجود دارند و قابل استفاده ميباشند. و به محض حذف و غير فعال شدن برنامه آنها نيز از بين ميروند. اولين و كارآمد ترين متغير int ميباشد كه مخفف كلمه integer و به معني عدد صحيح ميباشد. جهت يادآوري عرض كنم كه عدد صحيح شامل كليه اعداد منفي و مثبت و صفر ميباشد(... 0،1،2، 1-،2- ...) اين متغير حافظه كامپيوتر را به اندازه 2 بايت اشغال ميكند.(در آينده به مبحث مديريت حافظه خواهيم پرداخت) چگونه متغير عدد صحيح ايجاد كنيم؟ براي ايجاد يك متغير از نوع عدد صحيح بايد ابتدا از كلمه كليدي int استفاده كنيم و بعد اسم متغير خود را درج كنيم. نكته: تمامي خطوط برنامه شما به سميكلن ( ختم ميشوند به غير از توابع شرطي و حلقه ها و بعضي توابع ديگر كه با آنها آشنا خواهيد شد.مثال از ايجاد يك متغير عدد صحيح: كد:
int day; توصيه در مورد اسمگذاري متغير ها: 1- به هيچ عنوان نميتوانيد از كلمات كليدي متاتريدر جهت اسم يك متغير استفاده كنيد. 2-عدد و بعضي از علائم نميتوانند در اول اسم متغير استفاده شوند.(=،+،*،&،/،}،{،...) 3- سعي شود از اسم در خور استفاده از متغير استفاده شود كه بعدا در كدخواني خيلي راحت تر خواهند بود. به بعضي از موارد اشتباه در اسمگذاري ها دقت كنيد كه باعث بروز خطا در برنامه ميشوند: كد:
int Day; int 1day; int 123; int *star; مثال اول: كد:
int day1; int day2; كد:
int day1,day2; پس در يك خط ميشود كه تعدادي متغير از يك جنس داشت و آنها را با كاما (،) از هم سوا كرد. با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 10 تشکر کننده از ReSeller: |
|
|
#8
|
|
Senior Member
|
0
خيلي ساده است به مثال زير دقت كنيد: كد:
int day; day=23; مثال ديگر از شيوه مقدار دهي: كد:
int day=23; حالا ميخواهيم كه محتوي اين متغير كه شامل عدد 23 است را بر روي چارت نمايش دهيم. كد:
int day=23;
Comment("day="+day);
همانطور كه ديديد از يك چسب (+) براي پيوستن يك متغير ( متغيرها و ساير دستورات در گيومه نخواهند آمد. و گيومه تنها مختص جمله اي است كه دلخواه شما است و دوست داريد كه نمايش داده شود.) و يك عبارت، استفاده شده است. حال اگر بخواهيم به تنهايي اين متغير را نمايش دهيم: كد:
Comment(day); به مثال زير دقت كنيد: كد:
int day=23; day=24; درسته حاوي عدد 24 ميباشد. يعني day اول حاوي عدد 23 بوده اما در خط بعدي عدد 24 جايگزين آن شده است. كد:
int day=23; day=day+1; دقت كنيد كه در خط اول day حاوي عدد 23 بوده است و در خط دوم گفتيم كه متغير برابر است با محتواي متغير بعلاوه عدد يك. يعني 23 با 1 جمع شده است و در متغير ذخيره گشته. كد:
int first=2,second; second=first*2; Comment(first+"x2="+second); فكر كنم كه توضيحات لازم در رابطه با متغيرهاي عدد صحيح داده شد ولي اگر مطلب خاصي جا افتاده باشد حتما در درسهاي بعدي به آن اشاره خواهم كرد. فقط تمرين كنيد. تمام علائم رياضي را امتحان كنيد. اعداد مختلف را آزمايش كنيد. حتما به نتايج جالبي خواهيد رسيد. با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 8 تشکر کننده از ReSeller: |
|
|
#9
|
|
Senior Member
|
0
كد:
int start()
{
int first=2,second;
second=first*2;
Comment(first+"x2="+second);
return(0);
}
خب اجازه بديد يكم از متغيرها خارج بشيم و مبحث جالب شرطي ها را آغاز كنيم. به مثال زير دقت كنيد: اگر من بيش از صد ميليون تومان پول داشته باشم، خونه ميخرم. به اين ميگن يه جمله شرطي يعني خريد خانه وقتي انجام ميشود كه پول بيشتر از صد ميليون تومان باشد و تاوقتي كه پول كمتر از آن باشد خريد خانه انجام نخواهد شد. اجازه بديد كه اين مثال را به صورت رياضي بررسي كنيم. خريد خانه <---- (100000000<پول من)if وقتي به گزينه خريد خواهيم رسيد كه شرط داخل پرانتز درست (true) باشد. يعني پول من (كه همان متغير است) بزرگتر از صد ميليون تومان باشد. در برنامه نويسي هم دقيقا به همين صورت است و در بسياري از مواقع احتياج پيدا ميكنيم كه از شرط استفاده كنيم. مثلا بگيم اگر فلان انديكاتور توي اين شرايط قرار گرفت buy انجام بده و برعكس براي sell. به مثال زير دقت كنيد. كد:
int first=2;
if(first>5)
Comment("Hello");
به مثال زير دقت كنيد: كد:
int first=2;
if(first>0)
Comment("Hello");
مهم: علائمي كه در شرطها قابل استفاده هستند عبارتند از: == اين علامت به معناي شرط تساوي بكار ميرود. < اين علامت به عنوان شرط بزرگتري >اين علامت به عنوان شرط كوچكتري مثال: كد:
int first=2;
if(first==2)
Comment("Hello");
يك مقدار با اعداد و متغيرهاي مختلف تمرين كنيد تا به اميد خدا در پست بعدي به جزئيات بيشتري از شروط بپردازيم. با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 8 تشکر کننده از ReSeller: |
|
|
#10
|
|
Senior Member
|
0
مثال: كد:
int first=2,second=3;
if(first==second)
Comment("Equal");
نكته: به هيچ عنوان در پايان خط شرطي از سميكلن ";" استفاده نكيند كه باعث خطا در برنامه ميشود. حالا اجازه دهيد تا بحث را يه كم گسترده تر كنيم. با همان مثال بالايي كار را دنبال ميكنيم: اگر من بيش از صد ميليون تومان پول داشته باشم، خونه ميخرم. در غير اينصورت خانه اجاره ميكنم. در اين مثال همانطور كه ميبينيد اگر شرط دارا بودن پول درست باشد، خريد خانه انجام خواهد شد. و اگر درست نباشد اجاره خانه انجام خواهد شد. يعني در هر صورت ما يه كاري انجام ميدهيم چه پول داشته باشيم و چه نداشته باشيم اما نوع كار متفاوت خواهد بود. عين همين عمل در برنامه نويسي انجام ميشود. به مثال زير توجه كنيد: كد:
int first=2,second=3;
if(first==second)
Comment("Equal");
else
Comment("Not Equal");
نكته: هر if فقط حاوي يك else ميتواند باشد. و else تنها مربوط به آخرين if استفاده شده است. شما در يك برنامه ميتوانيد چندين if بدون else داشته باشيد اما نميتوانيد چندين else بدون if داشته باشيد. مثال: كد:
int first=2,second=3;
if(first>0)
Comment("Hello");
if(first==second)
Comment("Equal");
else
Comment("Not Equal");
همانطور كه ديديد else مربوط به آخرين if استفاده شده (شرط برابري) است و ربطي به اولين if ندارد. تمرين تمرين تمرين كنيد با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 8 تشکر کننده از ReSeller: |
|
|
#11
|
|
Senior Member
|
0
بعضي مواقع شما براي اجراي يك كار نياز به بيش از يك شرط داريد. به مثال زير توجه كنيد. اگر من كامپيوتر داشته باشم و اگر پول نيز داشته باشم، بنابراين فاركس كار خواهم كرد. يعني من وقتي به فاركس مشغول ميشوم كه هر دو گزينه پول و كامپيوتر را در اختيار داشته باشم. و اگر يكي از اين دو مهيا نباشد، كار كردن من در فاركس منتفي ميباشد. نكته: نكته اي كه من فراموش كردم در پست قبلي به آن اشاره كنم در مورد بدنه if ميباشد. اين بدنه ميتواند دستورات متعددي در خود جاي دهد كه با كروشه } در ابتدا و { در انتها مشخص ميگردد. البته براي اجراي يك دستور در بدنه if نيازي به استفاده از كروشه نداريد اما براي بيش از يك دستور و خط شما نيازمند به استفاده از كروشه خواهيد بود. كد:
int first=2,second=3;
if(first>0)
{
if(second<2)
{
Comment("Hello");
}
}
خوب دقت كنيد اگر محتوي متغير first در شرط اول درست نباشد يعني بزرگتر از صفر نباشد، برنامه ما هيچ وقت شرط به شرط دوم نميرسد كه اجرا كند. چون اجراي شرط دوم مستلزم صحت شرط اول است. حال كه شرط اول درست است و متغير first بزرگتر از صفر است برنامه به شرط دوم ميرسد. در شرط دوم اگر متغير second كوچكتر از 2 باشد، عبارت Hello چاپ ميشود. اما همانطور كه ديديد اين اتفاق نخواهد افتاد. چون بزرگتر از 2 ميباشد. حال اجازه بديد كد بالا را يكم ساده تر كنيم. مهم: از ديگر اجزاي شرط ميتوان به كلمات و و يا اشاره كرد. || به معني يا در برنامه نويسي ميباشد && به معني و در برنامه نويسي ميباشد. وقتي ما ميگيم كه اين شرط و آن شرط بايد برقرار باشد تا به نتيجه برسيم يعني هردو آنها ملزم به برقراري شرط هستند. اما وقتي ميگيم كه اين شرط يا آن شرط بايد برقرار باشد يعني يكي از شرطها براي نتيجه گيري كافي است. كد:
int first=2,second=3;
if(first>0 && second<2)
{
Comment("Hello");
}
كد:
int first=2,second=3;
if(first>0 || second<2)
{
Comment("Hello");
}
نكته: در پست قبلي درباره علائم رياضي مورد استفاده گفتم كه 2 مورد يادم رفت. 1- علامت كوچكتر مساوي : => اين علامت 2متغير را نسبت به هم از بابت اينكه اولي كوچكتر و يا مساوي با دومي باشد را چك ميكند. 2- علامت بزرگتر مساوي: =< اين علامت 2 متغير را نسبت به هم از بابت اينكه اولي بزرگتر يا مساوي با دومي باشد را چك ميكند. مثال: كد:
int first=2;
if(first>=2)
{
Comment("Hello");
}
تمرين تمرين... با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 7 تشکر کننده از ReSeller: |
|
|
#12
|
|
Senior Member
|
0
در این قسمت میخوام به بحث حلقه ها بپردازم. در بسیاری از مواقع شما به عنوان یک برنامه نویس ضرورت تکرار یکسری از دستورات را به صورت مکرر و پشت سر هم احساس میکنید. به 2 صورت میشه این کار را انجام داد. یکی اینکه کلیه دستورات را پشت سر هم بنویسید که همه آنها یکی پس از دیگری انجام شود. راه دیگر این است که یک سری از دستورات در یک حلقه قرار داده شود و آن حلقه وظیفه اجرای آن دستورات را به تعداد دفعات مشخص به عهده گيرد. فرق این دو روش: -در روش اول تعداد خطها بسیار زیاد میشود و حجم فایل شما را به حد زیادی افزایش میدهد. -در روش اول به علت بالا بودن تعداد خطها، احتمال اشتباه و خطای سیستم بالا میرود. -در روش اول وقت بیشتری صرف میشود. اولین حلقه ای میخواهیم به آن بپردازیم for میباشد.و شکل کلی آن به صورت زیر میباشد. (عبارت سوم;عبارت دوم;عبارت اول)for } .. .. { -عبارت اول یک متغیر است که مقداردهی میشود. یعنی نقطه شروع حلقه ما از مقدار اولیه همین متغیر یا عبارت اول است. -عبارت دوم که شرط توقف حلقه مااست. هر حلقه باید شامل یک شرط توقف باشد -عبارت سوم همان متغیر عبارت اول است که نسبت به شرط توقف یا نیاز برنامه نویس و برنامه، کاهش و یا افزایش میابد. مثال: كد:
int i;
for(i=0;i<=5;i++)
{
}
نکته: عبارت ++i کاملا با عبارت i=i+1 برابر میباشد. در مثال بالا حلقه ما با مقدار اولیه متغیر i که صفر میباشد کار خود را شروع میکند و قبل از اجرای دستورات و وارد شدن به بدنه حلقه، شرط توقف را چک میکند و اگر شرط درست بود به گردش ادامه میدهد. یعنی در اولین گردش i حاوی عدد صفر میباشد. وقتی که اولین گردش تمام تمام شد، یک واحد به مقدار i اضافه میشود و دوباره شرط توقف چک میشود.و بهمین ترتیب تا شرط توقف اشتباه باشد. یعنی مقدار i از عدد 5 بزرگتر شود. نکته:قرار دادن سمیکلن در بین عبارات الزامی است. اين بحث ادامه دارد... با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| 8 تشکر کننده از ReSeller: |
|
|
#13
|
|
Senior Member
|
0
كد:
int i;
for(i=0;i<=5;i++)
{
Comment(i);
Sleep(1000);
}
نکته: فانکشن Sleep برای مدت زمانی که در آن معرفی شده(میلی ثانیه) باعث توقف و استراحت اجرای کدها میشود که در اسکریپتها و اکسپرت در شرایط خاص کار میکند. اجازه بدید گریزی به اسکریپت بزنیم و نحوه کار حلقه for را در آنجا بررسی کنیم. از منوی File گزینه New سپس Script را انتخاب و Next را میزنیم بعد اسم اندیکاتور را مثلا Test1 قرار میدهیم و در آخر Finish را میزنیم و وارد محیط متاادیتور میشویم. همان مثال بالا را در اسکریپت کپی کنید(در بدنه start). امیدوارم که از پس این کار دیگه بتونید بر آیید. با این حال چون هنوز شک دارم که دوستان تمرین کرده باشند، دوباره مثال میزنم. كد:
int start()
{
int i;
for(i=0;i<=5;i++)
{
Comment(i);
Sleep(1000);
}
return(0);
}
0 1 2 3 4 5 شاید بعضی از دوستان گمان میکردند که این حلقه فقط 5 بار گردش دارد اما لازم به ذکر است که شروع ما از صفر میباشد و تا عدد 5 ادامه دارد که میشود 6 بار گردش. سعی کنید که دقیقا با مراحل حلقه آشنا شوید. عددهای مختلف بکار بگیرید. شرط توقف را تغییر دهید. از مراحل کاهشی استفاده کنید. مثال دیگر: كد:
int i;
for(i=7;i>=3;i--)
{
Comment(i);
Sleep(1000);
}
نکته:عبارت --i برابر با عبارت i=i-1 میباشد. تقریبا همه چیز دررابطه با for گفته شد به غیر از یک مبحث تخصصی که در آینده به آن خواهم پرداخت. امیدوارم که از تمرین فرار نکنید. فقط سعی کنید حلقه شما حتما از شرط استاپ درستی برخوردار باشد تا متاتریدر شما هنگ نکند. یک مثال اشتباه از حلقه for که باعث هنگ کردن متاتریدر میشود. كد:
for(i=7;i>=3;i++)
{
Comment(i);
Sleep(1000);
}
با آرزوی توفیق... شهرام
__________________
deadliness amuse me |
|
|
| 5 تشکر کننده از ReSeller: |
|
|
#14
|
|
Senior Member
تاريخ عضويت: May 2007
ارسالها: 866
تشکر: 832
تشکر از ايشان: 3,887 بار در 770 پست
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
0
دیگه ادامه نمیدی تمام شد |
|
|
|
|
#15
|
|
Senior Member
|
0
خيلي سرم شلوغه و جدا وقت آمدن به اين سايت و سايتهاي ديگر را ندارم اما امشب يه وقتي پيدا كردم كه اينجا يه سري بزنم كه ديدم به به اين تاپيك خدا بيامرز من داره اون ته تها بدجوري خاك ميخوره راستش دلم براش سوخت گفتم بيارمش بالا. هرچند وقت يكبار كه سرم خلوت بشه حتما اينجا سري ميزنم كه ادامه درسها عقب نيافته. ادامه مبحث: امروز میخوام که در مورد یک حلقه دیگری به نام while صحبت کنم. مثال فارسی: به فرض میگیم که من تاوقتی که خانه نخرم روزی 2 شیفت کار میکنم. یعنی این حلقه کار کردن 2 شیفت در روز ادامه داره تا وقتی که انشاالله خانه بخرید. فرم کلی این دستور به شکل زیر است: PHP Code:
PHP Code:
نکته: اگر نکته بین و دقیق باشید تا الان متوجه شده اید که این مثالی که من عنوان کردم دارای یک مشکل منطقی میباشد. لطفا قبل از خواندن ادامه مطلب، یکبار دیگر نگاه دقیق به کد بکنید تا متوجه شوید. بله درست متوجه شدید مشکل کد بالا، شرط استاپ میباشد. در واقع این حلقه دارای هیچگونه ترمزی نیست و مرتب در حال چرخش است که ما آن را حلقه بینهایت مینامیم. چون مقدار i هیچ وقت افزایش داده نمیشود و همچنان کوچکتر از عدد 10 باقی میماند که این باعث میشود ما هیچوقت از این چرخه خارج نشویم. در واقع شکل اصلی این کد به این صورت باید باشد. PHP Code:
فرق این دو حلقه یعنی for و while را در درسهای بعدی بیشتر متوجه خواهیم شد. با آرزوي توفيق... شهرام
__________________
deadliness amuse me |
|
|
| تشکر کننده از ReSeller: |
![]() |
| Bookmarks |
| برچسبها |
| meta trader programming, mql |
| ابزارهاي موضوع | |
|
|
موضوعات مشابه
|
||||
| موضوع | آغازگر موضوع | انجمن | پاسخ | آخرین ارسال |
| آموزش گام به گام تحليل تكنيكال به زبان انگليسي | ario | تحلیل تکنیکال (Technical Analysis) | 5 | May 24th, 2007 22:04 |
| آموزش برنامه نوِيسي ++C | programmer | متاتریدر (MetaTrader) | 29 | January 26th, 2007 19:54 |