(C ++) بيان حلقة مع الشرط - while


حلقة بشرط. بيان while
عند دراسة حلقة for ، قلنا أنه إذا كان عدد التكرارات لأي إجراءات معروفًا ، فيمكنك تقصير البرنامج باستخدام لـ حلقة التشغيل. ولكن ماذا لو كان عدد التكرارات غير معروف؟ وهذا يحدث كثيرًا.
نبسب ؛
مثال عند تذكر ترجمة عدد من نظام الأعداد العشرية إلى أي نظام آخر ، نحتاج إلى قسمة الرقم (ثم نتيجة القسمة) على قاعدة نظام الأرقام حتى نحصل على صفر في الإجابة. كم مرة سنشاركها غير معروف. وهناك الكثير من البرامج التي تنفذ مثل هذه الخوارزمية. & nbsp؛

كيف يمكننا تنفيذ الخوارزمية إذا كنا لا نعرف بالضبط عدد التكرارات؟

لمثل هذه الحالات في البرمجة ، هناك تعليمة حلقة بها شرط. & nbsp؛
في لغة برمجة بايثون ، تبدأ تعليمة الحلقة الشرطية بالكلمة بينما ولها البنية التالية.
while (& lt؛ condition & gt؛) & nbsp؛
{
نبسب ؛ حلقة الجسم
}

كما نعلم بالفعل:
- الشرط هو تعبير يمكن تقييمه إلى صواب أو خطأ (كما في الجملة الشرطية) ؛
- جسم الحلقة هي أوامر يجب تكرارها ، يتم وضع مسافة بادئة لها.

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

عند تحليل عمل هذا المشغل ، يجب أن يتضح أن جسم الحلقة يجب أن يحتوي على عامل يؤثر على الحالة.
على سبيل المثال ، في الحلقة ، يمكن زيادة قيمة المتغير المستخدم في شرط.

مثال على برنامج نسميه & quot؛ عدد صامت & quot؛ .
لنجعل البرنامج يحسب بدلاً منا ، على سبيل المثال ، حتى 10.
يجب أن يخرج البرنامج العبارات & quot؛ Start & quot؛ و & quot؛ إنهاء & quot ؛، وبين هذه الإجراءات اعرض الأرقام التي يتم حسابها.

على سبيل المثال ، مثل هذا:
ابدأ
1 2 3 4 5 6 7 8 9 10
إنهاء

سيبدو البرنامج الذي يستخدم حلقة while بالشكل التالي: # include & lt؛ iostream & gt؛ استخدام اسم للمحطة؛ رئيسي() { إنت أنا كوت & lt؛ & lt؛ "ابدأ \ n" ؛ أنا = 1 ؛ بينما (i ​​& lt ؛ = 10) { كوت & lt؛ & lt؛ أنا & lt ؛ & lt ؛ & quot؛ & quot ؛؛ أنا ++ ؛ // العامل الذي يؤثر على تغيير المتغير في الحالة } كوت & lt؛ & lt؛ & quot؛ \ n إنهاء & quot ؛؛ }
في هذا البرنامج ، نخصص قيمة للمتغير i = 1 - نقطة البداية.
علاوة على ذلك ، طالما لدينا قيمة المتغير i ليست أكبر (أي أقل من أو يساوي) القيمة التي نحتاجها ، فإننا: & nbsp؛
نبسب ؛ 1. عرض قيمة المتغير i ؛
نبسب ؛ 2. قم بزيادة قيمة المتغير i بمقدار 1 - يؤثر هذا العامل على قيمة الشرط بين قوسين. تتم زيادة المتغير i ، مما يعني أنه في مرحلة ما سيصبح الشرط i & lt؛ = 10 خطأ. سيحدث هذا عندما يصبح i مساويًا لـ 11. في هذه الحالة ، لن يتم تنفيذ جسم الحلقة ، وسيقوم البرنامج بتنفيذ العبارة التالية بعد الحلقة ، أي cout & lt؛ & lt؛ & quot؛ \ n إنهاء & quot؛ .

مهمة يجب إدخال رقم (اجعله أقل من 3،000،000) وتحديد عدد الأرقام فيه.
نبسب ؛
فكرة الحل نحتاج فقط إلى قطع الرقم الأخير بالتسلسل من الرقم (يمكن القيام بذلك عن طريق تقليل الرقم بمقدار 10 مرات ، باستخدام القسمة الصحيحة بمقدار 10) ، وفي كل مرة نحتاج إلى زيادة العداد. & nbsp؛

نتيجة لذلك ، بعد قطع جميع أرقام الرقم ، سنحصل على رقمها في العداد.

يمكن صياغة هذه الخوارزمية على النحو التالي:
حتى يصبح الرقم صفرًا ، قم بتقليله بمقدار 10 وزيادة العداد بمقدار 1 في كل مرة.
نبسب ؛ <الجسم>
number (n) counter
123 0
12 1
1 2
0 3

سيبدو البرنامج هكذا. # include & lt؛ iostream & gt؛ استخدام اسم للمحطة؛ رئيسي() { intn ، عد ؛ سينما & GT ؛ & GT. ن؛ العد = 0 ؛ بينما (ن! = 0) { العد ++ ؛ ن = ن / 10 ؛ } كوت & lt؛ & lt؛ & quot؛ عدد & quot؛ & lt؛ & lt؛ n & lt؛ & lt؛ & quot؛ يحتوي على & quot؛ & lt؛ & lt؛ عد & lt ؛ & lt ؛ & quot؛ أرقام & quot ؛؛ & nbsp؛ & nbsp؛ } أنت بحاجة إلى معرفة هذا البرنامج عن ظهر قلب ، لأن. على أساسها ، يتم حل العديد من المشكلات الأخرى المتعلقة بحساب الأرقام بالأرقام.

مهمة إدخال البرنامج هو دفق البيانات و [مدش] ؛ سلسلة من الأعداد الصحيحة التي تنتهي بصفر (لا يتم تضمين الصفر في التسلسل). & nbsp؛ تحتاج إلى إيجاد مجموع عناصر هذا التسلسل.
نبسب ؛
حل الخوارزمية <قبل> المجموع = 0 إدخال x // أدخل الرقم الأول بينما x! = 0 // يتم تعيين علامة نهاية الإدخال في الحالة ، على & nbsp؛ nc // أي حتى تدخل الصفر على & nbsp؛ & nbsp؛ & nbsp؛ sum = sum + x // يمكنك فعل شيء مع الرقم الأصلي. // يمكنك إضافة فحص رقمي لبعض الشروط ، وما إلى ذلك. على & nbsp ؛ على & nbsp ؛ على & nbsp ؛ إدخال x // أدخل الرقم التالي عقدة طباعة المجموع // نتيجة الإخراج