x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
موضوعنا اليوم عن الحلقات التكرارية :
الحلقات Loops :
مفهوم الحلقات موجود في جميع لغات البرمجة دون استثناء .
والحلقات هي باختصار تنفيذ مجموعة أوامر برمجية عدد محدد من المرات .
مثلا لو أردنا طباعة الأرقام من 1 إلى 100 فليس من المعقول كتابة 100 سطر لأمر الطباعة .
بل نقوم بعمل حلقة بسيطة لتنفيذ الطباعة لأي مجال من الأرقام .
التركيبة الأساسية للحلقات في لغة MQL5 :
لدينا فعليا تركيبتين مختلفتين للحلقات الأشهر بينهما هي حلقة for تأتي بعدها حلقة while .
نبدأ بحلقة for ولها التركيب التالي :
الحلقة السابقة وهي حلقة for التي تتميز بوجود عداد هو المتحول i .
تم تعريف المتحول i داخل الحلقة نفسها على أنه متحول رقمي صحيح .
أيضا تم وضع شرط استمرار الحلقة وهو أن تكون قيمة المتحول i أقل أو تساوي 100 .
أخيرا تم وضع قيمة التزايد في العداد i مع كل تنفيذ وهنا نحن نزيد العداد واحد كل مرة .
هذه الثلاثة أمور يتم وضعها داخل أقواس الحلقة for مفصولة بفاصلة منقوطة .
بعد كتابة سطر الحلقة for يتم فتح قوسين معقوفين { } وفيهما نضع الأوامر البرمجية التي نريد .
قد تكون هذه الأوامر البرمجية سطرا واحدا فقط أو عدة أسطر أو قد تكون حلقة أخرى أو عدة حلقات .
أي أننا نضع كل ما نريد تكرار تنفيذه داخل القوسين المعقوفين .
تبدأ الحلقة بجعل قيمة المتحول i مساوية للصفر ويتم تنفيذ ما داخل القوسين المعقوفين .
يتم تكرار الحلقة مرة أخرى مع زيادة لقيمة i بمقدار واحد .
وقبل أن يتم التنفيذ يتم فحص شرط الحلقة وهو أن i أصغر أو مساوية للقيمة 100 حسب المثال .
فإذا تحقق الشرط أكمل تنفيذ ما داخل الحلقة من أوامر .
في حال لم يتحقق هذا الشرط لا يتم تنفيذ ما داخل الحلقة ويتم الانتقال للأوامر البرمجية التي بعد أقواس الحلقة المعقوفة التي تضم الأوامر البرمجية .
النوع الثاني من الحلقات هي حلقة while وهي تحتوي فقط شرط تكرار الحلقة ولا تحتوي على عداد مثل حلقة for .
تركيب الحلقة while هو كالتالى :
قبل أن يتم تنفيذ ما بداخل الحلقة يتم فحص شرط الحلقة أولا .
في حال تحقق الشرط يتم تنفيذ ما بداخل الحلقة .
في حال لم يتحقق الشرط لا يتم تنفيذ ما بداخل الحلقة بل ينتقل التنفيذ إلى ما بعد الحلقة مباشرة .
في حال تحقق الشرط مرة أخرى يتم تنفيذ أوامر الحلقة مرة أخرى .
ويجب الانتباه إلى أن شرط الحلقة لا بد أن يتغير في لحظة ما داخل الحلقة نفسها .
وإلا لن يستطيع البرنامج الخروج من هذه الحلقة أبدا .
هناك طريقة أخرى لكتابة هذه الحلقة بالشكل التالي :
الطريقة الثانية تعني أن يتم تنفيذ الحلقة أولا دون فحص لأي شرط .
لكن لا يتم التكرار إلا في حال تحقق الشرط .
يجب الانتباه أيضا إلى جعل الشرط لا يتحقق في لحظة ما حتى يمكن الخروج من الحلقة .
--------------------------------------------
لا بد من مراجعة هذا الدرس جيدا مع تطبيق الأمثلة جيدا على الميتاأيديتور
لانه مهم جدا جدا جدا
موضوع الدرس القادم عن دالة IF الشرطية
الحلقات Loops :
مفهوم الحلقات موجود في جميع لغات البرمجة دون استثناء .
والحلقات هي باختصار تنفيذ مجموعة أوامر برمجية عدد محدد من المرات .
مثلا لو أردنا طباعة الأرقام من 1 إلى 100 فليس من المعقول كتابة 100 سطر لأمر الطباعة .
بل نقوم بعمل حلقة بسيطة لتنفيذ الطباعة لأي مجال من الأرقام .
التركيبة الأساسية للحلقات في لغة MQL5 :
لدينا فعليا تركيبتين مختلفتين للحلقات الأشهر بينهما هي حلقة for تأتي بعدها حلقة while .
نبدأ بحلقة for ولها التركيب التالي :
Code:
for(int i=0;i<=100;++i)
{
// ما تريد عمله
}
تم تعريف المتحول i داخل الحلقة نفسها على أنه متحول رقمي صحيح .
أيضا تم وضع شرط استمرار الحلقة وهو أن تكون قيمة المتحول i أقل أو تساوي 100 .
أخيرا تم وضع قيمة التزايد في العداد i مع كل تنفيذ وهنا نحن نزيد العداد واحد كل مرة .
هذه الثلاثة أمور يتم وضعها داخل أقواس الحلقة for مفصولة بفاصلة منقوطة .
بعد كتابة سطر الحلقة for يتم فتح قوسين معقوفين { } وفيهما نضع الأوامر البرمجية التي نريد .
قد تكون هذه الأوامر البرمجية سطرا واحدا فقط أو عدة أسطر أو قد تكون حلقة أخرى أو عدة حلقات .
أي أننا نضع كل ما نريد تكرار تنفيذه داخل القوسين المعقوفين .
تبدأ الحلقة بجعل قيمة المتحول i مساوية للصفر ويتم تنفيذ ما داخل القوسين المعقوفين .
يتم تكرار الحلقة مرة أخرى مع زيادة لقيمة i بمقدار واحد .
وقبل أن يتم التنفيذ يتم فحص شرط الحلقة وهو أن i أصغر أو مساوية للقيمة 100 حسب المثال .
فإذا تحقق الشرط أكمل تنفيذ ما داخل الحلقة من أوامر .
في حال لم يتحقق هذا الشرط لا يتم تنفيذ ما داخل الحلقة ويتم الانتقال للأوامر البرمجية التي بعد أقواس الحلقة المعقوفة التي تضم الأوامر البرمجية .
النوع الثاني من الحلقات هي حلقة while وهي تحتوي فقط شرط تكرار الحلقة ولا تحتوي على عداد مثل حلقة for .
تركيب الحلقة while هو كالتالى :
Code:
while(k<n)
{
y=y*x;
k++;
}
في حال تحقق الشرط يتم تنفيذ ما بداخل الحلقة .
في حال لم يتحقق الشرط لا يتم تنفيذ ما بداخل الحلقة بل ينتقل التنفيذ إلى ما بعد الحلقة مباشرة .
في حال تحقق الشرط مرة أخرى يتم تنفيذ أوامر الحلقة مرة أخرى .
ويجب الانتباه إلى أن شرط الحلقة لا بد أن يتغير في لحظة ما داخل الحلقة نفسها .
وإلا لن يستطيع البرنامج الخروج من هذه الحلقة أبدا .
هناك طريقة أخرى لكتابة هذه الحلقة بالشكل التالي :
Code:
do
{
i++; // without this operator an infinite loop will appear!
}
while(i<10);
الطريقة الثانية تعني أن يتم تنفيذ الحلقة أولا دون فحص لأي شرط .
لكن لا يتم التكرار إلا في حال تحقق الشرط .
يجب الانتباه أيضا إلى جعل الشرط لا يتحقق في لحظة ما حتى يمكن الخروج من الحلقة .
--------------------------------------------
لا بد من مراجعة هذا الدرس جيدا مع تطبيق الأمثلة جيدا على الميتاأيديتور
لانه مهم جدا جدا جدا
موضوع الدرس القادم عن دالة IF الشرطية