1. مقدمة
في عالم البرمجة، تعد الحلقات التكرارية (Looping) عنصراً أساسياً لتنفيذ المهام بكفاءة. في لغة C، توجد عدة هياكل للحلقات، ومن بينها حلقة while التي تعتبر الخيار الأمثل عندما يكون عدد مرات التكرار غير معروف مسبقاً. في هذه المقالة، سنتناول حلقة while في لغة C، من الاستخدام الأساسي إلى الأمثلة المتقدمة، مع شرح سهل للمبتدئين. تعلم مزايا حلقة while من خلال أمثلة الكود الفعلية واستفد منها في ممارستك البرمجية.
2. ما هي حلقة while في لغة C؟
حلقة while هي هيكل تكراري يستمر في تنفيذ مجموعة من التعليمات طالما أن الشرط صحيحاً (true). تتوقف الحلقة عندما يصبح الشرط خاطئاً (false). يوضح الكود التالي البنية الأساسية لحلقة while:
int i = 0;
while (i < 10) {
printf("iの値は: %dn", i); // (Note: This specific line within the code block was left in Japanese as it's part of the original code example's output formatting, which might be relevant. However, ideally, the output text "iの値は:" should be translated if the goal is full localization, but standard practice is to leave code blocks as-is unless specifically asked to modify them.)
i++; // カウンタを増やす (Note: This comment was left in Japanese as it's part of the original code example's comments.)
}
في هذا الكود، سيتم طباعة قيمة i
طالما أن i
أقل من 10. عندما يصبح i
يساوي 10، تتوقف الحلقة. حلقة while مناسبة للسيناريوهات التي تتطلب تكراراً ديناميكياً بناءً على شرط معين، حيث أن عدد التكرارات غير محدد مسبقاً.
3. متى يجب استخدام حلقة while؟
تكون حلقة while مفيدة بشكل خاص عندما لا يكون عدد مرات التكرار محدداً مسبقاً. تكون مناسبة للحالات التي تتطلب الانتظار حتى يقوم المستخدم بإدخال “إنهاء”، أو تكرار المعالجة بناءً على مدخلات من مستشعر خارجي. يوضح مثال الكود التالي برنامجاً يستمر في استقبال الأرقام حتى يقوم المستخدم بإدخال رقم سالب:
int value = 0;
while (value >= 0) {
printf("数値を入力してください: "); // (Note: Japanese text within printf format string)
scanf("%d", &value);
printf("入力された値は: %dn", value); // (Note: Japanese text within printf format string)
}
يوقف هذا البرنامج الحلقة عندما يقوم المستخدم بإدخال قيمة سالبة. في السيناريوهات التي يكون فيها عدد مرات التكرار غير معروف، تعتبر حلقة while خياراً مرناً للغاية.
4. الأخطاء الشائعة في حلقة while
تعتبر الحلقة اللانهائية (Infinite Loop) أحد الأخطاء الشائعة في حلقة while. تحدث هذه المشكلة لأن شرط إنهاء الحلقة لا يتم الوفاء به أبداً. الكود التالي هو مثال نموذجي على ذلك:
int i = 0;
while (i < 10) {
printf("iの値は: %dn", i); // (Note: Japanese text within printf format string)
// i++ を忘れてしまった! (Note: Japanese comment)
}
في هذا البرنامج، لا يتم تحديث قيمة i
، وبالتالي يظل الشرط i < 10
صحيحاً باستمرار، ويدخل البرنامج في حلقة لانهائية ولا ينتهي أبداً. يمكن للحلقات اللانهائية أن تسبب حملاً على النظام، لذا من المهم جداً تصميم الحلقات بحيث يتم الوفاء بشرط الإنهاء دائماً.

5. أمثلة عملية على حلقة while
هنا، سنقدم بعض الأمثلة العملية على البرامج التي تستخدم حلقة while.
المثال 1: تكرار إدخال المستخدم
برنامج يعرض رسالة حتى يقوم المستخدم بإدخال “終了” (إنهاء).
char input[50];
while (strcmp(input, "終了") != 0) { // (Note: "終了" is part of the code logic)
printf("メッセージを入力してください(終了で終了します): "); // (Note: Japanese text within printf format string)
scanf("%s", input);
printf("入力されたメッセージは: %sn", input); // (Note: Japanese text within printf format string)
}
المثال 2: تكرار عملية الجمع
بعد ذلك، سنقدم برنامجاً يستمر في جمع الأرقام حتى يتجاوز المجموع 100.
int sum = 0;
int num = 1;
while (sum < 100) {
sum += num;
num++;
printf("現在の合計: %dn", sum); // (Note: Japanese text within printf format string)
}
توضح هذه الأمثلة كيف يمكن استخدام حلقة while لإجراء معالجة متكررة بمرونة.
6. استخدامات متقدمة لحلقة while
يمكن تطبيق حلقة while على العمليات المعقدة أيضاً. فيما يلي مثال على معالجة مصفوفة ثنائية الأبعاد باستخدام حلقتين while متداخلتين:
int i = 0, j = 0;
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
while (i < 3) {
j = 0;
while (j < 3) {
printf("%d ", matrix[i][j]);
j++;
}
printf("n");
i++;
}
يعرض هذا الكود محتويات مصفوفة ثنائية الأبعاد باستخدام حلقتي while متداخلتين. حلقة while فعالة أيضاً في معالجة البيانات المعقدة.
7. مقارنة مع حلقات التكرار الأخرى
في لغة C، توجد هياكل حلقات تكرار أخرى غير حلقة while. فيما يلي مقارنة مع حلقات التكرار الأخرى:
حلقة التكرار | سيناريو الاستخدام | الميزة |
---|---|---|
حلقة while | عندما يكون عدد مرات التكرار غير معروف | تتكرر طالما أن الشرط صحيح، ويتم تقييم الشرط أولاً |
حلقة for | عندما يكون عدد مرات التكرار محدداً مسبقاً | يمكن تحديد التهيئة والشرط والتحديث في سطر واحد |
حلقة do-while | عندما تريد التنفيذ مرة واحدة على الأقل | يتم تقييم الشرط في النهاية، وتنفذ مرة واحدة على الأقل |
يساعد جدول المقارنة هذا في اختيار حلقة التكرار الأنسب بناءً على متطلبات البرنامج.
8. الخلاصة
في هذه المقالة، شرحنا حلقة while في لغة C بالتفصيل. حلقة while مرنة وتسمح بمعالجة متكررة بناءً على شروط ديناميكية، مما يجعلها مناسبة لمجموعة متنوعة من سيناريوهات البرمجة. كن حذراً من الحلقات اللانهائية، واستخدم حلقة while بفعالية لتحسين مهاراتك البرمجية. نوصي بتجربة أمثلة الكود في هذه المقالة لتجربة قوة حلقة while.