(جافا) بيان حلقة مع الشرط - بينما


عند دراسة الحلقة for ، قلنا أنه إذا كان عدد التكرارات لأي إجراءات معروفًا ، فيمكنك تقصير البرنامج باستخدام عامل التشغيل for loop. وماذا لو كان عدد التكرارات غير معروف. وهذا يحدث كثيرًا.
على سبيل المثال:
عند تذكر ترجمة عدد من نظام الأعداد العشرية إلى أي نظام آخر ، نحتاج إلى قسمة الرقم (ثم نتيجة القسمة) على قاعدة نظام الأرقام حتى نحصل على صفر في الإجابة. كم مرة سنشاركها غير معروف. وهناك الكثير من البرامج التي تنفذ مثل هذه الخوارزمية. & nbsp؛
كيف يتم تنفيذ هذا؟
لمثل هذه الحالات في البرمجة ، هناك مشغل حلقة بشرط. & nbsp ؛
في لغة البرمجة C ، تبدأ تعليمة الحلقة الشرطية بالكلمة while ولها البنية التالية. <قبل> while (& lt؛ condition & gt؛) { هيئة حلقة } كما نعلم بالفعل:
- الشرط هو تعبير ، يمكن أن تكون نتيجته إما صحيحة أو خاطئة (كما في البيان الشرطي)
- جسم الحلقة هو الأوامر التي يجب تكرارها
- يمكن حذف الأقواس المتعرجة إذا كان جسم الحلقة يتكون من عامل
واحد فقط
كيف يعمل عامل التشغيل:
1. أولاً ، يقوم البرنامج بتقييم الشرط بين قوسين بعد كلمة while. إذا تم استيفاء الشرط (صواب) ، فسيقوم البرنامج بتنفيذ العبارة (العبارات) الموجودة في جسم الحلقة.
2. كما هو الحال في الحلقة for ، إذا كان جسم الحلقة يحتوي على عبارة واحدة فقط ، فيمكن حذف الأقواس المتعرجة التي تبرز جسم الحلقة.
3. بعد اكتمال تنفيذ جسم الحلقة ، يعود البرنامج لفحص الحالة وفحصها مرة أخرى.
4. تتكرر هذه الإجراءات (فحص الشرط - تنفيذ جسم الحلقة) حتى يصبح الشرط خاطئًا.
5. إذا لم يتم استيفاء الشرط فورًا (خطأ) عند التنفيذ الأول لهذا المشغل ، فلن يقوم البرنامج مطلقًا بتنفيذ جسم الحلقة.

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

مثال على برنامج نسميه "Silent Count"
لنجعل البرنامج يحسب بدلاً منا ، على سبيل المثال ، حتى 10.
يجب أن يخرج البرنامج عبارة "ابدأ" و "إنهاء" ، وبين هذه الإجراءات عرض الأرقام التي يتم حسابها.
مثل هذا
ابدأ
1 2 3 4 5 6 7 8 9 10
إنهاء
سيبدو البرنامج الذي يستخدم حلقة while loop بهذا الشكل. <قبل> # تشمل & 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؛
على & nbsp؛ 1 - عرض قيمة المتغير i & nbsp؛
& nbsp؛ 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
سيبدو البرنامج هكذا. <قبل> # تشمل & 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 // أدخل الرقم التالي عقدة طباعة المجموع // نتيجة الإخراج