بيان حلقة مع الشرط - while


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

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

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

مثال على برنامج نسميه "Silent Count"
لنجعل البرنامج يحسب بدلاً منا ، على سبيل المثال ، حتى 10.
يجب أن يخرج البرنامج عبارة "ابدأ" و "إنهاء" ، وبين هذه الإجراءات عرض الأرقام التي يتم حسابها.
مثل هذا
ابدأ
1 2 3 4 5 6 7 8 9 10
إنهاء
سيبدو البرنامج الذي يستخدم حلقة while loop بهذا الشكل. <قبل> var i: عدد صحيح ؛ يبدأ نبسب ؛ نبسب ؛ writeln (& # 39 ؛ Start & # 39 ؛) ؛ نبسب ؛ نبسب ؛ أنا: = 1 ؛ نبسب ؛ نبسب ؛ بينما أنا العلامة & lt ؛ = 10 تبدأ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ اكتب (i ، & # 39 ؛ & # 39 ؛) ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ أنا + = 1 ؛ // العامل الذي يؤثر على تغيير المتغير في الشرط & nbsp؛ نبسب ؛ نبسب ؛ نبسب ؛ نهاية؛ نبسب ؛ نبسب ؛ writeln () ؛ نبسب ؛ نبسب ؛ writeln (& # 39 ؛ Finish & # 39 ؛) ؛ النهاية. في هذا البرنامج ، نخصص قيمة للمتغير i: = 1 - الأصل
علاوة على ذلك ، طالما لدينا قيمة المتغير i ليست أكبر من (أي أقل من أو يساوي) القيمة التي نحتاجها ، فإننا & nbsp؛
على & nbsp؛ 1 - عرض قيمة المتغير i & nbsp؛
& nbsp؛ 2 - زيادة قيمة المتغير i بمقدار 1 - يؤثر هذا العامل على قيمة الشرط بين قوسين. يتم زيادة المتغير i ، أي في مرحلة ما ، سيصبح الشرط i & lt ؛ = 10 خطأ. سيحدث هذا عندما تصبح i مساوية لـ 11. في هذه الحالة ، لن يتم تنفيذ جسم الحلقة مرة أخرى ، وسيقوم البرنامج بتنفيذ العبارة التالية بعد الحلقة ، أي writeln () ؛
writeln (& # 39 ؛ Finish & # 39 ؛) ؛

لنحاول كتابة برنامج لحل المشكلة التالية:

يجب إدخال رقم (فليكن أقل من 3،000،000) وتحديد عدد الأرقام فيه.

فكرة الحل

لنبدأ عداد أرقام من رقم. في البداية ، يكون العداد هو 0. نحتاج فقط إلى قطع الرقم الأخير بالتتابع من الرقم (يمكن القيام بذلك عن طريق تقليل الرقم بمقدار 10 مرات ، باستخدام القسمة الصحيحة على 10) ، وفي كل مرة نحتاج إلى زيادة العداد بمقدار 1. نبسب ؛
نتيجة لذلك ، بعد قطع جميع الأرقام ، سنحصل في العداد على عدد الأرقام في الرقم.
بطريقة أخرى ، يمكن صياغة الخوارزمية على النحو التالي:
حتى لا يكون الرقم صفرًا ، قم بتقليله 10 مرات وزيادة العداد بمقدار 1. <الجسم>
number (n) counter
123 0
12 1
1 2
0 3
سيبدو البرنامج هكذا. <قبل> var n ، count: صحيح ؛ يبدأ نبسب ؛ نبسب ؛ قراءة (ن) ؛ نبسب ؛ نبسب ؛ العد: = 0 ؛ نبسب ؛ نبسب ؛ بينما n & lt ؛ & GT. 0 للبدء نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ العد + = 1 ؛ نبسب ؛ نبسب ؛ نبسب ؛ نبسب ؛ n: = n div 10 ؛ نبسب ؛ نبسب ؛ نهاية؛ نبسب ؛ نبسب ؛ writeln (& # 39 ؛ Number - & # 39 ؛، n ، & # 39 ؛ يحتوي على & # 39 ؛، count ، & # 39 ؛ digits & # 39 ؛) ؛ نهاية. أنت بحاجة إلى معرفة هذا البرنامج عن ظهر قلب ، لأن. على أساسها ، يتم حل العديد من المشكلات الأخرى المتعلقة بحساب الأرقام بالأرقام.

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