كيفية التعامل مع الحلقات في لغة سي

مقدمة إلى حلقات C for و while و do-while

يقدم لنا C ثلاث طرق لأداء حلقة:للحلقاتوأثناء الحلقاتوتفعل أثناء الحلقات. كلهم يسمحون لك بالتكرارالمصفوفات، ولكن مع بعض الاختلافات. دعونا نراهم بالتفصيل.

للحلقات

الطريقة الأولى ، وربما الأكثر شيوعًا ، لإجراء حلقة هيللحلقات.

باستخدامforالكلمة الرئيسية يمكننا تحديدقواعدمن الحلقة في المقدمة ، ثم قم بتوفير الكتلة التي سيتم تنفيذها بشكل متكرر.

مثله:

for (int i = 0; i <= 10; i++) {
  /* instructions to be repeated */
}

ال(int i = 0; i <= 10; i++)تحتوي الكتلة على 3 أجزاء من تفاصيل التكرار:

  • الشرط الأولي (int i = 0)
  • الاختبار (i <= 10)
  • الزيادة (i++)

نحدد أولاً متغير حلقة ، في هذه الحالة يسمىi.iهو اسم متغير شائع يستخدم للحلقات ، جنبًا إلى جنب معjللحلقات المتداخلة (حلقة داخل حلقة أخرى). إنها مجرد اتفاقية.

تتم تهيئة المتغير بقيمة 0 ، ويتم إجراء التكرار الأول. ثم يتم زيادتها كما يقول جزء الزيادة (i++في هذه الحالة ، تزداد بمقدار 1) ، وتتكرر كل الدورة حتى تصل إلى الرقم 10.

داخل الكتلة الرئيسية للحلقة يمكننا الوصول إلى المتغيرiلمعرفة التكرار الذي نحن فيه. يجب أن يطبع هذا البرنامج0 1 2 3 4 5 5 6 7 8 9 10:

for (int i = 0; i <= 10; i++) {
  /* instructions to be repeated */
  printf("%u ", i);
}

يمكن أن تبدأ الحلقات أيضًا من رقم كبير ، وتنتقل برقم أقل ، مثل هذا:

for (int i = 10; i > 0; i--) {
  /* instructions to be repeated */
}

يمكنك أيضًا زيادة متغير الحلقة بمقدار 2 أو قيمة أخرى:

for (int i = 0; i < 1000; i = i + 30) {
  /* instructions to be repeated */
}

أثناء الحلقات

أثناء الحلقاتأسهل في الكتابة من aforحلقة ، لأنها تتطلب المزيد من العمل من جانبك.

بدلاً من تحديد جميع بيانات الحلقة مقدمًا عند بدء الحلقة ، كما تفعل في ملفforحلقة باستخدامwhileأنت فقط تتحقق من حالة:

while (i < 10) {

}

هذا يفترض أنiتم تعريفه بالفعل وتهيئته بقيمة.

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

هذا ما تحتاجه للحصول على حلقة while "الصحيحة":

int i = 0;

while (i < 10) { /* do something */

i++; }

هناك استثناء واحد لهذا وسنراه بعد دقيقة واحدة. من قبل ، اسمحوا لي أن أقدمdo while.

افعل أثناء الحلقات

بينما تعد الحلقات رائعة ، ولكن قد تكون هناك أوقات تحتاج فيها إلى القيام بشيء معين: تريد دائمًا تنفيذ كتلة ، ثميمكنقم بتكريرها.

يتم ذلك باستخدام ملفdo whileالكلمة الرئيسية بطريقة تشبه إلى حد بعيد ملفwhileحلقة ، لكنها مختلفة قليلاً:

int i = 0;

do { /* do something */

i++; } while (i < 10);

الكتلة التي تحتوي على/* do something */يتم تنفيذ التعليق دائمًا مرة واحدة على الأقل ، بغض النظر عن التحقق من الحالة في الأسفل.

ثم حتىiأقل من 10 ، سنكرر الكتلة.

الخروج من حلقة باستخدامbreak

في كلجالحلقات لدينا طريقة للخروج من الحلقة في أي وقت ، على الفور ، بغض النظر عن الشروط المحددة للحلقة.

يتم ذلك باستخدام ملفbreakكلمة رئيسية.

هذا مفيد في كثير من الحالات. قد ترغب في التحقق من قيمة المتغير ، على سبيل المثال:

for (int i = 0; i <= 10; i++) {
  if (i == 4 && someVariable == 10) {
    break;
  }
}

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

int i = 0;
while (1) {
  /* do something */

i++; if (i == 10) break; }

من الشائع وجود هذا النوع من الحلقات في C.

تحميل مجانيكتيب C


المزيد من دروس clang: