x32x01
  • بواسطة x32x01 ||
الشرط IF :
تعتبر معالجة الشروط من أهم التقنيات البرمجية وهي حتما ستجدها في جميع اللغات البرمجية مهما كان نوعها .
تعتبر الشروط هي الطريقة البرمجية الوحيدة لاتخاذ القرارت السليمة داخل البرنامج نفسه .
فهي ببساطة تفحص قيمة أو قيم عدة متحولات وفي حال مطابقتها للشروط المحدد فإن البرنامج ينفذ أوامر برمجية معينة .
وفي حال عدم تحقق هذه الشروط فإنه ينفذ أوامر أخرى أو لا ينفذ أي أمر حسب البرنامج .

التركيبة العامة للشرط if هي :
Code:
if(شروط)
{
  أوامر برمجية تنفذ في حال تحققت الشروط
}
else
{
  أوامر برمجية في حال لم تحقق الشروط
}
يجب كتابة كتلة الأوامر البرمجية في حال تحققت الشروط .
لكنك غير مطالب بكتابة كتلة الأوامر البرمجية في حال لم تتحقق الشروط .
مثلا :
Code:
if(x>10)
{
  Print("قيمة المتغير اكس أكبر من عشرة");
}
else
{
  Print("قيمة المتغير اكس أصغر من أو تساوي عشرة");
}

المثال على ما أعتقد واضح جدا وهو ببساطة يفحص قيمة المتحول x المعرف سابقا .
في حال كانت قيمة المتحول x أكبر من عشرة فهذا يعني تحقق الشرط .
وهذا يقتضي تنفيذ السطر البرمجي الموجود داخل القوسين المعقوفين { }
اللذان يضمان جميع الأوامر البرمجية التي ستنفذ في حال تحقق الشرط .

أما لو كانت قيمة المتحول x أصغر من 10 أو مساوية لها فهذا يعني عدم تحقق الشرط المحدد .
وسوف يتم تنفيذ الأمر البرمجي في الكتلة else .
كما قلت أنت مخير في وضع كتلة else أو عدم وضعها وذلك حسب متطلبات البرنامج نفسه .

طرق فحص الشرط كثيرة ومتنوعة وسوف نعرض الأهم فالأهم :
- المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين متساوية .
وتكتب هكذا :
Code:
if(x==y)

- عدم المساواة :
يتحقق الشرط في حال كانت قيمة المتغيرين غير متساوية .
وتكتب هكذا :
Code:
if(x!=y)

- أكبر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني .
وتكتب هكذا :
Code:
if(x>y)

- أكبر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أكبر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
Code:
if(x>=y)

- أصغر من :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني .
وتكتب هكذا :
Code:
if(x<y)

- أصغر من أو يساوي :
يتحقق الشرط في حال كانت قيمة المتحول الأول أصغر من قيمة المتحول الثاني أو مساوية له .
وتكتب هكذا :
Code:
if(x<=y)

يمكن فحص أكثر من شرط في نفس الوقت وفي حال تحققت كل الشروط فهذا يعني تنفيذ كتلة if البرمجية .

هناك طريقتان رئيسيتان لدمج الشروط مع بعضها البعض وهما :
- الطريقة الأولى بواسطة المعامل AND ويكتب هكذا && :
عند دمج شرطين معا بواسطة المعامل ( و ) فهذا يعني وجوب تحقق الشرط الأول ووجوب تحقق الشرط الثاني في نفس الوقت .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
Code:
if(x==10 && y>=5)

لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل AND فهذا يعني وجوب تحقق كلا الشرطين ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل AND وبنفس الطريقة .

الطريقة الثانية بواسطة المعامل OR ويكتب هكذا || :
عند دمج شرطين معا بواسطة المعامل ( أو ) فهذا يعني وجوب تحقق أحد الشرطين إما الشرط الأول أو الشرط الثاني أو كلاهما معا بطبيعة الحال .
عندها فقط يتحقق الشرط الكلي لتركيبة if .
مثلا :
Code:
if(x==10 || y>=5)

لدينا في المثال السابق شرطين الأول هو أن تكون قيمة المتحول x مساوية للقيمة 10 .
والشرط الثاني هو أن تكون قيمة المتحول y أكبر من أو مساوية للقيمة 5 .
وبما أن الشرطين مدموجين بمعامل OR فهذا يعني وجوب تحقق أحد الشرطين أو كلاهما ليتحقق شرط if الكلي .
يمكن دمج أكثر من شرط بواسطة معامل OR وبنفس الطريقة .
في حال دمج أكثر من شرط بواسطة OR فهذا يعني تحقق الشرط الكلي في حال تحقق على الأقل شرط واحد فقط من الشروط المدموجة .
------------------------------------------------

هناك طريقة أخرى لاتخاذ قرارت وفحص شروط أسرع وأسهل في الاستخدام ولكنها تستخدم فقط في حال كان لدينا شرط واحد للفحص .
التعليمة البرمجية المستخدمة للفحص هي switch وتكتب على الشكل التالي :
Code:
switch(x)
{
  case 1:
     y=1;break;
  case 2:
     y=3;break;
  case 3:
     y=5;break;
  default:
     y=0;break;
}

في حال لم نضع التعليمة break فإن التنفيذ سيستمر ويتم فحص الحالات اللاحقة مما يسبب في تنفيذ تعليمات برمجية لا داعي لتنفيذها .
طبعا هناك حالات خاصة معقدة تتطلب منا عدم كتابة break ليستمر التنفيذ على كل الحالات ولكنها ليست موضوعنا الآن .
تستطيع بشكل اختياري تنفيذ تعليمات برمجية في حال لم تتوافق قيمة المتحول x مع أي من الحالات المذكورة وذلك بكتابة التعليمة default ثم كتابة ما تريد من تعليمات برمجية .
ففي المثال السابق مثلا في حال لم تتحقق قيمة x في كونها 1 أو 2 أو 3 فإن قيمة y ستصبح صفرا .
لا يهم ترتيب كتابة الحالات أو مقارنة الشرط وكلها ستعطي نفس النتيجة النهائية من حيث التنفيذ .
كما رأيتم هنا فإننا في حال لزمنا فحص قيمة متحول واحد ولعدة حالات فإنه من الأسهل استخدام switch بدلا من if .
الطريقة if تستطيع التحكم الكامل بها من حيث عدد الشروط وطريقة الفحص وهي أشمل وأعم من الطريقة switch .
لكن الطريقة switch في حال كان استخدامنا بسيطا فإنها أسهل في الكتابة ومختصرة أكثر .
والمبرمج هو الوحيد الذي يستطيع اتخاذ القرار المناسب حسب خبرته وسياق البرنامج نفسه .
-------------------------------------------------------
جميع التعليمات السابقة تنفذ على افتراض أن يستمر التنفيذ حتى انتهاء الحلقة بكاملها أو فحص الشروط بكاملها .
طبعا أنت كمبرمج تحتاج أحيانا إلى كسر هذه الحلقة في حال تحقق شرط داخل الحلقة نفسها .
وهذا الشرط ليس هو شرط الحلقة نفسه .

مثلا أنت عملت حلقة من 1 إلى 1000 وتريد أن تبحث داخل مصفوفة عن قيمة معينة .
في حال أنك وجدت القيمة المطلوبة فإنك تحتاج لكسر الحلقة والخروج منها مباشرة دون أن تستمر حتى نهاية الحلقة .
لأنك بالأساس حصلت على ما تريد ولا داعي لتنفيذ باقي الحلقة .
نفس الشيء يطبق على switch فإنها بمجرد أن تجد تطابقا مع أحد الاحتمالات فإنها تكسر التنفيذ ولا تفحص باقي الاحتمالات الأخرى .
لأنها بالأساس حصلت على تطابق ولا داعي لفحص باقي الاحتمالات الأخرى .
تتم عملية الكسر بواسطة التعليمة break وأنت تستطيع وضعها في أي مكان داخل الحلقة بحيث تنفذ عند تحقق شرط ما .
دعنا نرى المثال التالي :
Code:
for(i=0;i<1000;i++)
{
  if(array[i]==52) break;
}
المثال السابق يبحث في مصفوفة array عن قيمة 52 وبمجرد أن يجدها فإنه يكسر الحلقة بالتليمة break .
وهكذا في بقية التراكيب الأخرى .
هناك تعليمة معاكسة لتعليمة break وهي التعليمة continue .
وتستخدم فقط مع for و while و do-while ولا تستخدم مع switch .
لقد رأينا أن التعليمة break تكسر الحلقة وتنقل التنفيذ إلى ما بعد نهاية الحلقة مباشرة .
فعلى العكس منها تماما تعليمة continue فإنها تكسر الحلقة ولكن تعيد التنفيذ إلى بداية الحلقة مرة أخرى أي أنها تعيد تنفيذ الحلقة من البداية .
---------------------------------------
سيكون الدرس القادم بشكل مختلف وتطبيق اكثر فاعليه
 

المشاركات المتشابهة

x32x01
الردود
0
المشاهدات
7
x32x01
x32x01
x32x01
الردود
0
المشاهدات
7
x32x01
x32x01
x32x01
  • x32x01
الردود
0
المشاهدات
4
x32x01
x32x01
x32x01
الردود
0
المشاهدات
13
x32x01
x32x01
x32x01
الردود
0
المشاهدات
8
x32x01
x32x01
الوسوم : الوسوم
برمجة الفوركس تعلم mql5 تعلم برمجة الفوركس

الدخول أو التسجيل السريع

نسيت كلمة مرورك؟

آخر المشاركات

أحدث المنتجات

إحصائيات المنتدى

المواضيع
1,530
المشاركات
1,716
أعضاء أكتب كود
191
أخر عضو
Ahmed123132
عودة
أعلى