رد:[ الورشة التعليمية ] موضوع نقاش الورشة التعليمية للبرمجة بلغة mql4
اقتباس:
المشاركة الأصلية كتبت بواسطة المتيـم
السلام عليكم ..
بعض الاسئلة ارجو اجابتها من اخى اسامه او الزملاء
ذوى الخبرة ..
- بخصوص الجملة الشرطيه switch لماذا قمنا بكتابه الامر Break مرة واحده فقط بعد انتهاء الكود فى المثال الاول الموجود بشرح الدرس
الملف المرفق 363201
بينما فى المثال الاخر قمنا بكتابه الامر Break فى كل مرة بعد انتهاء الامر Print ؟
الملف المرفق 363203
هل الطريقتين صحيحتين ام ان هناك اختلاف فى معنى كلا منهما ؟
- فى الكود التالى
الملف المرفق 363204
لماذا لا نكتفى بكتابه
بدلا من
كود PHP:
Print ("D Not Equal 0")
وشكرا لكم ،،
وعليكم السلام و رحمة الله وبركاته .. أعتقد أخي في الصورة الثانية ان الأمر break ينهي البحث إذا كانت النتيجة ترو و يهمل الإكسبيرت البحث في باقي الدالة سويتش أي يخرج منها بمجرد تحقق الشرط ولا يكمل قراءة الجزء الذي هو أسفل منه .
وكذلك في الصورة الأولى إذا كانت أي من الشروط السابقة تحققت سيخرج من الدالة في نهاية الكود اما إذا لم تتحقق أي نتيجة اي كل الشروط كانت فولس سيظل يعيد قراءة الكود ولا يتوقف إلا بتحقق أي شرط .
بالنسبة لكتابة الكود
أعتقد أنه سيظل يطبع قيمة d طالما لا تساوي صفر .. أما كود
كود PHP:
Print ("D Not Equal 0")
فهو يطبع تنبيه بكلمة d لا تساوي صفر في حالة أنها لا تساوي صفر فقط .
و الله أعلم
رد:[ الورشة التعليمية ] موضوع نقاش الورشة التعليمية للبرمجة بلغة mql4
عندما يدخل المعالج الى switch فكانما يدخل في دائرة او حلقة من المقارنات وللخروج من هذه الدائرة يحتاج الى الامر break للخروج واتمام اوامر البرنامج الاخرى .حتى لا يبقى في دائرة مغلقة لا منتهية.
حيث سيقوم بمقارنة قيمة المتغير A مع 3 ثم مع 4 ثم مع 5 بالترتيب.///اذا لم يكن هناك break سيرجع ويقارن الحالات من البداية ويبقى يدور هكذا.//
- في حالة يساوي 3 سيقوم بطبع A يساوي 3 ثم يستمر بالمقارنة لكل الحالات حتى يصل الى break ويخرج من الدائرة.
-اما في حالة break تحت كل امر Print فسيقوم بمقارنة قيمة المتغير A مع الحالات وفي حال تساوت قيمة A مع 3 مثلا سيطبع ثم يخرج من الدائرة ب break دون المرور بالحالات الاخرى المتبقية.
بالنسبة ل D :
هناك فرق كبير بين الامرين
هنا يقوم بطباعة قيمة D ...قد تكون 3 او 4 او اي عدد موجود داخل المتغير D بشرط يختلف عن الصفر.
اما الامر
كود PHP:
Print ("D Not Equal 0")
هنا سيقوم بطباعة الجملة النصية حرفيا كما هي والموجودة بين المعقوفتين.
اذن الحالة الاولى يطبع القيمة التي يحتويها المتغير D .اما الثانية قيطبع الجملة النصية حرفيا كما هي مكتوبة.
رد:[ الورشة التعليمية ] موضوع نقاش الورشة التعليمية للبرمجة بلغة mql4
اقتباس:
المشاركة الأصلية كتبت بواسطة المتيـم
حفظكم الله اخوانى الكرام ..
اخى وهاب .. اذن استخدام الامر بريك يعد فى صالح اختصار الكود او نوع من التيسير واختصار الوقت وبالتالى سرعة العمل فيما بعد للاكسبرت او المؤشر .. صحيح ؟
بالتجربة يتضح الامر :
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");
case 2:Print("A=2");
case 3:Print("A=3");
default:Print("Wrong number entered");
}
في هذا المثال سيطبع في الجورنال A=1 ثم A=2 ...الى اخر الحالات.
لكن لو وضعنا break كالتالي:
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");break;
case 2:Print("A=2");
case 3:Print("A=3");
default:Print("Wrong number entered");
}
سيقوم بطباعة A=1 فقط دون الحالات الاخرى .
ولو وضعنا break كالتالي:
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");
case 2:Print("A=2");break;
case 3:Print("A=3");
default:Print("Wrong number entered");
}
سيطبع A=1 ثم A=2 فقط.
ولو وضعنا break كتالي :
كود PHP:
int a;
a=2;
switch(a){
case 1:Print("A=1");break;
case 2:Print("A=2");break;
case 3:Print("A=3");break;
default:Print("Wrong number entered");
}
هنا سيطبع A=2 فقط .لان A تساوي 2 ولو غيرت قيمة a الى 3 سيطبع A=3 فقط.
جرب هذه الاكواد وتابع الجورنال وسيتوضح الامر اخي المتيم.
رد:[ الورشة التعليمية ] موضوع نقاش الورشة التعليمية للبرمجة بلغة mql4
اقتباس:
المشاركة الأصلية كتبت بواسطة wahaab
بالتجربة يتضح الامر :
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");
case 2:Print("A=2");
case 3:Print("A=3");
default:Print("Wrong number entered");
}
في هذا المثال سيطبع في الجورنال A=1 ثم A=2 ...الى اخر الحالات.
لكن لو وضعنا break كالتالي:
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");break;
case 2:Print("A=2");
case 3:Print("A=3");
default:Print("Wrong number entered");
}
سيقوم بطباعة A=1 فقط دون الحالات الاخرى .
ولو وضعنا break كالتالي:
كود PHP:
int a;
a=1;
switch(a){
case 1:Print("A=1");
case 2:Print("A=2");break;
case 3:Print("A=3");
default:Print("Wrong number entered");
}
سيطبع A=1 ثم A=2 فقط.
ولو وضعنا break كتالي :
كود PHP:
int a;
a=2;
switch(a){
case 1:Print("A=1");break;
case 2:Print("A=2");break;
case 3:Print("A=3");break;
default:Print("Wrong number entered");
}
هنا سيطبع A=2 فقط .لان A تساوي 2 ولو غيرت قيمة a الى 3 سيطبع A=3 فقط.
جرب هذه الاكواد وتابع الجورنال وسيتوضح الامر اخي المتيم.
جزاكم الله كل خير .
رد:[ الورشة التعليمية ] موضوع نقاش الورشة التعليمية للبرمجة بلغة mql4
سوف تبدا المحاضرة بعد نصف ساعة ان شاء لله:asvc: