الفرق بين المراجعتين لصفحة: «Arduino/for»
جميل-بيلوني (نقاش | مساهمات) أنشأ الصفحة ب'تُستعمَل الحلقة <code>for</code> لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. يُست...' |
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:الحلقة <code>for</code> التكرارية في أردوينو}}</noinclude> | |||
تُستعمَل الحلقة <code>for</code> لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. يُستعمَل في هذه الحلقة عادةً عدادٌ لتتبع عدد مرات تكرار الشيفرة ومقاطعتها عند الوصول إلى عدد محدَّد. يمكن استعمال الحلقة <code>for</code> مع أية عملية تكرارٍ، وتُستعمَل بكثرة مع المصفوفات لتنفيذ عملية معينة على عناصرها التي قد تكون بيانات عادية أو أرجل معينة. | تُستعمَل الحلقة <code>for</code> لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. يُستعمَل في هذه الحلقة عادةً عدادٌ لتتبع عدد مرات تكرار الشيفرة ومقاطعتها عند الوصول إلى عدد محدَّد. يمكن استعمال الحلقة <code>for</code> مع أية عملية تكرارٍ، وتُستعمَل بكثرة مع المصفوفات لتنفيذ عملية معينة على عناصرها التي قد تكون بيانات عادية أو أرجل معينة. | ||
سطر 28: | سطر 29: | ||
== ملاحظات وتحذيرات == | == ملاحظات وتحذيرات == | ||
الحلقة <code>for</code> في لغة C أكثر مرونة من الحلقات <code>for</code> الموجودة في بعض اللغات مثل BASIC. يمكن إزالة أحد العناصر الرئيسية الثلاث أو جميعها من الحلقة مع الحرص على الإبقاء على الفاصلة المنقوطة كما هي. أضف إلى ذلك | الحلقة <code>for</code> في لغة C أكثر مرونة من الحلقات <code>for</code> الموجودة في بعض اللغات مثل BASIC. يمكن إزالة أحد العناصر الرئيسية الثلاث أو جميعها من الحلقة مع الحرص على الإبقاء على الفاصلة المنقوطة كما هي. أضف إلى ذلك أنَّ تعابير التهيئة الأولية والشرط والخطوة يمكن أن تكون أيًّا من تعابير لغة C الصالحة مع متغيرات غير مترابطة، وأن تستعمل أيًّا من أنواع البيانات في C من ضمنها الأعداد العشرية. استعمال هذه الأنواع الغير اعتيادية من التعابير مع الحلقة <code>for</code> يوفِّر حلًا لبعض المشكلات البرمجية النادرة. | ||
على سبيل المثال، استعمال عملية الضرب في تعبير «الخطوة» سيولد تدرجًا لوغاريتميًّا (logarithmic progression) مثل:<syntaxhighlight lang="arduino"> | على سبيل المثال، استعمال عملية الضرب في تعبير «الخطوة» سيولد تدرجًا لوغاريتميًّا (logarithmic progression) مثل:<syntaxhighlight lang="arduino"> | ||
سطر 48: | سطر 49: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* | * الكلمة المفتاحية <code>[[Arduino/break|break]]</code>: تُستعمَل للخروج من الحلقات التكرارية، إذ تتخطى الشيفرة التي بعدها وشروط الحلقة المحددِّة وتخرج منها. | ||
* | * الكلمة المفتاحية <code>[[Arduino/continue|continue]]</code>: تتخطى الشيفرة التي تليها في حلقة التكرار إلى عملية التحقق من التعبير الشرطي لتلك الحلقة ثم يُستأنَف عمل حلقة التكرار بشكل طبيعي. | ||
*الحلقة <code>[[Arduino/dowhile|do...while]]</code>: تعمل بنفس الطريقة التي تعمل بها الحلقة <code>[[Arduino/while|while]]</code> باستثناء أنه يُتحقق من الشرط في نهاية الحلقة وليس في بدايتها. | *الحلقة <code>[[Arduino/dowhile|do...while]]</code>: تعمل بنفس الطريقة التي تعمل بها الحلقة <code>[[Arduino/while|while]]</code> باستثناء أنه يُتحقق من الشرط في نهاية الحلقة وليس في بدايتها. | ||
* | *الكلمة المفتاحية <code>[[Arduino/else|else]]</code>: يسمح بالتحكم بشكل أوسع بتسلسل عملية التحقق من عدة شروط معينة عند تنفيذ الشيفرة عوضًا عن التحقق من شرط وحيد عند استعمال التعبير <code>[[Arduino/if|if]]</code>. | ||
* | *الكلمة المفتاحية <code>[[Arduino/goto|goto]]</code>: ينقل البرنامج إلى موضع معين ضمن الشيفرة. | ||
* | *التعبير الشرطي <code>[[Arduino/if|if]]</code>: يتحقَّق من شرط معيَّن وينفِّذ الكتلة البرمجية المكتوبة ضمنه إن كان محقَّقًا (أي كانت قيمته <code>true</code>). | ||
* | *الكلمة المفتاحية <code>[[Arduino/return|return]]</code>: تقاطع المفتاحية تنفيذ أيَّ دالةٍ وتعيد قيمةً من الدالة إلى من استدعاها إن حدُّدت. | ||
*التعبير <code>[[Arduino/ | *التعبير <code>[[Arduino/switchcase|switch...case]]</code>: يتحقَّق -كما في <code>[[Arduino/if|if]]</code>- من قيمة محدَّدة بطريقة تسمح للمبرمج بتحديد عدة شيفرات تُنفَّذ إحداها بناءً على تلك القيمة المفحوصة. | ||
*الحلقة <code>[[Arduino/while|while]]</code>: | *الحلقة <code>[[Arduino/while|while]]</code>: تكرِّر تنفيذ الكتلة البرمجية التي ضمنها بشكل مستمر ولا نهائي ما دامت قيمة الشرط المنطقي المعطى هي <code>true</code> ومتى ما أصبحت قيمة الشرط المنطقي <code>false</code>، تتوقف الحلقة وتخرج. | ||
==مصادر== | ==مصادر== | ||
*[https://www.arduino.cc/reference/en/language/structure/control-structure/for/ صفحة الحلقة for في توثيق أردوينو الرسمي.] | *[https://www.arduino.cc/reference/en/language/structure/control-structure/for/ صفحة الحلقة for في توثيق أردوينو الرسمي.] | ||
[[تصنيف: Arduino]] | |||
[[تصنيف: Arduino Control Structure]] |
المراجعة الحالية بتاريخ 05:32، 9 أكتوبر 2018
تُستعمَل الحلقة for
لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. يُستعمَل في هذه الحلقة عادةً عدادٌ لتتبع عدد مرات تكرار الشيفرة ومقاطعتها عند الوصول إلى عدد محدَّد. يمكن استعمال الحلقة for
مع أية عملية تكرارٍ، وتُستعمَل بكثرة مع المصفوفات لتنفيذ عملية معينة على عناصرها التي قد تكون بيانات عادية أو أرجل معينة.
البنية العامة
for (خطوة ;الشرط ;التهيئة الأولية) {
// الكتلة البرمجية المراد تكرارها;
}
تنفَّذ عملية التهيئة الأولية مرةً واحدةً فقط في بداية تنفيذ الحلقة. يُتحقَّق من الشرط في كل مرة يتكرر فيها تنفيذ الحلقة؛ إن كانت قيمته true
، فستُنفَّذ الكتلة البرمجية التي تقع ضمن الحلقة ثمَّ تُنفَّذ الخطوة ثمَّ يعاد التحقق من الشرط. عندما لا يتحقق الشرط (أي تصبح قيمته false
)، تتوقف الحلقة عن العمل.
أمثلة
الشيفرة التالية هي جزءٌ من شيفرة نظام تحسس درجة الحرارة:
// PWM إنقاص إضاءة ليد باستعمال رجل لها الخاصية
int PWMpin = 10; // ضوء ليد موصول على التسلسل مع مقاومة 10 أوم بالرجل 10
void setup()
{
// لا يحتاج هذا المثال إلى أية تهيئة
}
void loop()
{
for (int i=0; i <= 255; i++){
analogWrite(PWMpin, i);
delay(10);
}
}
ملاحظات وتحذيرات
الحلقة for
في لغة C أكثر مرونة من الحلقات for
الموجودة في بعض اللغات مثل BASIC. يمكن إزالة أحد العناصر الرئيسية الثلاث أو جميعها من الحلقة مع الحرص على الإبقاء على الفاصلة المنقوطة كما هي. أضف إلى ذلك أنَّ تعابير التهيئة الأولية والشرط والخطوة يمكن أن تكون أيًّا من تعابير لغة C الصالحة مع متغيرات غير مترابطة، وأن تستعمل أيًّا من أنواع البيانات في C من ضمنها الأعداد العشرية. استعمال هذه الأنواع الغير اعتيادية من التعابير مع الحلقة for
يوفِّر حلًا لبعض المشكلات البرمجية النادرة.
على سبيل المثال، استعمال عملية الضرب في تعبير «الخطوة» سيولد تدرجًا لوغاريتميًّا (logarithmic progression) مثل:
for(int x = 2; x < 100; x = x * 1.5){
println(x);
}
ستولد هذه الشيفرة الخطوات التالية:
2,3,4,6,9,13,19,28,42,63,94
مثالٌ آخر عن إضاءة ضوء ليد وإطفاءه بشكل تدريجي باستعمال حلقة for
واحدة فقط:
void loop()
{
int x = 1;
for (int i = 0; i > -1; i = i + x){
analogWrite(PWMpin, i);
if (i == 255) x = -1; // تبديل اتجاه الخطوة عند الوصول للذروة
delay(10);
}
}
انظر أيضًا
- الكلمة المفتاحية
break
: تُستعمَل للخروج من الحلقات التكرارية، إذ تتخطى الشيفرة التي بعدها وشروط الحلقة المحددِّة وتخرج منها. - الكلمة المفتاحية
continue
: تتخطى الشيفرة التي تليها في حلقة التكرار إلى عملية التحقق من التعبير الشرطي لتلك الحلقة ثم يُستأنَف عمل حلقة التكرار بشكل طبيعي. - الحلقة
do...while
: تعمل بنفس الطريقة التي تعمل بها الحلقةwhile
باستثناء أنه يُتحقق من الشرط في نهاية الحلقة وليس في بدايتها. - الكلمة المفتاحية
else
: يسمح بالتحكم بشكل أوسع بتسلسل عملية التحقق من عدة شروط معينة عند تنفيذ الشيفرة عوضًا عن التحقق من شرط وحيد عند استعمال التعبيرif
. - الكلمة المفتاحية
goto
: ينقل البرنامج إلى موضع معين ضمن الشيفرة. - التعبير الشرطي
if
: يتحقَّق من شرط معيَّن وينفِّذ الكتلة البرمجية المكتوبة ضمنه إن كان محقَّقًا (أي كانت قيمتهtrue
). - الكلمة المفتاحية
return
: تقاطع المفتاحية تنفيذ أيَّ دالةٍ وتعيد قيمةً من الدالة إلى من استدعاها إن حدُّدت. - التعبير
switch...case
: يتحقَّق -كما فيif
- من قيمة محدَّدة بطريقة تسمح للمبرمج بتحديد عدة شيفرات تُنفَّذ إحداها بناءً على تلك القيمة المفحوصة. - الحلقة
while
: تكرِّر تنفيذ الكتلة البرمجية التي ضمنها بشكل مستمر ولا نهائي ما دامت قيمة الشرط المنطقي المعطى هيtrue
ومتى ما أصبحت قيمة الشرط المنطقيfalse
، تتوقف الحلقة وتخرج.