لغة البرمجة C ++ نطاق من أجل حلقة هي ميزة حديثة نسبيًا تم تقديمها لأول مرة في C ++ 11. الحلقات المستندة إلى النطاق تنفيذ حلقة فوق المدى. إنها تعمل مع أي حاوية بها مكرر ، بما في ذلك المصفوفات والمتجهات والخرائط والمجموعات وحتى الأنواع المعرفة من قبل المستخدم والتي تنفذ العمليات الضرورية.
بناء الجملة القائم على النطاق للحلقة
أ نطاق من أجل حلقة له صيغة واضحة جدا. وهي مكونة من متغير الحلقة والحاوية أو النطاق المراد تكرارها ونقطتين.
ل ( النطاق_الإعلان: تعبير_المدى ) بيان الحلقة
نطاق_الإعلان: إعلان النطاق هو إعلان عن متغير من نفس نوع عناصر تعبير مكون النطاق. لتحديد نوع المكونات تلقائيًا في ملف المدى_التعبير ، يتم استخدام الكلمة الأساسية التلقائية بشكل متكرر.
المدى_التعبير: كل تعبير يمثل قائمة من العناصر هو المدى_التعبير .
بيان الحلقة: يتكون جسم حلقة for من عبارة واحدة أو أكثر يجب تكرارها حتى نهاية range_expression.
طرق لتنفيذ التكرار المستندة إلى النطاق
هناك ثلاث طرق يمكن استخدامها نطاق من أجل حلقة .
الطريقة الأولى: استخدام المصفوفات
نطاق من أجل حلقة يمكن تشغيلها باستخدام مصفوفات مثل هذه.
# تضميناستخدام اسم للمحطة؛
انت مين ( ) {
int numArray [ ] = { 6 و 7 و 8 و 9 و 10 } ؛
ل ( int n: numArray ) {
كوت << ن << '' ؛
}
يعود 0 ؛
}
في الكود أعلاه ، تمت تهيئة مصفوفة أعداد صحيحة تسمى numArray. ثم تم طباعة عناصر numArray باستخدام ملف نطاق من أجل حلقة .
انتاج |
الطريقة الثانية: استخدام المتجهات
نطاق من أجل حلقة يمكن تشغيلها باستخدام ناقلات مثل هذا.
# تضمين# تضمين <ناقل>
استخدام اسم للمحطة؛
انت مين ( )
{
كثافة العمليات س ؛
المتجه < int > في = { 1 و 2 و 3 و 4 و 5 } ؛
ل ( int x: v )
{
كوت << x << '' ؛
}
يعود 0 ؛
}
في الكود أعلاه ، دعا المتجه في تمت تهيئته. هنا ، تم طباعة عناصر المتجه v باستخدام a نطاق من أجل حلقة.
انتاج |
الطريقة الثالثة: إعلان المجموعة داخل الحلقة
نطاق من أجل حلقة يمكن أيضًا إعلانها داخل الحلقة. إنه يعمل بشكل مشابه لكيفية عمل المصفوفة أو المتجه الفعلي.
# تضميناستخدام اسم للمحطة؛
انت مين ( ) {
ل ( int n: { 5 و 10 و خمسة عشر و عشرين و 25 } ) {
كوت << ن << '' ؛
}
يعود 0 ؛
}
في الكود أعلاه ، يتم التصريح عن المجموعة داخل الحلقة نفسها ثم طباعتها.
انتاج |
مزايا وعيوب النطاق المعتمد على الحلقة
نطاق من أجل حلقة له فوائد أكثر من التقليدية ل حلقات بعدة طرق ، خاصة عند العمل مع الحاويات. نظرًا لأن متغير الحلقة يتم تعريفه داخل الحلقة ويتم تحديد النطاق بوضوح ، فإنه يجعل الكود أقصر بكثير ويسهل فهمه. كما أنها أكثر أمانًا ، حيث لا داعي للقلق بشأن الأخطاء الفردية أو أخطاء الفهرسة الأخرى. هم أكثر قابلية للتكيف حيث يمكنهم استخدام أي حاوية ، بغض النظر عن نوعها أو حجمها. ال نطاق من أجل حلقة له العديد من الفوائد ، أحدها أنه يجعل كودنا أكثر وضوحًا وأسهل في الفهم.
الحلقات المستندة إلى النطاق لديك بعض القيود ، رغم ذلك. نظرًا لأن متغير الحلقة هو نسخة من العنصر أو مرجع له وليس العنصر الفعلي ، فلا يمكن استخدامه لتغيير عناصر الحاوية. نظرًا لتكرار النطاق الكامل باستمرار ، لا يمكننا تخطي أي عناصر أو تكرار جزء فقط من البيانات.
خاتمة
نطاق من أجل حلقة هي ميزة قوية ومتعددة الاستخدامات للغة البرمجة C ++. بالمقارنة مع الحلقات التقليدية ، فإنها توفر أمانًا ومرونة مُحسّنين جنبًا إلى جنب مع نهج واضح ومقروء للتكرار عبر الحاويات وتقليل الكود. نطاق من أجل حلقة أمر لا بد منه لتعلم المبرمجين C ++.