حلقة do...while في لغة C هي عبارة عن هيكل تحكم بالتكرار يشبه حلقة while، ولكنه يضمن تنفيذ الكتلة البرمجية مرة واحدة على الأقل قبل التحقق من الشرط. هذا هو الفرق الرئيسي بينهما.

شرح كيفية عملها:

  1. التنفيذ: يتم تنفيذ كتلة الأوامر الموجودة داخل حلقة do أولاً.
  2. التحقق من الشرط: بعد تنفيذ الأوامر، يتم فحص الشرط الموجود داخل while.
  3. التكرار (إذا تحقق الشرط): إذا كان الشرط صحيحًا (True)، يعود البرنامج لتنفيذ كتلة الأوامر مرة أخرى، ثم يعيد فحص الشرط، وهكذا.
  4. الانتهاء (إذا لم يتحقق الشرط): إذا أصبح الشرط خاطئًا (False)، يتوقف التكرار، ويستمر البرنامج في تنفيذ الأوامر التي تلي حلقة do...while.

الصيغة العامة:

C
do {
// كتلة الأوامر التي سيتم تنفيذها
statement1;
statement2;
...
} while (condition); // الشرط الذي يتم فحصه

مثال بسيط:

C
#include <stdio.h>

int main() {
int i = 0;
do {
printf("قيمة i هي: %d\n", i);
i++;
} while (i < 5);
return 0;
}

مخرجات البرنامج:

قيمة i هي: 0
قيمة i هي: 1
قيمة i هي: 2
قيمة i هي: 3
قيمة i هي: 4

في هذا المثال، سيتم طباعة قيمة i من 0 إلى 4، حتى لو كانت قيمة i في البداية أكبر من أو تساوي 5، سيتم تنفيذ حلقة do مرة واحدة على الأقل.

متى نستخدم do...while؟

تُستخدم حلقة do...while عندما يكون من الضروري تنفيذ كتلة الأوامر مرة واحدة على الأقل بغض النظر عن قيمة الشرط في البداية. من الأمثلة الشائعة:

  • التحقق من صحة مُدخلات المستخدم: عندما نطلب من المستخدم إدخال قيمة معينة، ونريد التحقق من صحة هذه القيمة قبل المتابعة. نستخدم do...while لجعل المستخدم يُدخل قيمة على الأقل، ثم نتحقق من صحتها.
  • القوائم والخيارات: عندما نعرض قائمة من الخيارات للمستخدم، ونريد التأكد من أنه اختار خيارًا صحيحًا.

الفرق بين while و do...while:

الخاصيةwhiledo...while
فحص الشرطقبل تنفيذ الأوامربعد تنفيذ الأوامر
عدد مرات التنفيذقد لا يتم التنفيذ أبدًا إذا كان الشرط خاطئًايتم التنفيذ مرة واحدة على الأقل

باختصار، حلقة do...while تضمن لك تنفيذ الأمر مرة واحدة  وهذا هو اختلافها عن عنصر while.