أهلا ومرحبا. في هذه المحاضرة ، أود أن أتحدث عن حلقات التكرار والقيام بها.
لقد تحدثنا عن حلقة for ، والتي تسمح لك بشكل أساسي بتكرار الكود.
هناك بنى أخرى في c تسمى while and do بينما تفعل الشيء نفسه
فقط ببنية مختلفة.
لذا فإن حلقة while loop هي آلية لتكرار مجموعة من العبارات وتسمح
للتنفيذ بالاستمرار طالما أن التعبير المنطقي المحدد يتم تقييمه على أنه صحيح.
لذلك المزيد من نفس الشيء هنا. تمامًا مثل ما إذا كانت العبارات ستنفذ كودًا
معينًا ، بينما ستنفذ العبارات كودًا معينًا بناءً على تقييم منطقي عدة مرات.
كل ما يمكنك القيام به في حلقة for ، يمكنك القيام به في حلقة
while ، إنه مجرد تركيب مختلف.
إذن ما تبدو عليه حلقات while هو شيء من هذا القبيل.
على مستوى عالٍ جدًا ، إذا نظرنا إلى الكود الكاذب ، بينما
هذا الشرط صحيح ، استمر في القيام بذلك.
لذلك لربطها بمثال عالمي أكثر.
في الأساس ، عندما تكون جائعًا ، تناول الشطائر ، شيء من هذا القبيل.
لذلك سوف تقوم بتكرار الكود. ستستمر في تناول الكثير من السندويشات وأنت جائع.
الصيغة العامة لحلقة while هي كما يلي.
وهذا يوضح لك بناء الجملة لبيان واحد في الجسم
، لذلك لا تحتاج إلى تقديم الأقواس أو الأقواس المتعرجة.
أميل إلى استخدام المصطلحات الأقواس والأقواس
المتعرجة في نفس المصطلحات.
هذا ما يبدو عليه بناء الجملة عندما يكون لديك جملة واحدة مقابل عبارات متعددة.
عبارات متعددة ، يجب أن يكون لديك تلك الأقواس ، وعبارة
واحدة لا تفعلها ، فهي اختيارية. لا يمكنك الحصول عليها أو ليس عليك الحصول عليها.
ينتقل التعبير داخل الأقواس تمامًا مثل
حلقة for وعبارة if. يختلف التعبير هنا
عن حلقة for لأنه شرط خروج واحد.
إنه مجرد تعبير. لا يمكنك تهيئة متغير التحكم في الحلقة.
لا يمكنك تعديل متغير التحكم في الحلقة بين الأقواس.
إنه مجرد تعبير ، فقط شرط الخروج.
يتم اختبار شرط استمرار حلقة while في البداية.
هذا هو الجزء العلوي من الحلقة.
إذن ما يعنيه هذا هو أنها حلقة الاختبار التمهيدي. وما يعنيه ذلك هو أنه يمكن
تنفيذها 0 مرة أو يمكن تنفيذها عدة مرات في الجسم.
ومرة أخرى ، سيكون هذا ذا صلة لأن حلقة do while loop تقوم بشيء مختلف بعض الشيء.
إذا بدأ التعبير خطأ ، فلن يتم تنفيذ أي
من عبارات الحلقة في النص.
لذلك هذا هو السبب في أنها في أعلى اختبار.
لذا إذا أجبت على السؤال الأول بـ "لا" أنا لست
جائعًا ، فلن تأكل أبدًا أي شطائر. ستنتقل مباشرة على القهوة أو السطر التالي
من التعليمات البرمجية. لن تدخل جسم الحلقة.
إذا بدأت حالة الحلقة على أنها صحيحة
، فيجب أن يحتوي جسم الحلقة على آلية لتغيير هذا
إذا كانت الحلقة ستنتهي. خلاف ذلك ، سيكون لديك حلقة لا نهائية.
لذلك مع الحلقة for حيث يمكنك تعديل متغير التحكم في الحلقة في جملة واحدة ، يكون نفس الشيء
في حلقة while إلا أنه يتعين عليك القيام بذلك في الجسم.
ستعمل الحلقة while على تهيئة
متغير التحكم في الحلقة في مكان ما ، ثم يتم
تعديلها داخل جسم الكود.
كما ذكرت ، يمكن للحلقة while أن تفعل كل ما تفعله حلقة for ، إنها مجرد صيغة مختلفة.
ومرة أخرى ، تكون الحلقة for أكثر أقصر. يمكنك أن تفعل كل شيء في سطر واحد بينما
في حلقة while عليك القيام بهذه الأشياء الثلاثة في أسطر منفصلة.
إذن في هذا المثال
، لدينا عدد صحيح يساوي 0. هذا هو متغير التحكم في الحلقة. هذا خارج بيان حلقة while.
إذا كنت تستخدم تعليمة for ، فسيتم إدخالها داخل الحلقة for كما كان الحال قبل الفاصلة المنقوطة الأولى.
هذا هو المكان الذي يتم فيه تهيئة متغير التحكم في الحلقة.
ثم لديك الكلمة الأساسية while ولديك داخل الأقواس التعبير المنطقي.
سيكون هذا معادلاً للحلقة for ، العبارة الثانية مباشرة
قبل الفاصلة المنقوطة الثانية.
لذلك هذا هو ما تتحقق من صحته أو خطأه. وإذا كان هذا صحيحًا أو خطأ ، فأنت تدخل جسم الحلقة.
إذا كان العدد أقل من 5 ، فستقوم بطباعة العدد.
السطر التالي من التعليمات البرمجية بعد ذلك مهم
للغاية ، علامة الجمع لأن ذلك يعدل متغير التحكم في الحلقة.
عليك القيام بهذا العد الزائد وإلا فلن تخرج أبدًا من الحلقة لأن الشرط في الجزء
العلوي يقول ما إذا كان العدد أقل من يساوي 5. إذا كان العد دائمًا يساوي 1 ، فلديك حلقة
لا نهائية.
لذا فإن هذا العدد الزائد مهم جدًا جدًا.
تذكر العد الزائد هو عامل زيادة.
إنها تقول فقط: count يساوي عدد زائد 1.
سيتم تشغيل هذه الحلقة 5 مرات.
سيتم تشغيله مع عدد يساوي 1 ، يعد مساويا
لـ 2 ، يعد مساويا لـ 3 ، يعد مساويا لـ 4 ويحسب يساوي 5.
بمجرد أن يساوي العدد 6 ، سيقفز خارج الحلقة ولن
يخرج من أي عبارات أخرى في الجسم.
مرة أخرى ، يجب أن تفكر في حلقة for.
إنه مجرد متغير التحكم في الحلقة وتعديل متغير التحكم
في الحلقة ليس في إعلان الحلقة الفعلية.
ليس كل شيء في سطر واحد كما هو الحال في حلقة for.
إليك مثال آخر حيث يتم التحكم في المنطق لإنهاء الحلقة.
لذلك في المثال الأول الذي عرضته هنا ، هذه حلقة تحكم مضادة.
سيتم دائمًا تنفيذ نفس عدد المرات وهو 5.
في المثال التالي ، هذا مثال حيث يمكن تنفيذ الحلقة
100 مرة أو 0 مرة.
الشرط الذي نقوم بتقييمه هنا في مفتاح while الخاص بنا حيث لا يساوي
num سالب 1 يعتمد على ما يدخله المستخدم لأن num
هو ما يدخله المستخدم.
لذلك قد يتم تنفيذ هذه الحلقة 0 مرة ، وقد يتم تنفيذها 100 مرة.
كل هذا يتوقف على المدخلات من لوحة المفاتيح.
وهذا ما يسمى حلقة التحكم الحارس. لا يتم التحكم في العداد.
يعتمد على المنطق والمتغير الذي يمكن أن يتغير.
لذلك ، بينما لا يساوي num لا يساوي سالب 1 ثم يتم تخزين num بالقيمة
التي ندخلها في لوحة المفاتيح.
إذا لم يقم المستخدم بإدخال 1 سالب في لوحة المفاتيح ، فلن تخرج هذه الحلقة أبدًا.
لذلك نفس النوع من بناء الجملة هنا مع الوقت.
متغير التحكم في الحلقة هنا هو num. نقوم بتهيئة 0 في الجزء العلوي
، ثم نقرأ في تعديله لنرى ما إذا كنا سندخل الحلقة بناءً على ما أدخله
المستخدم في لوحة المفاتيح.
ثم داخل قوس الكلمة الأساسية while ، نتحقق منها
بالفعل لنرى ما إذا كانت سالبة 1.
ثم في جسم حلقة while مع الأقواس ، لا يلزم وجود
الأقواس لأن هناك جملة واحدة ، لكني أحب وضعها هناك.
ثم نقرأ أيضًا الإدخال التالي وقمنا بتخزينه في الأسطوانات.
إذا قام المستخدم بإدخال 1 سالب لهذا الإدخال التالي ، فسيقفز خارج الحلقة.
إذا لم يفعلوا ذلك ، فسيستمر في التنفيذ ويطلب منهم إدخال المعلومات.
تختلف حلقة do while قليلاً عن حلقة for
في حلقة while لأنها تعتبر حلقة ما بعد الاختبار.
لذلك في حلقة while ، يتم تنفيذ الجسم بينما الشرط صحيح.
في حلقة do while حيث يتم تنفيذ الجسم لأول مرة دون قيد أو شرط ، فإن حلقة
do while لأن الاختبار في الأسفل تعني أنك ستقوم
دائمًا بتنفيذ الحلقة مرة واحدة على الأقل.
ستقوم دائمًا بإعدام الجسد مرة واحدة على
الأقل ، يمكن أن يكون أكثر من ذلك ، لكنه دائمًا ما يكون صفرًا.
لأن شرط اختبار الخروج في الأسفل.
وهذا ما يسمى حلقة ما بعد الاختبار. وتسمى أيضًا حلقة التحكم في الخروج.
لذلك يمكنك استخدام حلقة do a while إذا أردت أن تدخل الحلقة مرة
واحدة على الأقل.
عادةً ، لا تحتاج إلى استخدام do while loop لأنه
لا يزال بإمكانك فعل الشيء نفسه في حلقة for إذا أردت ذلك ، فكل ما عليك
فعله هو وضع الكود خارج الحلقة.
لذا فإن حلقة do while ليست ضرورية حقًا ، ولكن هناك حالات ربما تريد استخدامها.
بعد التنفيذ الأولي ، يتم تنفيذ الجسم
فقط عندما يكون الشرط صحيحًا. لذلك بعد التكرار الأول للحلقة ،
ستعمل مثل الحلقات العادية. سوف يقفز إذا كانت الحالة خاطئة.
لذلك هذا ما يبدو عليه. يكون الأمر في الأعلى ثم يكون اختبار
الحالة في الأسفل باستخدام الكلمة الأساسية while.
لذا ، هل هي كلمة رئيسية جديدة
ومن ثم ستحصل إما على أقواس أو غير أقواس اعتمادًا على ما إذا
كان لديك عبارات متعددة في النص أم لا.
إذا كان لديك عبارة واحدة فقط في النص ، فلن يكون لديك قوس. ما عليك سوى القيام به في الجزء العلوي ثم
سيكون لديك الوقت في الجزء السفلي من الحلقة.
وداخل الأقواس ، سيكون لديك التقييم المنطقي الذي سيكون الشرط
الذي تتحقق منه. ولكن مرة أخرى ، نظرًا لأن
هذا الشرط في الجزء السفلي ، فأنت تضمن دائمًا تنفيذ العبارة مرة واحدة على الأقل.
وبالتالي ، فإن المثال الموجود على اليسار عبارة عن عبارة واحدة ، والمثال الموجود
على اليمين عبارة عن عبارات متعددة. إذن لديك الأقواس ، الأقواس المتعرجة.
ومرة أخرى ، في هذا المثال الثاني ، أنت تقول أنه قد يكون لديك شيء مثل المطالبة بكلمة المرور ، واقرأ
إدخال المستخدم بينما الإدخال لا يساوي كلمة المرور.
لكنك ستطالب دائمًا بكلمة المرور هذه مرة واحدة على الأقل.
إذن مثال آخر يفعل حلقة while.
المثال الأعلى الأول هنا هو مثال على
كيفية تنفيذ الحلقة
مرة واحدة أو عدة مرات ، ولكن ليس 0.
كل هذا يتوقف على ما يدخله المستخدم. سيتم تنفيذها دائمًا مرة واحدة على الأقل ، ولكن
هذه قراءة المدخلات من لوحة المفاتيح. نرى وظيفة scanf.
وطالما لم يدخل المستخدم 20 ، فسيتم
تنفيذ هذه الحلقة.
يمكن أن تكون حلقة while حلقة تحكم مضادة ، وهذا يعني أنها ستنفذ عددًا معينًا من المرات.
في هذه الحالة ، سيتم تنفيذ 4 مرات في هذا المثال.
لدينا عدد صحيح يساوي 4. ثم لدينا في الأعلى ، ثم لدينا
الأقواس لأن
لدينا عبارات متعددة داخل الجسم.
ونزيد متغير التحكم في الحلقة داخل الجسم ، العدد زائد زائد.
ومن ثم فإن شرط الفحص لا يزال في الأسفل. لذا ستنفذ هذا 4 مرات.
وستلاحظ أن الكلمة الأساسية while لا يجب أن تكون على نفس السطر مثل القوس المجعد الأيمن.
عادةً ما يكون الأمر كذلك ، لكن لا يجب أن يكون كذلك.
بينما تنتهي الكلمة الرئيسية في الأسفل أيضًا بفاصلة منقوطة ، يجب أن تلاحظ ذلك أيضًا.
لذلك تعلمنا كل شيء عن هذه الحلقات ؛ حلقة for ، والوقت والوقت.
ما الحلقات التي يجب أن تستخدمها؟
حسنًا ، أول شيء عليك أن تقرره بشأن الحلقة التي تريد استخدامها هو أولاً هل تريدها أن تكون
اختبارًا أوليًا أم اختبارًا آخر؟ هل تريد تنفيذها مرة واحدة على الأقل أم
لا تريد تنفيذها مرة واحدة على الأقل؟ إذا كنت تريد تنفيذه مرة واحدة على
الأقل ، فستستخدم الأمر أثناء ذلك. إذا لم يكن هذا شرطًا ، فيمكنك
استخدام for أو the while أو the do while.
لذلك بالنسبة للجزء الأكبر عندما تقرر الحلقة المراد استخدامها ،
فستكون دائمًا حلقة اختبار مسبق. يجب أن تبتعد عن حلقة "do while loop".
إنه مجرد خيار أفضل في معظم الحالات. من الأسهل بكثير القراءة.
من الأفضل بكثير أن تنظر قبل أن تقوم بالتكرار.
فقط لا تبدأ في التكرار ، فمن الأفضل التحقق من هذه الحالة في الأعلى.
من أجل سهولة القراءة ، إذا كانت الحلقة قيد الاختبار ، فهي أكثر سهولة.
لذا قم بفحص هذه الحلقة في البداية ، واستخدم لفترة أو فترة.
وفي كثير من الحالات ، من المهم تخطي الحلقة بالكامل إذا لم يتم الوفاء بالاختبار في البداية.
مرة أخرى ، لأن هذا هو الحال ، يجب أن يكون الاختبار في القمة. لا يجب أن تقوم دائمًا بالتنفيذ مرة واحدة على الأقل.
بالنسبة للجزء الأكبر ، قد لا ترغب دائمًا في التنفيذ.
لذلك يجب عليك استخدام لفترة من الوقت.
الآن السؤال يعود إلى أي واحد يجب أن أستخدمه ، لفترة من الوقت.
إنها حقًا مسألة تفضيل شخصي. لا يهم لأنه كما قلت في بداية
هذه المحاضرة ، كل ما يمكنك القيام به في فترة ، يمكنك القيام به في ل.
لذلك ، إذا كنت تحب الحلقة for بشكل أفضل ، فإن for يكون أسرع قليلاً
في بعض الأحيان لأن كل تعديل التحكم في الحلقة والتهيئة وحالة الخروج
يمكن أن تكون جميعها في سطر واحد.
لكن الأمر متروك لك حقًا.
عادة ، ما أفعله هو أنني سأستخدم حلقة for للحلقات التي يتم التحكم فيها بشكل مضاد.
لكن مرة أخرى ، يمكنك استخدام نفس الشيء. إذا كنت تريد بالفعل استخدام
حلقة for وجعلها تبدو وكأنها فترة ، فليس
لديك التعبيران الأول والثالث
، بل لديك فقط واحد. لذا فإن الفاصلة المنقوطة لاختبارات الفاصلة المنقوطة هي نفسها أثناء الاختبار.
هذا يوضح لك فقط أنه في الوقت نفسه يمكن أن تفعل الشيء نفسه ، فقط قم بتغيير
الصيغة قليلاً.
إذا كنت تريد بالفعل استخدام حلقة while ولكنك تريدها أن تتصرف مثل حلقة
for ، فحينئذٍ يمكنك أن تسبقها بالتهيئة وتضمين عبارات التحديث في الجسم.
إذن ما ستفعله هو شيء كهذا وعادة ما تفعله دائمًا لفترة من الوقت.
لكن هذا يعادل حلقة for. التهيئة خارج حلقة متغير التحكم
، متغير التحكم في الحلقة.
تكون حالة الاختبار داخل الأقواس ، ثم تقوم
بتحديث متغير التحكم في الحلقة في جسم الحلقة while.
وهذا هو نفس تحديث اختبار تهيئة الحلقة for
ثم الجسم. ليس هناك فرق.
مرة أخرى ، كما ذكرت ، أستخدم حلقة for ربما لحلقات التحكم في العداد أكثر قليلاً.
لكنني سأستخدم كل من for و the while بالتبادل ، اعتمادًا على ما أشعر به في ذلك اليوم.
لذلك قد تكون حلقة for أكثر ملاءمة إذا كنت تريد
تهيئة متغير وتحديثه في سطر واحد.
تكون حلقة الوقت أفضل عندما تكون الظروف غير ذلك.
مرة أخرى ، حلقات التحكم في العداد ، ربما تكون حلقات التحكم في الحارس حلقة while.
وإليك مثال على حلقة while مع حلقة تحكم حارس وحلقة for
تقوم بنفس الشيء مرة أخرى أو حلقة for لعداد يتم التحكم فيه.
بينما يمكن تشغيل الحلقة عدة مرات بناءً على ما
يدخله المستخدم ، يتم التحكم في حلقة for من خلال العداد.
لذلك هذا هو الوقت الذي يتم القيام به. نأمل أن يكون هذا واضحًا.
كن على دراية بهذه الحلقات لأنك غالبًا ما تريد تكرار الشفرة.
في الحديث قليلاً عن الحلقات المتداخلة وأيضًا آليات
مختلفة قليلاً للخروج من حلقة باستخدام فاصل أو
متابعة. شكرًا لك.