مفهوم حلقة for loop في Dart 7 - Programmer Tech
Dart and flutter

مفهوم حلقة for loop في Dart 7

for loop في Dart

مفهوم حلقة for loop في Dart

حلقة التكرار (for loop) هذا النوع من الحلقات يٌتم إستخدَامه من أجل تكرار الكود عدة مرات, و يستخدم من اجل المرور على جميع عناصر سلسلة ما أو مصفوفة و لا يحتاج إلى تعريف عدّاد او بداية له او نهاية, أي إذا كنا نريد تنفيذ كود معين 6 مرات, نضعه بداخل حلقة تعيد نفسها 6 دورات.

إن حلقة for يعني أن الحلقة تستمر في الدوران أو التكرار ما دام الشرط المطلوب منه لم يتحقق بعد و في كل دورة في داخل حلقة for و قبل أن يبدأ جهاز الحاسوب بتنفيذ الأوامر الموضوعة فيها يقوم الكمبيوتر بمقارنة قيمة العدّاد في الوقت الحالي مع الشرط الموضوع.

في حال كانت قيمة العداد أصغر من قيمة الشرط يقوم بتنفيذ الأوامر التي وضعناها في داخل الحلقة مرة واحدة ثم يضيف أو ينقص واحد من قيمة العداد, و بعدها يرجع للأعلى لكي يقارن قيمة العداد في الوقت الحالي مع قيمة الشرط من جديد و يظل على هذه الحال حتى تصبح قيمة هذا العدّاد لا تتوافق مع الشرط الموضوع.

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

في لغة Dart، حلقة “for” تستخدم لتنفيذ سلسلة من العبارات مرات متعددة وفقًا لشرط محدد. تتكون حلقة “for” من ثلاثة أجزاء: التهيئة (initialization)، الشرط (condition)، والتحديث (update).

تتبع هذه الصيغة العامة لحلقة “for” في Dart:

for (initialization; condition; update) {
  // statements
}

التهيئة (initialization): يتم تعريف المتغيرات أو إجراء الإعدادات اللازمة قبل بدء تنفيذ الحلقة. عادةً ما تتمثل التهيئة في تعيين قيمة لمتغير تحكم (counter variable) وتهيئة أي متغيرات أخرى إذا لزم الأمر.

الشرط (condition): يتم التحقق من الشرط قبل تنفيذ كل دورة من الحلقة. إذا كان الشرط صحيحًا (true)، يتم تنفيذ العبارات داخل الحلقة. إذا كان الشرط غير صحيح (false)، يتم الخروج من الحلقة واستئناف تنفيذ الأوامر التالية في البرنامج.

التحديث (update): يتم تحديث قيمة المتغيرات بعد كل دورة من الحلقة. عادةً ما يتم استخدام هذا الجزء لزيادة قيمة المتغير التحكم أو إجراء أي تغييرات أخرى على المتغيرات المستخدمة في الحلقة.

عند تنفيذ الحلقة، يتم تنفيذ العبارات داخل الحلقة بترتيبها حتى يتم تحقيق شرط الخروج من الحلقة.

فيما يلي مثال بسيط يوضح استخدام حلقة “for” في Dart:

void main() {
  for (int i = 0; i < 5; i++) {
    print('Iteration $i');
  }
}

في هذا المثال، يتم تهيئة المتغير i بقيمة 0 في التهيئة، ويتم التحقق من الشرط i < 5 قبل تنفيذ كل دورة من الحلقة، ويتم زيادة قيمة i بمقدار 1 في التحديث. ستنفذ الحلقة 5 دورات وتقوم بطباعة النص “Iteration” مع قيمة المتغير i في كل دورة.

النتيجة المتوقعة:

Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 4

هذا هو المفهوم الأساسي لحلقة “for” في Dart. يمكنك تغيير القيم المستخدمة والعمليات داخل الحلقة وفقًا لاحتياجاتك الخاصة.

مثال 1 حلقة “for” الأساسية:

void main() {
  for (int i = 0; i < 5; i++) {
    print('Iteration $i');
  }
}

في هذا المثال، يتم تنفيذ الحلقة بدءًا من القيمة 0 للمتغير i، ثم يتم طباعة “Iteration” مع قيمة i في كل دورة. سيستمر التحديث بزيادة i بمقدار واحد في كل مرة حتى يكون i أكبر من 5. النتيجة المتوقعة هي:

Iteration 0
Iteration 1
Iteration 2
Iteration 3
Iteration 4

مثال 2 حلقة “for” للعداء العكسي:

void main() {
  for (int i = 5; i >= 0; i--) {
    print('Countdown: $i');
  }
}

في هذا المثال، يتم تنفيذ الحلقة بدءًا من القيمة 5 للمتغير i، ثم يتم طباعة “Countdown” مع قيمة i في كل دورة. يتم تحديث i بالتنقيص بمقدار واحد في كل مرة حتى يصل إلى 0. النتيجة المتوقعة هي:

Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1
Countdown: 0

مثال 3 حلقة “for” للتكرار عبر عناصر في قائمة:

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Orange'];

  for (String fruit in fruits) {
    print('Fruit: $fruit');
  }
}

في هذا المثال، يتم تنفيذ الحلقة لكل عنصر في قائمة الفواكه fruits. يتم تعيين كل عنصر في القائمة إلى المتغير fruit، ومن ثم يتم طباعة “Fruit” مع قيمة fruit في كل دورة. النتيجة المتوقعة هي:

Fruit: Apple
Fruit: Banana
Fruit: Orange

ماذا يحدث إذا لم يتحقق الشرط في حلقة “for” في Dart؟

إذا لم يتحقق الشرط في حلقة “for” في Dart، فإن تنفيذ الحلقة يتوقف ويتم الخروج منها. يعني ذلك أن العبارات داخل الحلقة لن تنفذ وسيتم استئناف تنفيذ الأوامر التالية في البرنامج.

على سبيل المثال، افترض أن لدينا الحلقة التالية:

for (int i = 0; i < 5; i++) {
  print('Iteration $i');
  if (i == 3) {
    break;
  }
}

في هذا المثال، يتم تنفيذ الحلقة عندما يكون i أقل من 5. ولكن عندما يكون i يساوي 3، يتم استخدام العبارة break للخروج من الحلقة فورًا. سيتم طباعة النص “Iteration” مع قيم المتغير i في الدورات الأولى (0، 1، 2، 3)، ولكن لن يتم تنفيذ الحلقة بعد ذلك وستستأنف تنفيذ الأوامر التالية في البرنامج.

النتيجة المتوقعة:

Iteration 0
Iteration 1
Iteration 2
Iteration 3

لذلك، عندما لا يتحقق الشرط في حلقة “for” في Dart، يتم تجاهل الحلقة والانتقال إلى التعليمات البرمجية التالية الموجودة بعد الحلقة.

هل يمكنني تغيير ترتيب الأجزاء في حلقة “for” في Dart؟

نعم، يمكنك تغيير ترتيب الأجزاء في حلقة “for” في Dart. الأجزاء الثلاثة في حلقة “for” (التهيئة، الشرط، التحديث) ليست محددة بترتيب ثابت، بل يمكن تغيير ترتيبها وفقًا لاحتياجاتك.

فيما يلي بعض الأمثلة التوضيحية لتغيير ترتيب الأجزاء في حلقة “for” في Dart:

1 – تغيير ترتيب الأجزاء بحيث يتم التهيئة أولاً، ثم التحديث، وأخيرًا الشرط:

void main() {
  int i = 0;
  for (; ; i++) {
    if (i >= 5) {
      break;
    }
    print('Iteration $i');
  }
}

في هذا المثال، تم تحرير مكان التهيئة بحيث يتم تهيئة المتغير i خارج الحلقة، ثم يتم ترك المكان فارغاً في جزء التهيئة بداخل الحلقة. هذا يعني أن التهيئة تمت خارج الحلقة وتكون قيمة i معرفة بالفعل. ثم يتم التحقق من الشرط في الجزء الأخير من الحلقة، ويتم تحديث i في كل مرة يتم فيها تنفيذ الحلقة.

2 – تغيير ترتيب الأجزاء بحيث يتم التحديث أولاً، ثم التهيئة، وأخيرًا الشرط:

void main() {
  int i = 0;
  for (; i < 5; ) {
    print('Iteration $i');
    i++;
  }
}

في هذا المثال، تم تحرير مكان التحديث بحيث يتم زيادة قيمة i داخل الحلقة بعد طباعة النص. ثم تأتي التهيئة بعد ذلك، ولكن تكون قيمة i معرفة بالفعل. الشرط يتم التحقق منه في بداية كل دورة من الحلقة.

يمكنك تغيير ترتيب الأجزاء بحسب احتياجاتك، ولكن تأكد من توفير التهيئة والشرط والتحديث في الحلقة بحيث يكون لديك تحكم صحيح في تنفيذ الحلقة وإيقافها عند الحاجة.

هل يمكن استخدام حلقة “for” في Dart بدون وجود شرط؟

في لغة Dart، حلقة “for” تتطلب وجود شرط بين قوسين في الجزء الثاني من الحلقة. وجود الشرط ضروري لتحديد متى يجب تنفيذ الحلقة ومتى يجب الخروج منها.

ومع ذلك، إذا كنت ترغب في إنشاء حلقة لا نهائية (تستمر إلى أجل غير معلوم) أو حلقة تعتمد على شرط آخر يتم التحقق منه داخل الحلقة نفسها، فيمكنك استخدام شرط يكون دائمًا صحيحًا (true) في الجزء الثاني من الحلقة.

فيما يلي مثال على كيفية استخدام حلقة “for” بدون وجود شرط واستخدام شرط آخر داخل الحلقة:

void main() {
  for (;;) {
    // Statements
    if (condition) {
      break;
    }
  }
}

في هذا المثال، تم استخدام for (;;) لإنشاء حلقة لا نهائية. الحلقة ستستمر في التكرار دون توقف حتى يتم تنفيذ شرط معين (مثل if (condition)). إذا تم تحقيق الشرط، يتم استخدام العبارة break للخروج من الحلقة.

من الجدير بالذكر أنه يجب أن تتأكد من وجود آلية لإنهاء الحلقة في وقت ما، حتى لا تؤدي إلى حدوث حلقة لا نهائية تسبب تعليق التطبيق.

 

Ahmedkaissar

من مصر من محافظة الجيزة مبرمج ويب و خبير أمن معلومات محب للتقنية و الأمن المعلوماتي مدرب للغات "Python,html, css, php, js, laravel"
زر الذهاب إلى الأعلى