الكلمة goto
المفتاحية في أردوينو
< Arduino
تنقل الكلمة goto
المفتاحية البرنامج إلى موضع معين ضمن الشيفرة.
البنية العامة
goto label; // إرسال البرنامج لتنفيذ الكتلة البرمجية
// label الموجودة عند التسمية
أمثلة
مثالٌ على استعمال التعبير goto
:
for(byte r = 0; r < 255; r++){
for(byte g = 255; g > 0; g--){
for(byte b = 0; b < 255; b++){
if (analogRead(0) > 250){ goto bailout;}
// يمكن إضافة شيء هنا
}
}
}
bailout:
ملاحظات وتحذيرات
لم تعد العبارة goto
تُستعمَل في لغة C، وأُشير في بعض الكتب المرجعية للغة البرمجة C أن العبارة goto
لم تعد ضرورية ولكن يمكن استعمالها لتبسيط بعض البرامج. السبب القابع خلف نفور المبرمجين من استعمال العبارة goto
هو أنَّه عند التفريط باستعمالها، سيُنشَأ برنامجٌ ذو مسار تنفيذ غير معروف مما يجعل من شبه المستحيل تتبع الأخطاء الحاصلة وتصحيحها.
من جهة أخرى، هنالك حالات يكون فيها استعمال الكلمة goto
مفيدًا ويبسِّط الشيفرة بشكل كبير. إحدى هذه الحالات هي تجزئة حلقة for
متشعبة أو كتلة if
شرطية عند شروط معينة.
انظر أيضًا
- الكلمة المفتاحية
break
: تُستعمَل للخروج من الحلقات التكرارية، إذ تتخطى الشيفرة التي بعدها وشروط الحلقة المحددِّة وتخرج منها. - الكلمة المفتاحية
continue
: تتخطى الشيفرة التي تليها في حلقة التكرار إلى عملية التحقق من التعبير الشرطي لتلك الحلقة ثم يُستأنَف عمل حلقة التكرار بشكل طبيعي. - الحلقة
do...while
: تعمل بنفس الطريقة التي تعمل بها الحلقةwhile
باستثناء أنه يُتحقق من الشرط في نهاية الحلقة وليس في بدايتها. - الكلمة المفتاحية
else
: يسمح بالتحكم بشكل أوسع بتسلسل عملية التحقق من عدة شروط معينة عند تنفيذ الشيفرة عوضًا عن التحقق من شرط وحيد عند استعمال التعبيرif
. - الحلقة
for
: تُستعمَل لتكرار كتلة برمجية معينة من الشيفرة عددًا محدَّدًا من المرات. - التعبير الشرطي
if
: يتحقَّق من شرط معيَّن وينفِّذ الكتلة البرمجية المكتوبة ضمنه إن كان محقَّقًا (أي كانت قيمتهtrue
). - الكلمة المفتاحية
return
: تقاطع المفتاحية تنفيذ أيَّ دالةٍ وتعيد قيمةً من الدالة إلى من استدعاها إن حدُّدت. - التعبير
switch...case
: يتحقَّق -كما فيif
- من قيمة محدَّدة بطريقة تسمح للمبرمج بتحديد عدة شيفرات تُنفَّذ إحداها بناءً على تلك القيمة المفحوصة. - الحلقة
while
: تكرِّر تنفيذ الكتلة البرمجية التي ضمنها بشكل مستمر ولا نهائي ما دامت قيمة الشرط المنطقي المعطى هيtrue
ومتى ما أصبحت قيمة الشرط المنطقيfalse
، تتوقف الحلقة وتخرج.