أهلا ومرحبا بكم مرة أخرى.
لا زلت سأتحدث قليلاً عن التحكم في التدفق.
لذلك دعونا نتعمق في الحلقات لتكرار التعليمات البرمجية.
أولاً ، سنتحدث عن حلقة for هذه.
تدور الحلقة for حول
تكرار الكود. لذلك فقط للتذكير ، فإن تكرار
الكود هو وسيلة للسماح بعدم التكرار
، وربما تقوم بالفعل بتنفيذ أكثر من رمز واحد في وقت واحد.
لذا فإن لغة البرمجة c لها بعض التركيبات المصممة للغة
التي يمكنك استخدامها عندما تريد تكرار الكود.
وهذا يسمح لك بتكرار مجموعة من العبارات حتى يتم استيفاء بعض الشروط.
لذا فهي تشبه الحلقة for وأنك ستقيم تعبيرًا منطقيًا
، وهو شرط. لا يمكنك الركض إلى الأبد.
عندما تجري في حلقة إلى الأبد ، فهذا يعني أنها حلقة لا نهائية.
وهناك أوقات معينة فقط قد ترغب في القيام بذلك
عادة مرة أخرى مثل المراقبة أو الاستماع إلى شيء ما.
لذلك يمكن التحكم في عدد مرات تكرار الحلقة ببساطة عن طريق الحساب.
هناك نوعان من الحلقات التي يمكنك
القيام بها ، حلقة التحكم في العداد أو مثل حلقة التحكم الحارس هي ما يسمونه.
تعني حلقة التحكم في العداد أن الحلقة تعمل
10 مرات ، 20 مرة ، 30 مرة ، مقدار محدد من الوقت.
يكرر نفس كتلة البيان داخل الحلقة
عدة مرات.
يمكن أن يكون لديك نوع آخر من الحلقات حيث لا يتم التحكم فيه من خلال العداد.
قد يتم تشغيله 5 مرات ، قد يتم تشغيله 100 ، قد يحتاج
إلى 20 ، كل هذا يتوقف على شرط أو متغير أو شيء ما. على سبيل المثال ، يمكنك تشغيل حلقة تقول
إنني سأقوم بتشغيل الحلقة مرارًا وتكرارًا حتى يدخل
المستخدم.
حتى يتغير المتغير إلى الإقلاع عن التدخين. لا يتم التحكم في العداد. لا تعتمد.
مرة أخرى ، قد يتم تشغيله 10 مرات ، وقد يتم تشغيله 100 مرة.
هذان هما النوعان المختلفان من الحلقات. ولذا سأقدم أمثلة لكليهما
، لكن فكر في هذا على مستوى عالٍ متى أرغب في تكرار الكود؟
حسنًا ، قد أرغب في تكرار الكود 5 مرات ، ومقدار معين من الوقت
، ومقدار محدد من الوقت ، أو قد أرغب في وضع رمز
بناءً على شرط معين أدخله المستخدم ، وهو ما يسمى الحارس.
لدينا حلقة for لديها الكلمة الأساسية. يتم استخدامه لتنفيذ عدد
معين من المرات. عادة ما يتم استخدامه للتحكم في العداد ، لكن لا داعي لأن يكون كذلك.
يمكنك استخدامه لحلقة التحكم في العداد أو الحارس للتحكم في الحلقة.
الأمر متروك لك. لكن الكثير من الأمثلة في الكثير من الممارسة
يتم التحكم فيها بشكل مضاد ، عدد معين من المرات.
إذا كنت تريد عرض الأرقام من 1 إلى 10 ، على سبيل المثال ، يمكنك استخدام حلقة for.
لن ترغب في كتابة 10 أسطر من التعليمات البرمجية
بنفس عبارة printf التي تعرض رقمًا مختلفًا.
هذا غير فعال للغاية. إنها مضيعة للوقت.
يمكنك استخدام حلقة for لتكرار الكود.
ما ستفعله هو أن تفعل شيئًا كهذا.
إليك مقدمة لما تبدو عليه حلقة for
، بناء الجملة.
لديك الكلمة المفتاحية ، ثم لديك هذه الأقواس.
مرة أخرى ، تحدد الأقواس الأشياء المختلفة التي تحدث
في حلقة for.
ثم لديك قوس ، ولديك عبارات داخل الأقواس.
مرة أخرى ، الأقواس تمثل جسم الحلقة ، تمامًا
مثل الأقواس التي تمثل جسم عبارة if.
إذا كان لديك عبارة واحدة هناك ، فأنت لست بحاجة إلى الأقواس ، ولكن الممارسة
الجيدة لاستخدامها دائمًا.
في هذا المثال هنا ، ترى الكلمة الرئيسية ، يجب أن تكون أول شيء تحدده.
يتم التحكم في العملية وطول مدة تشغيلها وما يظهر بين الأقواس بعد الكلمة
الأساسية ، والتي سنخوضها في تفاصيل محددة.
هناك 3 تعبيرات مختلفة بالداخل هناك.
ويمكنك التعرف عليها لأنها مفصولة بفاصلة منقوطة.
إذن ، تشير الفاصلة المنقوطة إلى أن هذا عبارة تعبير.
إذن ما الذي تفعله هذه الأشياء الثلاثة ، سنقوم بشرحها.
الإجراء الذي تريد تكراره
موجود داخل جسم الحلقة ، وهذا ما يحدث عدة مرات.
في هذا المثال ، جسم الحلقة هو printf.
لذلك ، إذا تم تقييم الشرط على أنه صحيح ، فسيستمر في طباعة هذا الرقم.
ومرة أخرى ، بالنسبة إلى العبارات الفردية ، يمكنك حذف الأقواس.
لذلك دعونا نناقش هذا بالتفصيل.
النمط العام للحلقة for هو أن لديك هذا النوع من العبارات.
لديك شرط لـ ومن ثم لديك شرط البداية ، هذا هو الرمز الكاذب.
أحاول وصف حلقة for هنا.
لذا فإن شرط البداية هو أول شيء ، كل شيء قبل الفاصلة المنقوطة الأولى.
الأمر الثاني هو شرط الاستمرارية مع وجود
فاصلة منقوطة في النهاية ، ثم آخر شيء بين القوسين هو الإجراء لكل تكرار.
وأريد أن أصف كل واحد من هؤلاء. وبعد ذلك يوجد بيان الحلقة داخل الجسم.
بيان الحلقة سهل جدًا. هذا فقط داخل الجسم.
هذا هو الكود الذي سيتم تنفيذه والذي يتكرر في كل مرة.
هذا أساسي جدًا.
ومرة أخرى ، يمكنك إما كسر الأقواس إذا كان لديك عبارات متعددة أو حذف
الأقواس إذا كان لديك عبارة واحدة.
شرط البداية ، هذا الشيء الأول الموجود داخل الأقواس
قبل الفاصلة المنقوطة الأولى عادة ما يكون ، ولكن ليس دائمًا
، يهيئ متغيرًا ، يسمى متغير التحكم في الحلقة.
هذا هو المتغير الذي ستبدأ في النظر إليه في كل تكرار.
لذا فإن متغير التحكم في الحلقة يكون عادة عدادًا لبعض الوقت
، وليس دائمًا مرة أخرى ، أريد التأكيد على أنه ليس من
الضروري أن يكون كذلك. لكن في كثير من الأحيان في حلقة
for يكون عدادًا ، ويتتبع عدد مرات تكرار الحلقة.
هذا ما يفعله شرط البداية ومتغير التحكم في الحلقة.
يمكنك أيضًا التصريح عن عدة متغيرات من نفس النوع وتهيئتها
هنا مع فصل الإعلان بفاصلات. حتى تتمكن من التهيئة متعددة هنا المتغيرات.
الآن اعتمادًا على مترجم c الذي تستخدمه ، قد
لا تتمكن من التصريح عن هذه المتغيرات داخل تعليمة for.
إذا كنت تستخدم أي شيء أقل من مترجم C99 ، فعليك أن
تعلن عن المتغيرات خارج جملة for ثم تقوم بتهيئتها فقط في هذا حيث
ينص شرط البداية ، لكننا
سنستعرض بعض هذه الأمثلة.
لكن شرط البداية هو المكان الذي تقوم فيه بتهيئة المتغيرات.
إنه متغير التحكم في الحلقة ويتم تسميته لهذا السبب لأنه يتحكم في
عدد المرات التي سيتم فيها تنفيذ الحلقة عند تهيئتها.
الشيء التالي الذي أريد التحدث عنه هو ذلك الشرط المستمر ، شرط الاستمرارية ، الجزء
الموجود قبل الفاصلة المنقوطة الأولى في الحلقة for.
هذا تعبير منطقي.
هذه هي الحالة التي سيتم تقييمها إلى صواب أو خطأ.
هذا عندما تقفز في الحلقة أو تخرج من الحلقة.
يحدد هذا ما إذا كان يجب متابعة تنفيذ الحلقة.
طالما أن هذا الشرط له قيمة صواب ، يستمر تنفيذ الحلقة
، وسيتم تنفيذ جميع العبارات في الجسم.
سيتحقق هذا عادةً من قيمة متغير التحكم في الحلقة.
لذلك تقوم بتهيئة متغير التحكم في الحلقة في حالة البداية
ثم تنظر إليه في حالة الاستمرارية.
يمكنك وضع أي منطق أو أي تعبير حسابي هنا طالما أنك تعرف ما تفعله.
يتم اختبار شرط الاستمرارية في بداية الحلقة وليس في نهايتها.
يشار إلى هذا على أنه حلقة الاختبار التمهيدي.
ستلاحظ الفرق عندما نتحدث عن حلقة do-while ، وهي حلقة ما بعد الاختبار.
ولكن ما يعنيه هذا هو أنه يمكن تنفيذ تعليمة الحلقة مرة واحدة
، ويمكن تنفيذها 0 مرة.
كل هذا يتوقف على ما إذا كان يتم تقييم حالة الاستمرارية إلى صواب أم خطأ.
إذا تم تقييمه على أنه خطأ ، فلن تقوم أبدًا بإعدام الجسد.
إذا تم تقييمها على أنها صحيحة ، فستقوم بإعدام ذلك الجسم مرة واحدة على الأقل.
الإجراء لكل تكرار يقع في نهاية حلقة for بعد الفاصلة المنقوطة الثانية ،
والذي عادةً ما يقوم بنوع من التعديل لمتغير التحكم في الحلقة.
سيزيده أو ينقصه إذا كان عداد حلقة أو إذا
كان حلقة خافرة ، فقد يطلب من المستخدم إدخال المزيد من المدخلات.
يمكنك أيضًا إجراء أكثر من تعديل واحد لمتغير.
يمكنك تعديل متغير التحكم في الحلقة ، ويمكنك تعديل المتغيرات الأخرى.
عليك فقط فصلهم بفاصلات.
لكن لتلخيص كل ما قلته
، لدينا هذا الجدول الصغير الذي يصف ذلك.
لكن قبل أن نتحدث عن ذلك ، دعونا نلقي نظرة على مثال صغير.
إذن هذا مثال. لدينا الكلمة الرئيسية.
ثم ستلاحظ أن لدينا int I يساوي 1 j يساوي 2 ، وهذا هو المكان
الذي نبدأ فيه المتغيرات.
ونحن في الواقع نقوم بتهيئة متغيرين هنا مفصولين بفاصلة ، عادةً في
حلقة for عادة ما نقوم فقط بتهيئة متغير واحد ، وهو متغير التحكم في الحلقة.
لكن في هذه الحالة ، نقوم بتهيئة I و j.
ثم بعد تلك الفاصلة المنقوطة ، لدينا الشرط.
متى سنقوم بالدخول ومتى سنخرج من هذه الحلقة.
سنقوم بالدخول طالما أنني أقل من 5.
هذا هو تقييمنا للتعبير المنطقي إلى صواب أو خطأ.
وبعد ذلك بعد الفاصلة المنقوطة الثانية
، سنقوم بتعديل متغير التحكم في الحلقة أو أي متغيرات أخرى معنية به.
هنا نقوم بعمل زائد زائد I ، هذا عامل
زيادة ، البادئة I. ثم نحدد j يساوي j زائد 2.
سيكون هذا عادةً شرط x الخاص بك ، مع تعديل متغير
التحكم في الحلقة.
ثم يتكون جسم الحلقة من تعليمة واحدة فقط ، لذا لا نحتاج إلى الأقواس.
نحن فقط نطبع قيم I في j.
لذا فإن الناتج الناتج عن هذا الرمز
سيكون القيم 2 و 8 و 18 و 32 و 50 في سطر واحد.
التكرار الأول للحلقة ، أنا سأساوي 1 ، j ستكون 2.
وهكذا ستقول أنا ضرب j ، أي 1 ضرب 2 وستعرضه.
سيتم التحقق للتأكد من أنني لست أكبر من 5 ، فأنا لست 1.
لذا ستعود وتنفذ مرة أخرى.
ونقوم أيضًا بتعديل هذا المتغير I في بياننا الأخير.
لذا في التكرار الثاني للحلقة ، سأساوي 2.
و j سيساوي 2 زائد 2 وهو 4.
والآن سنضرب 2 في 4 ، وهو ما يساوي
8 وسنعرضه ثم نتحقق من أنني أكبر
من 5؟ لا ، ما زلت 2.
لذا نعدل I ليصبح الآن مساويًا لـ 3 للتكرار
التالي ، ونعدل j ليكون مساويًا لـ 4 زائد
2 وهو 6.
ثم في التكرار الثالث
للحلقة ، نضرب I في J. نقول 3 ضرب 6 ونعرض 18.
قبل تنفيذ التكرار الرابع ، نتحقق لمعرفة ما إذا كنت أكبر من 5.
لا ، إنها 4. ثم نزيدها ، نقول إنها 5. إنها تساوي 5 ، لذا ستظل تعمل.
ثم نحصل على 32 ، ثم 50.
لذلك هذا بيان للبيان. تريد تشغيل هذا وتنفيذه في متصفح
الكود واللعب وتغيير الأشياء.
لكن ما نفعله هنا هو أننا نقوم بثلاثة أشياء منفصلة في سطر واحد من التعليمات البرمجية.
نحن بصدد تهيئة متغير التحكم في الحلقة أو أي متغيرات أخرى.
لدينا التعبير المنطقي بعد الفاصلة المنقوطة الأولى ، شرط الخروج.
ثم نقوم بتعديل متغير التحكم في الحلقة وأي متغيرات أخرى نريدها لتكون
الجزء الأخير من تعليمة for.
لتلخيص ما نقوم به ، وجدت هذا الرسم البياني الصغير
الجميل من كتاب وأردت أن أعرضه عليكم. هذا يلخص كل شيء.
تقوم تلك الفاصلة المنقوطة الأولى بتهيئة متغير التحكم في الحلقة.
بعد الفاصلة المنقوطة الأولى ، نقوم بتنفيذ الشرط الخاص بنا ، وهو التعبير المنطقي.
ثم بعد الفاصلة المنقوطة الثانية
، نقوم بتعديل متغير التحكم في الحلقة. وهذا هو المثال النموذجي الذي تراه.
هذه حلقة تحكم في العداد تبدأ من 1 وتنتقل إلى 10.
لذلك سوف يتم تنفيذ هذا في الواقع 10 مرات.
المفتاح هو أن يكون هناك أقل من 10. لذلك سترى العوامل العلائقية على أنها شروطنا ، تمامًا
كما رأينا العوامل العلائقية كشرط لنا في بيان if الخاص بنا.
المفتاح هنا هو أنك تريد تعديل متغير التحكم في الحلقة وإلا فلن تخرج أبدًا.
لذا فإن العدد الزائد مهم جدًا.
وفيما يتعلق بالزيادة المسبقة أو اللاحقة سواء كان ذلك زائد زائد قبل
المتغير أو بعده
، فلا داعي للقلق بشأنه لأنه سيزداد
أو ينقص فقط بعد تكرار الحلقة ، لذلك لا داعي للقلق. لا يهم إذا كنت تفعل
plus plus count أو count plus plus.
وأيضًا اعتمادًا على إصدار c الذي تقوم بتشغيله للمجمع
الخاص بك ، قد تتمكن من إعلان
عدد المتغيرات داخل الحلقة for أو قد تضطر إلى القول أن int count
يساوي 1 أو في count خارج حلقة for و ثم تهيئته في الفاصلة المنقوطة الأولى.
أضاف C99 التهيئة والإعلان في نفس الجزء
من حلقة for.
ولكن هذه هي الطريقة الأساسية لعمل حلقة for.
الآن دعنا نذهب إلى مثال صغير ، أريد أن أوضح لكم مرونة حلقة for.
هذا مثال حيث سنقوم ببساطة بجمع بعض الأعداد الصحيحة.
وفي هذا المثال ، سنطلب من المستخدم إدخال عدد من الأعداد الصحيحة التي يريد جمعها.
سنقوم بتخزين ذلك في متغير يسمى count.
سيكون لدينا الآن حلقة for تمر عبر كل هؤلاء اعتمادًا
على الرقم الذي قاموا بإدخاله خلال ذلك عدة مرات.
لذلك نقول هنا 4 ، لدينا int غير موقعة ، لا يجب أن تكون غير موقعة
لأن int I يساوي 1. نحن بصدد تهيئة متغير التحكم في الحلقة.
ثم نقول إذا كنت أقل من العد ، فهذا هو الوقت الذي سنخرج فيه وبعد ذلك
سنقوم بتعديل مادة الحلقة زائد زائد أنا.
لذلك هذا سوف يعمل. مرة أخرى ،
1 مع الرقم الذي أدخله المستخدم ، 10 أو 20.
وكل ما سنفعله هو أن نقول أن مجموع يساوي مجموع زائد 1.
الآن الحلقة for قوية جدًا لأن الحلقة for تسمح لك بتعديل
العديد من المتغيرات.
لا نحتاج حتى إلى وضع هذا المجموع زائد يساوي I في جسم حلقة for.
يمكننا وضعها في نهاية البيان الأخير.
إذن ، بالإضافة إلى زيادة I بمقدار 1 ، يمكننا القول أن مجموع زائد يساوي أنا زائد زائد.
لذلك فعلنا كل شيء في سطر واحد من التعليمات
البرمجية ، وهذا يوضح لك المرونة. كل هذا لأنه يمكننا تعديل المتغير
في تعليمة for نفسها. لا يجب أن يكون لدينا هذا الخط من الجسم.
لذلك دعونا نلقي نظرة على هذا المثال في كتل التعليمات البرمجية
لتظهر لك كيف يمكنك معالجته ومعرفة ما هو الإخراج.
هذا هو المثال الذي لدينا في المحاضرة. أريد المضي قدمًا ومحاولة تجميع هذا.
وعندما أقوم بتجميع هذا ، ستلاحظ أن لدي خطأ.
تقول أنه لا يمكنني التصريح عن المتغير الخاص بي داخل بيان for الخاص بي. هذا لأنني أقوم بتشغيل نسخة قديمة
من مترجم c. أنا أدير C89.
ربما لن يكون لديك هذا.
ولكن لحل المشكلة ، إذا رأيت هذا النوع من الأخطاء ، فكل
ما عليك إزالته خارج حلقة for. لذا فأنت تقول فقط إنني غير موقّع.
ثم داخل الحلقة for ، تقوم بتهيئتها
، شيء من هذا القبيل. الآن دعنا نحاول البناء
وعلي فقط التخلص من بعض محددات التنسيق هذه.
لذلك عندما أقوم بالتجميع بنجاح وأقوم بتشغيل
هذا البرنامج ، سترى كيف تعمل الحلقة.
سيطلب مني إدخال الأعداد الصحيحة التي أريد جمعها. إذا أدخلت 5 ، فسيجمع
1 2 3 4 و 5 وهو 15.
وما يمكننا القيام به لتصحيح هذا هو أنه يمكننا إضافة قوس إلى حلقة for ،
ويمكننا فقط معرفة عدد مرات تشغيله ، ويمكننا إضافة عبارة print ليس
بالضرورة لتصحيحها ، ولكن فقط لمعرفة ما يحدث ، يمكننا القول داخل الحلقة.
وسيخبرنا هذا أن الحلقة تعمل 5 مرات
لأنها ستعمل على العد.
لذا ما أريد أن أوضحه هو عدد مرات تشغيل هذا. الآن عندما أقوم ببنائه
وتشغيله ، سأرى ما يحدث لكل تكرار.
لذلك سأقول 8.
الحلقة الداخلية ، الحلقة الداخلية ، الحلقة الداخلية ، لم أقم بإضافة خط تغذية. لذلك من الصعب القراءة ، لكن
الحلقة الداخلية تعرض 8 مرات.
ثم أجمع كل من هذه الأعداد داخل حلقات ، إذن الإجابة
هي 36 ، 1 زائد 2 زائد 3 زائد 4 زائد 5 زائد 6 زائد 7 زائد 8.
حتى تتمكن من اللعب مع هذا. لكن مرة أخرى ، نقوم بتهيئة
متغير التحكم في الحلقة. نتحقق من حالة الخروج. سنخرج بمجرد أن نصل إلى أي
شيء يدخله المستخدم. إذا أدخل المستخدم 8 ، فسنعمل
8 مرات ثم يتعين علينا تعديل I. إذا لم نقم بتعديل أنا هنا ، سيكون لديك حلقة إلى الأبد.
وماذا سيحدث عندما تقوم بتشغيل البرنامج
، فسيتم تشغيله إلى الأبد.
لذلك سترى بعد إدخال الرقم ، لن يخرج برنامجك أبدًا.
لنفترض أننا أدخلنا 6 ، وضربت مفتاح الإدخال ، وانظر إلى ما يحدث ،
وما عليك سوى طباعة حلقة بالداخل. إنه لا يخرج أبدًا.
إنها حلقة لا نهائية. لذا فإن هذا الشيء الأخير مهم جدًا جدًا. تريد دائمًا تعديل متغير التحكم في الحلقة.
ومرة أخرى ، يحدد متغير التحكم في الحلقة المخرج ، في هذه الحالة أنا.
لذلك يتم استخدام الحلقة for قليلاً.
إنه سهل الاستخدام للغاية ويسمح لك بعمل 3 أشياء مختلفة داخل الحلقة.
قم بتهيئة متغير التحكم في الحلقة ، وتحقق من
التحكم في حلقة المتغير لشرط الخروج ثم قم بتعديل
متغير التحكم في الحلقة.
هذه 3 أشياء عليك القيام بها في حلقة واحدة ، ويمكنك القيام بها في بيان واحد.
الآن دعني أتحدث فقط عن الحلقة اللانهائية بسرعة حقيقية.
لذا فقد عرضت للتو حلقة لا نهائية. هذا هو المكان الذي لا تخرج منه أبدًا.
ولا يلزمك وضع أي معاملات في تعليمة الحلقة for.
يمكنك بالفعل كتابة حلقة لا نهائية عن قصد.
الطريقة التي ستفعل بها ذلك هي أنك ستضع الفواصل المنقوطة هناك.
لذلك سيكون لديك حلقة for مع فاصلة منقوطة.
إذا رأيت ذلك من قبل ، فهذا يعني أنك تكتب حلقة لا نهائية.
الآن عادة ، لا تريد أن يكون لديك حلقات
لا نهائية ، ولكن هناك أوقات لأن شرط استمرار الحلقة غائب.
ستستمر الحلقة إلى أجل غير مسمى. يكون هذا مفيدًا في بعض الأحيان إذا كنت تراقب البيانات.
لذلك إذا كنت تراقب البيانات ، فقد يكون لديك شيء ما هناك.
عادة ، عندما يكون لديك حلقة إلى الأبد ، عادة ما يكون لديك أيضًا
نوم ، مما يؤدي إلى إيقاف تنفيذ البرنامج مؤقتًا ، ربما لثانية حتى تراقب شيئًا ما.
حالة الاستخدام الأخرى حيث قد يكون لديك حلقة لا نهائية هي إذا كنت تستمع للاتصال.
لذلك إذا كنت تنتظر وتستمع للاتصال أو إذا كنت تسحب شيئًا ما لترى
شيئًا ما ، يمكنك فعل ذلك.
يجادل بعض الناس الآن بأنه لا يجب عليك أبدًا الانسحاب ويجب ألا
تستمع أبدًا ، لكن هذه حجة أخرى.
هذه هي الحالة الوحيدة لبعض حلقات for اللانهائية.
تجنب الحلقات اللانهائية قدر الإمكان عن طريق تعديل متغير التحكم في الحلقة.
اتمنى ان يكون ذلك مفيدا. هذه هي حلقة for.
سنستخدم حلقة for في أحد تحدياتنا ، حتى نصبح أكثر دراية.
شكرًا لك.