"مشغلي دورة VBA. دورات متداخلة. دورات VBA دورات Visual Baysik

آخر تحديث: 10/30/2015

نوع آخر من تصاميم التحكم هي دورات. يستخدم VB.NET عدة أنواع من الدورات.

دورة ... بعد ذلك

في هذه الدورة، يتم تنفيذ عدد معين من المرات، ويتم تعيين هذا الرقم بواسطة العداد:

لأنني كمثل عدد صحيح \u003d 1 إلى 9 Console.Writeline ("مربع الأرقام (0) يساوي (1)"، i، i * i) التالي

هنا، المتغير الذي أقوم به دور العداد. بعد الكلمة ل. نضع الحد الأقصى لقيمة العداد. كل دورة، القيمة العدادية تزيد من قبل واحد. ويتم مقارنة هذه القيمة بالقيمة بعد ل.وبعد إذا كانت هذه القيمتين متساوية، فإن الدورة تتوقف عن عملها.

عند العمل مع الدورات، يمكننا زيادة قيمة العداد في كل مقطع ليس فقط لكل وحدة، ولكن بشكل عام إلى أي رقم. للقيام بذلك، إما استخدام الكلمة الأساسية خطوة. وبعد ذلك، حدد خطوة دورة، والتي ستزداد قيمة العداد، أو يمكنك زيادة العداد مباشرة في الدورة:

لأني كاميرا لذلك \u003d 1 إلى -9 STEP -1 ل J ك NETEGER \u003d 1 إلى 9 Console.Writeline ("منتج أرقام I و J يساوي (0)"، i * j) j + \u003d 1 التالي التالي

لاحظ أنه كخطوة في الدورة الأولى، تم اختيار قيمة سلبية وقيمة العداد مع كل مقل ينخفض \u200b\u200bمن قبل واحد. في الدورة الداخلية، يزداد العداد J مع كل مقطع بمقدار 2، لأنه يزداد افتراضيا لكل وحدة، ونحن أيضا زيادة ذلك صراحة في دورة لكل وحدة. نتيجة لذلك، تعمل الدورة الداخلية لمدة خمس مرات، وتسعة خارجية، أي 45 دورة يتم الحصول عليها بالفعل.

دورة لكل ... التالي

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

"قم بإنشاء مجموعة من خمسة أرقام من الأقواس القاتمة (4) كعدد عدد صحيح Dim R as New Random ()" "تهيئة صفيف لأني كئلي \u003d 0 إلى Numsss.length - 1 Num (I) \u003d R.Next (100) التالي (100) التالي "مجموعة عناصر الإخراج لكل منها كعدد صحيح في Nums Console.Write (" (0) "، I) التالي

في كل تعبير، نشير أولا إلى المتغير الذي سيأخذ قيم عناصر الصفيف. وبعد الكلمة الرئيسية في. أشر إلى المجموعة التي تحتاج إليها من خلال جميع العناصر.

بينما الدورة

يتم تنفيذ الدورة أثناء اتباع شرط معين، مشيرا بعد الكلمة في حين:

DIM J كما عدد صحيح \u003d 10 بينما j\u003e 0 console.writeline (j) j - \u003d 1 نهاية الوقت

دورة do.

تتم إجراء دورة DO، وكذلك دورة أثناء الوقت، أثناء اتباع الشرط. ومع ذلك، له أشكال مختلفة. وبالتالي، في المثال التالي، يتم فحص الحالة لأول مرة، ثم يتم تنفيذ كتلة التعليمات البرمجية المعرفة في الدورة:

DIM J كما عدد صحيح \u003d 10 تفعل أثناء J\u003e 0 Console.Writeline (J) J - \u003d حلقة 1

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

DIM J كما عدد صحيح \u003d 10 تفعل حتى ي< 0 Console.WriteLine(j) j -= 1 Loop

إذا كانت الحالة المحددة في البداية في الدورة غير صحيحة، فلن تعمل الدورة. ولكن يمكننا تحديد الاختيار في نهاية الدورة، وبالتالي ستعمل دوراتنا مرة واحدة على الأقل:

DIM J كما عدد صحيح \u003d -1 do console.writeline (j) j - \u003d حلقة 1 حتى ي< 0 "либо Do Console.WriteLine(j) j -= 1 Loop While j > 0

مواصلة ومشغلي الخروج

في كثير من الأحيان، تنشأ الحاجة عدم الانتظار حتى نهاية الدورة، وتخرج على الفور من الدورة، في حالة الامتثال لحالة معينة. للقيام بذلك، استخدم المشغل خروجبعد ذلك يشير نوع الدورة التي يتم فيها تنفيذ الإخراج، على سبيل المثال، قم بالخروج (الخروج أثناء):

Dim R as New Random () Dim Num as Integer \u003d r.next (100) لأني صحيح \u003d 0 إلى 100 num - \u003d 1 إذا كان< 50 Then Exit For Next Console.WriteLine(num)

هناك مهمة أخرى - الإخراج ليس من الدورة، ولكن من التمرير الحالي أو التكرار والذهاب إلى المرحلة التالية. للقيام بذلك، استخدم العبارة المتابعة، وبعد ذلك يتم تحديد نوع الدورة التي يتم بها إخراج الإخراج، على سبيل المثال، متابعة الوقت:

Dim R as New Random () Dim Num as Integer \u003d R.Next (100) لأني كاميرا \u003d 0 إلى 10 Num - \u003d 7 إذا Num< 50 AndAlso num > 25 ثم استمر في النهاية إذا كانت Console.Writeline (Num) التالي

في هذه الحالة، في كل دورة تمريرة، نطرح الرقم 7 من الأسطوانات، ثم انظر إذا كان عدد Num Num من 25 إلى 50. وإذا كان ينتمي، انتقل إلى التكرار الجديد للدورة، وإذا لم يكن كذلك ذلك على الشاشة.

هذا الدرس سوف ينظر في العمل مع دورة ل في VBA. إظهار مثال للعمل مع دورة الدوران أيضا مثالا على إنشاء الصيغ في Excel باستخدام وحدات الماكرو.

دورة ل يعمل على مبدأ العداد. ل يتم استخدامه في الحالات التي من الضروري تكرار بعض الإجراءات مقدما العدد المعروف. على سبيل المثال، دورة ل غالبا ما تستخدم عند قراءة المصفوفات.

دورة ل لديها بناء الجملة التالي:
ل عداد = بدء دورة ل. نهاية الدورة [خطوة. خطوة]
مجموعة من المشغلين والفرق، إلخ.
الخروج ل.
التالي عداد

  • "عداد" -متغير يتغير إلى المحدد "خطوة".إذا لم يتم تحديد الخطوة، فسيتم أخذ المرء الافتراضي.
  • "بدء دورة", "نهاية الدورة "-الأرقام أو المتغيرات التي تشير إلى الحد الأدنى للمكافحة والأعلى. توقف دورة الدورة عندما "عداد"\u003e"نهاية دورة "(أو، إذا تم عكس الدورة، I.E. مع الخطوة -1، ثم "عداد"< "نهاية الدورة ").
  • مخرج ل -فريق التوقف القسري الدورة. يتم تطبيقه في الحالات التي حدث فيها حدث معين، وبعد ذلك من الضروري إيقاف تنفيذ الأوامر في الدورة، أو لمنع الخطأ.

النظر في أمثلة لاستخدام الدورة. لوبعد في المستقبل، سنلتقي بهذه الدورة في كثير من الأحيان.

مثال 1.
يتم إعطاء عمودين للأرقام مليئة بالأرقام:

من الضروري إضافة أرقام في عمود مع رقم العمود ه على النحو التالي:
C2 + E21، C3 + E20، ...، C21 + E2. يتم عرض النتيجة في العمود D في الصيغة الأول. يجب أن يكون محتوى خلية النتائج "\u003d c2 + e21".

يبدو رمز الماكرو على النحو التالي (حيث يمكنك تسجيل الكود قراءة):

الفرعية. cycle_for ()
"مستمر يشير إلى حد الدورات I.E. إلى ما هي قيمة دورة
مقدار ثابت. ن \u003d 21.
ل أنا \u003d 2. ل. ن.
"إنشاء صيغة سلسلة وحفظها على الخلية
الخلايا (I، 4) \u003d "\u003d C" & cstr.(ط) و "+ E" & cstr.((ن - ط) + 2)
"استمر عند التشغيل في الدورة
التالي أنا.
"بقية رمز البرنامج
نهاية الفرعية.

نحن تفكيك الرمز المكتوب:

  • مقدار ثابت. ن \u003d 21 - وصف الثابت N مع قيمة 21، I.E. عدد الصفوف التي تحتاج إلى تشغيل الدورة ل;
  • ل أنا \u003d 2. ل. N - أنا عارضات التي سوف تتغير بنسبة 1 مع كل دورة تمريرة. يبدأ العداد مع 2 وينتهي عندما أكون\u003e N؛
  • الخلايا (I، 4) - خلية مخصصة ورقة، أنا رقم الخط، عمود 4 غرف يتم عرض النتيجة. ملاحظة، عداد لدينا يحدد رقم سلسلة التفاضل ورقة؛
  • بعدها انا -التخليص مسح المشغل والترجمة المؤشر ل.كل شيء بين ذلك ل و التالي يؤديها في الدورة؛
  • cstr -وظيفة تحويل الرقم في نص.

نحن قمنا بتعيين الصيغة كما يلي كما يلي "\u003d C" & cstr.(ط) و "+ E" & cstr.((ن - أنا) + 2). تسجيل و - "الترابط" الشخصيات، الصفوف. نتيجة لذلك، سنحصل على الصيغة "\u003d CN + E ((N - I) + 2)" حيث n \u003d 21، أنا العداد.
مخيف؟ يبدو فقط :)

كل شىء. بعد تنفيذ الماكرو، نحصل على العمود التالي (المخصص)، وفي كل صيغة الخلية:

مثال 2.
الآن النظر في الدورة مع الخطوة المحددة. بعد حساب الماكرو الماضي، حصلنا على ثلاثة أعمدة، الآن نحتاج إلى تحديد D، في عمود Fold، لعرض صيغة الطرح. كود الماكرو التالي:

الفرعية. cycle_for_s_shag ()
مقدار ثابت. ن \u003d 21.
ل أنا \u003d N. ل. 2 خطوة. -1
الخلايا (I، 6) \u003d "\u003d e" & cstr.(هوية شخصية" & cstr.(أنا)
التالي أنا.
نهاية الفرعية.

في هذه الحالة، كل شيء هو نفسه، فقط الدورة الآن "يعمل" ليس من 2، ولكن من 21 إلى 2 في الخطوة (الخطوة) -1.
يتم الحصول على نتيجة التنفيذ على النحو التالي:

دورة لفي VBA، ليست الدورة الوحيدة. في المستقبل، سيتم النظر في زوج آخر من خيارات الدورات، دون أنه ليس من الضروري عند كتابة macrocomand في Excel.

تسمح لك دورات بإجراء خطوط سجل واحدة أو أكثر عدة مرات. VBA يدعم الدورات التالية:

ل ... بجانب كل ... next do ... حلقة

تصميم ل. وبعد وبعد التالي. عندما يكون عدد التكرار معروف مسبقا، استخدم دورة. وبعد وبعد التالي. يتم استخدام متغير، يسمى متغير دورة أو عداد دورة، في دورة دورة، مما يزيد أو ينقص إلى قيمة محددة مع كل دورة تكرار. بناء جملة هذا التصميم كما يلي:

لمكافحة \u003d بداية لإنهاء المشغلين التاليين

إعدادات العداد (العدد)، بداية (بداية الدورة)، نهاية (نهاية الدورة) والزيادة هي رقمية.

ملحوظة. يمكن أن تكون المعلمة الزيادة إيجابية وسالبة. إذا كانت إيجابية، يجب أن تكون المعلمة البدء أقل أو تساوي المعلمة النهاية، وإلا فلن يتم تنفيذ الدورة. إذا كانت المعلمة الزيادة سالبة سلبية، يجب أن تكون المعلمة البدء أكبر من أو تساوي قيمة المعلمة النهائية التي يتعين القيام بها في جسم الدورة. إذا لم يتم تحديد معلمة الخطوة، فإن قيمة المعلمة الزيادة الافتراضية هي 1.

تنفذ VBA دورة في التسلسل التالي:

1. يحدد قيمة متغير دورة العداد للبدء.

2. يقارن قيمة متغير دورة المقاول وقيمة المعلمة النهائية. إذا كان المتغير العداد أكثر، فاكمل VBA تنفيذ الدورة. (إذا كانت قيمة المعلمة الزيادة سلبية، فإن VBA يتوقف عن تنفيذ الدورة، شريطة أن تكون قيمة متغير دورة العداد أقل من قيمة المعلمة النهائية.)

3. ينفذ عبارات دورة تشغيل الجسم.

4. يزيد من قيمة متغير دورة المقاول إلى 1 أو قيمة قيمة المعلمة الزيادة إذا تم تحديدها.

5. يكرر الخطوات من 2 إلى 4.

النظر في مثال: احسب قيمة الوظيفة F (T)

في A، B، N، N، إذا كان يختلف من A إلى B مع خطوة DT \u003d (B - A) / (N-1).

sub exambal3 () dim f () dim f () باعتبارها واحدة خافتة واحدة مثل واحد، B As Single، T AND SOBE، DT كعمل مؤقتا I كمصداء، N AS ENTEGER CALL اقرأ ("A1"، أ): قراءة المكالمة ("B1" ، ب): قراءة القراءة ("C1"، N) Redim F (1 إلى N - 1) DT \u003d (B - A) / (N - 1): T \u003d استدعاء ("A2"، "I") : Call Out ("B2"، "T"): اتصل ("C2"، "f (t)") لأحد \u003d 1 إلى n - 1 t \u003d t + dt إذا ر<= -1 Then f(i) = -1 ElseIf t > 1 ثم f (i) \u003d 1 آخر f (i) \u003d t inding إذا اتصل\u003e ("A" و (2 + 1)، I): اتصل ("B" و (2 + 1)، T): اتصل خارج ("C" و (2 + 1)، f (i)) التالي أنا نهاية دون

لكل تصميم. وبعد وبعد التالي

دورة لكل منها. وبعد وبعد التالي يبدو وكأنه دورة. وبعد وبعد بعد ذلك، لكنه يكرر مجموعة المشغلين لكل عنصر من مجموعة من الكائنات أو من صفيف، بدلا من تكرار المشغلين عدد محدد من المرات. إنه مفيد بشكل خاص عندما لا يعرف عدد العناصر الموجودة في المجموعة.

بناء جملة دورة لكل منهما. وبعد وبعد التالي هو:

لكل عنصر في مجموعة المشغلين العناصر التالية

يجب تذكر القيود التالية عند استخدام كل دورة. وبعد وبعد التالي:

للمجموعات، يمكن أن تكون معلمة العنصر فقط متغير نوع متغير، وكائن نوع متغير مشترك أو كائن مدرج في مستعرض الكائنات

للحصول على صفائف، يمكن أن يكون المعلمة العنصر فقط متغير نوع متغير

لا يمكنك استخدام كل دورة. وبعد وبعد التالي مع مجموعة تحتوي على نوع محدد من قبل المستخدم، نظرا لأن متغير من النوع لا يمكن أن يحتوي على قيمة لنوع محدد المستخدم

تصميم do doop

يتم استخدام دورة Do لإجراء كتلة من المشغلين رقم غير محدود. هناك العديد من أنواع التصميم للقيام. وبعد وبعد حلقة، ولكن كل واحد منهم يحسب التعبير لتحديد لحظة الخروج من الدورة. كما هو الحال في حالة التصميم. وبعد وبعد ثم يجب أن تكون الشرط قيمة أو تعبيرا يقبل قيمة خطأ (صفر) أو صحيح (وليس صفر).

في التصميم التالي. وبعد وبعد يتم تنفيذ مشغلو حلقة حتى تكون قيمة الشرط صحيحا (الحقيقة):

القيام به أثناء حلقة مشغلي الحالة

أداء هذه الدورة، VBA فقط يتحقق من الشرط. إذا كانت الحالة خاطئة (FALSE)، فاخطت جميع مشغلي الدورة. إذا كان ذلك صحيحا (صحيح)، فإن VBA يؤدي مشغلي الدورة، وإرجاعهم إلى القيام به أثناء المشغلين والتحقق من الحالة مرة أخرى.

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

النظر في مثال: لحساب مجموع الصف

مع دقة معينة.

Sub exambal4 () Dim E as Single، x As Single، S واحدة dim m as single، p كما واحد، أنا كقراءة مكالمة واحدة ("A1"، x): قراءة المكالمة ("B1"، E) S \u003d 0: i \u003d 1: m \u003d 1: p \u003d -1 اتصل ("a2"، "i"): اتصل ("B2"، "M"): اتصل ("C2"، "S") القيام به أثناء القيمة المطلقة (م)\u003e \u003d EP \u003d -P * XM \u003d P / IS \u003d S + M اتصل ("A" و (2 + 1)، I): اتصل ("B" و (2 + 1)، ABS ( م): اتصل ("C" و (2 + 1)، S) I \u003d I + 1 Loop End Sub

نوع آخر من التصميم تفعل. وبعد وبعد يقوم Loop أولا بإجراء مشغلي جسم الدورة، ثم يتحقق من الشرط بعد كل عملية تنفيذ. يضمن هذا النوع أن يتم تنفيذ مشغلي هيئات الدورة مرة واحدة على الأقل:

حلقة المشغلين DOO

تشبه نوعان مختلفان من تصميم الدورة إلى السابق، إلا أنه يتم تنفيذ الدورة أثناء وجود الحالة خطأ (خطأ):

لا يتم تنفيذ الدورة على الإطلاق أو يتم تنفيذها عدة مرات:

القيام به حتى الحالة

حلقة المشغلين.

يتم تنفيذ الدورة مرة واحدة على الأقل:

العاملين

حلقة حتى الشرط

7.2 دورات متداخلة.

يمكنك وضع هياكل التحكم في هياكل التحكم الأخرى (على سبيل المثال، كتلة إذا .. ثم داخل ... التالي). يقال إن هيكل الرقابة الموضوعة داخل هيكل الإدارة الآخر يتداخل.

عمق مرفق هياكل التحكم في VBA غير محدود. لتحسين قابلية قراءة التعليمات البرمجية، يتم اعتماد ممارسة إزاحة التحيز لقرار القرار أو الدورة في البرنامج في حالة استخدام هياكل الإدارة المتداخلة.

عندما تستثمر في دورة واحدة أو أكثر من الدورات الأخرى، فإنها تتحدث عن دورات متداخلة، حيث يتميزت دورات خارجية (تكسير) والدوائر الداخلية (المدمجة).

النظر في مثال لتلخيص خط مصفوفة AIJ A (N، M).

sub exambal5 () dim a () dim a () واحدة، S () S \\) كعدد قاتمة N كعدد عدد صحيح، م كيمزئ القتيم، أنا كئلا عددا صحيحا، J كقراءة مكالمة عديمة عدد صحيح ("A1"، n): قراءة القراءة ("B1"، م ) redim a (1 to n، 1 to m)، s (1 إلى n) "قراءة مصفوفة ل i \u003d 1 إلى n for j \u003d 1 to m to m cellcell (i + 1، j، a (i، j)) التالي J NEXT I "حساب I \u003d 1 إلى NS (I) \u003d 0 ل J \u003d 1 إلى MS (I) \u003d s (i) + a (i، j) next j call outcell (i + 1، m + 1 ، S (I)) التالي أنا نهاية دون

لاحظ أن أول المشغل التالي يغلق الدورة الداخلية ل، والبيان التالي الأخير يغلق الدورة الخارجية. وبالمثل، للتداخل إذا كانت العبارات، تنتهي إذا تم استخدام المشغلين تلقائيا لإغلاق المشغل الأقرب إليه. هياكل المتداخلة. وبعد وبعد حلقة العمل بطريقة مماثلة: أقصى حلقة المشغل يتوافق مع أكثر المشغل البعيد القيام به.

عند إدخال / إخراج عناصر صفيف ثنائي الأبعاد على ورقة عمل Microsoft Excel، من المريح استخدام إجراءات المستخدم I / O:

CHEALCELL Sub (I AS INTEGER، J كعدد عدد صحيح، Val as Variant) Val \u003d List1.cells (i، j) .Value نهاية الفرعية الفرعية (أنا كعملاء، j كعدد صحيح، Val as variant) sheet1.cells (i، ي) .value \u003d فال نهاية الفرعية

حيث أنا رقم الخط، J هو رقم عمود ورقة التشغيل.

هياكل إدارة الخروج

يسمح لك مشغل الخروج بالذهاب مباشرة من دورة أو دورة أو إجراءات فرعية أو إجراءات الوظيفة. مخرج بناء جملة مشغل بسيط:

للمكافحة \u003d البدء في إنهاء [كتلة المشغل] [كتلة المشغل] التالي تفعل [(بينما | حتى) الحالة] [كتلة المشغل] [كتلة المشغل] حلقة

الخروج من الداخل والخروج الدورة داخل دورة القيام قد تظهر كم مرة.

Exit Do يعمل المشغل مع جميع أنواع بناء الجملة من دورة الدورة.

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

عند استخدام مشغل الخروج، للخروج من دورة الدورة، تعتمد قيمة الدورة على كيفية اكتمال الدورة:

مع الانتهاء العادي من الدورة، فإن قيمة متغير الدورة لديها أكثر من الحد الأعلى لعدد الدورات

مع إبرام سابق لأوانه الدورة، يحتفظ متغير الدورة بقيمته التي تلقتها، مع مراعاة القواعد المعتادة

عند اكتمال الدورة بحلول نهاية المجموعة، لا يكون متغير الدورة لا شيء (لا شيء) إذا كان كائن نوع متغير (كائن)، أو قيمة فارغة (فارغة)، إذا كان متغير نوع متغير

يستخدم مشغل دورة VBA التالي لأداء كتلة من المشغلين عدد محدد من المرات، في معظم الأحيان يتم استخدام هذه الدورة عند معالجة صفائف المعالجة. الدورة التالية هي الأكثر بساطة، إليك القيمة الأولية والنهائية، وكذلك، يمكنك تعيين خطوة المكافحة.

دعونا نلقي نظرة على بناء الجملة العام:

لمكافحة \u003d بداية في النهاية
العاملين
العداد المقبل

عداد - هنا نحدد اسم المتغير الذي سيقوم بتخزين معلومات حول عدد التكرار (عدد عمليات قياس الدراجات).

بداية - القيمة الأولية للمتر، هي تعبير رقمي

النهاية - القيمة النهائية للمتر، التعبير العددي أن عدد مرات المرور مجموعات.

خطوة - المعلمة اختيارية تسمح لك بتعيين خطوة من التنفيذ. إذا كانت هذه المعلمة غائبة، فإن الزيادة في العداد تساوي واحدة. يعد استخدام الخطوة ذات صلة إذا كنت بحاجة إلى حل المعادلة، لذلك يمكنك تعيين القيمة الأولية 1، النهائي 3 والخطوة عند 0.2.

في نهاية الدورة، لا يمكنك تحديد اسم المتغير (عداد)، ولكن هذا مناسب إذا تم استخدام الدورة المتداخلة، فإنه سيجعل الرمز أكثر قابلية للقراءة.

على سبيل المثال، قم بإنشاء نموذج بعلامات نصية وزر واحد، في محرر التعليمات البرمجية، الكتابة:

CommandButton1_Click الخاص () Dim I، J، A، B ل I \u003d 1 إلى 10 STEP 2 A \u003d A & I & "" Next I for J \u003d 1 إلى 10 STEP 3 B \u003d B & J & "التالي J Label1 .Caption \u003d ALAME2.Caption \u003d B End Sub Private Private Subform_initialize () Label1.caption \u003d "" Label1.fontsize \u003d 14 Label1.forecolor \u003d vbblue Label2.Caption \u003d "" Label2.Fontsize \u003d 14 Label2.ForeColor \u003d VBRED CommandButton1. Caption \u003d "القيم" نهاية الفرعية

في هذا المثال، لدينا معلمات دورة، كلها حددت نفس القيم الأولية والنهائية، ولكن في الأول، يتم تعيين الخطوة 2، وفي الثانية - 3.

في معلمة الخطوة، يمكنك أيضا تحديد قيمة سالبة، وفي هذه الحالة ستعقد العداد في الترتيب العكسي، على سبيل المثال:

Sub Commonbutton1_Click () Dim I، J، Summa، Summb for I \u003d 1 إلى 10 Summa \u003d Summa + I التالي ل J \u003d 10 إلى 1 الخطوة -1 Summb \u003d Summb + J Next Label1.Caption \u003d "أمر مباشر:" & suma label2.caption \u003d "ترتيب عكسي: " & Summb نهاية الفرعية

نحن هنا نحسب مجموع الأرقام من 1 إلى 10 مع ترتيب مباشر وعكس.

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

يستخدم هذا المثال VBA المتداخلة للدورة التالية. في الحالة الأولى، يتم تلخيص الأرقام من 1 إلى 100، في حين تكرر التلخيص 100 مرة. في الحالة الثانية، وصفنا شرطا باستخدام المشغل الشرطي - إذا كان المبلغ أكثر من 10 آلاف، ثم الخروج من الدورة.

حسنا، الآن دعونا نحاول كتابة مثال أكثر عملية - حل المعادلة المربعة من خلال طريقة الإطفاء:

Sub Commonbutton1_Click () const a \u003d -2، b \u003d 6، c \u003d 20 dim x، النتيجة، res for x \u003d -10 إلى 10 خطوة 0.5 نتيجة \u003d a * (x * x) + b * x + c إذا النتيجة \u003d 0 ثم res \u003d res & "and x end إذا كان x leasm1.caption \u003d" x rovno: "

في هذا المثال، أعلنا أن ثلاثة ثوابت A، B و C، مع قيم -2 و 6 و 20، هذه هي معايير المعادلة المربعة (A * X * X + B * X + C \u003d 0) وبعد تغير الدورة المتغير x في النطاق من -10 إلى 10 بزيادات 0.5. عند كل تكرار، تحدث شروط المساواة في الصفر إذا تم تنفيذ الشرط، يتم تسجيل قيمة المتغير x في متغير الدقة. نتيجة لذلك، سيكون للمعادلة حلولين: -2 و 5.

وهكذا، في هذه المقالة، استعرضنا دورة لغة VBA، والتي تستخدم للتعامل مع العدد المحدد في المرات نفس الإجراءات، في المقالة التالية، سنتطلع إليها تستخدم للتعامل مع المجموعات، وسوف ننظر إلى المجموعات نفسها.

بناء جملة المشغل:

لعداد= بداية T.فيالنهاية[خطوة.خطوة]

المراجعين كتلة

التاليعداد

يشار هنا:

لل (إلزامي Keywordvb)؛

ل.قبل (إلزامي Keywordvb)؛

المراجعين كتلة- واحد أو أكثر من المشغلين يسمى هيئة دورة؛

عداد -متغير كامل يعتبر عدد الدورات المنجزة؛

بداية النهاية -القيم الأولية والنهاية للعداد؛

خطوة.خطوة (keywordvb)؛

خطوة -خطوة تغيير العداد؛ ربما سلبية؛ المعلمة اختيارية، حيث إذا كانت الخطوة 1، Canstep خطوةأدنى؛

التالي هو التالي (إلزامي Keywordvb، نهاية تسجيل مشغل الدورة).

قيمة مضادة (بداية، نهاية)ربما قد تكون الثوابت العددية أو المتغيرات المتغيرة أو من النوع الحقيقي أرقاما سلبية أو إيجابية. إلى جسم الدورة، مرة واحدة على الأقل يجب أن يكون البدء نهاية،اذا كان خطوة\u003e 0، و البدء ≥ نهاية،اذا كان خطوة< 0. بمجرد اتخاذ ذلك عداد>النهاية (اذا كان بداية< Конец), تنفيذ انتهاء الدورة. اذا كان ابدأ \u003d.النهاية،سيتم تنفيذ الدورة مرة واحدة؛

مثال 9.1. .حساب وظيفةY. = 2 – 1.5 سينكس. عند تغيير X في الزيادات 0.2 في النطاق.

جزء من البرنامج لحساب إخراج الحجة X والوظيفة:

ل x \u003d 0 إلى 2.4 الخطوة 0.2

Y \u003d 2 - 1.5 * SIN (X)

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

M1: x \u003d x + 0.2

إذا كانت X.<= 2.4 Then

Y \u003d 2 - 1.5 * SIN (X)

سنقوم بتحليل عمل هذا البرنامج. أول حساب هو ynestard، كما لو كان يسقط من الدورة. تبدأ الدورة بعد أول تحويل ControlGotom1 إلى تسمية M1. في سلسلة مع ملصق M1، تتم زيادة الوسيطة X بخطوة 0.2 والتحقق فورا، لا تتجاوز القيمة الجديدة للقيمة النهائية 2.4. إذا لم يتجاوز ذلك، فإن حساب هذا X الجديد X. ثم يتم تنفيذ بيان البيان مرة أخرى - التحكم في النقل في السلسلة باستخدام تسمية M1. هذه التكرار (الدورات) تحسب الحساب، بمجرد تجاوز X 2.4.

الآن برنامج مع إذا دورة ... بعد ذلك.

ل x \u003d 0 إلى 2.4 الخطوة 0.2

يستبدل سطرين

M1: x \u003d x + 0.2

إذا كانت X.<= 2.4 Then

إنه اثنان من الأسطر الأخير من التعليمات البرمجية يتم تنفيذها في الدورة، لكننا لا نرى ذلك. ترميزهم على صف من CFOR ... يتم تشفير رمز CODSGOTO M1 بواسطة WordNext X (حرفيا: أول x). اتضح تصميم مدمج.

عند استخدام Nexto Colory، تعرف على كيفية استخدام عداد الدورة عند حل المهام المختلفة. لمعرفة كيفية استخدام العداد لحل المشكلة، فمن الضروري لتحليل إعداد المشكلة، ابحث عن أنماط تغيير بعض المعلمات المهمة.

مثال 9.2. . تقدير مبلغ عناصر السلسلة :.

جزء من البرنامج:

S \u003d 0 - مجموع الصف

ل I \u003d 1 إلى 16 'عداد أنا denomoter

S \u003d S + 1 / I 'تراكم المبلغ

طباعة "s \u003d"؛ نموذج الإخراج S

في كل مرة قيمة العداد، يقوم المفاتيح 1 / ISET بصياغة عناصر الصف، بدءا من 1.

مثال 9.3. . حساب مجموع العناصر
.

جزء من البرنامج:

S \u003d 0 - مجموع الصف

لأني \u003d 1 إلى 18 'عداد I - NELERATOR

S \u003d S + I / (I + 1) 'قاسم أكثر دفئا على 1

طباعة "s \u003d"؛ نموذج الإخراج S

مثال 9.4. . حساب المبلغ: 5 + 8 + 11 + ... + 32 + 35

جزء من البرنامج:

S \u003d 0 - مجموع الصف

لأني \u003d 5 إلى 35 خطوة 3 "نحصل على حسابي

التقدم مع القاسم 3

طباعة "s \u003d"؛ س.

مثال 9.5. حساب المبلغ الخاص ب X:

تحليل المهمة يدل على أن الشهادة في X يتغير من 1 إلى 10. في هذه الحالة، فإن البسط في المعامل في X أكبر من 1، والقاسم - عند 2. سيتم تشكيل قيمة القيمة باستخدام العداد I. ثم يمكنك إجراء مثل هذا البرنامج (شظية):

S \u003d 1 'S - مجموع الصف

لأني \u003d 1 إلى 10 'كمتر أغير الدرجة في X

S \u003d S + (-1) ^ i * (i + 1) * x ^ i / (i + 2)

طباعة "s \u003d"؛ س.

دوراتلالتالي استعمل من قبلأدخل، الإخراج وعلاج الأسلحة .

مثال 9.6. أدخل وإخراج قيم عناصر الصفيف في (ن.).

جزء من البرنامج:

'خفض مهمة قيمة المتغير N، _

دخلت في النموذج في حقل النص TXTN:

B (I) \u003d Inputbox ("أدخل العنصر B (" & I & ")"، _

"إدخال صفيف B (" & n & ")")

مطبعة ""؛ ب (ط)؛

دور صندوق الإدخال.() يعرض مربع حوار مع زر إغلاق، رسالة محددة، حقل الإدخال، أزرار نعم,إلغاءعنوان مجموعة (أو بدونها). إذا كان الرقم 12 هو حجم الصفيف، ثم في مثالنا، في المظهر الأول، ستنظر هذه النافذة في:

كما ترون، الرسالة أدخل العنصر في (1)يقترح إدخال قيمة العنصر الأول في مربع النص. ستظهر هذه النافذة 12 مرة، حيث يحتوي الصفيف على 12 عنصرا. هذا يتبع من رأس النموذج. تختلف مؤشر العنصر في (I) بدعوة من 1 إلى 12.

إذا كنت ترغب في إخراج قيم العناصر فقط من مجموعة الصفيف في (n)، فسيتألف جسم الدورة من مشغل واحد:

يؤدي عرض عناصر الصفيف لأداء بعض الإجراءات فوقها أيضا باستخدام المشغل من ... دورة التالية.

هنا أمثلة معالجة المصفوفات ذات الأبعاد.

مثال 9.7. . تحديد الحد الأقصى للعنصر في الصفيف (م.).

من خلال استبعاد إدخال البيانات الأولية وإخراج النتائج، صف بإيجاز الخوارزمية:

    سوف نعلن متغير VAX، حيث نأتي قيمة العنصر الأول من الصفيف، والمسيار، الذي تم تعيينه إلى 1 - فهرس العنصر الأول من الصفيف.

    في الدورة باستخدام مشغل ل ... NEXT نحن نلقي عرض جميع عناصر الصفيف، بدءا من 2nd. باستخدام المشغل ... ثم قارن قيمها مع القيمة المخزنة في متغير BMAX.

    إذا اتضح أن قيمة عنصر الصفيف أكبر من قيمة BMAX، TibMax. قم بإخطار قيمة هذا العنصر، وقيمة OFIMAX هي فهرس هذا العنصر من الصفيف.

بعد نهاية الدورة في أضواء BMAX المتغير قيمة العنصر الأقصى، والشكل هو الفهرس الخاص به (رقم).

برنامج هذا الجزء من الخوارزمية.

BMAX \u003d B (1): IMAX \u003d 1

إذا ب (I)\u003e BMAX ثم BMAX \u003d B (I): IMAX \u003d I

مثال 9.8. تقدير المبلغ والأعمال وعدد العناصر الإيجابية للمجموعةد.(م.).

المتغيرات:S، P، K-، على التوالي، كمية المنتج والعدد من العناصر الإيجابية.

خوارزميةهذا التعريف:

    نقوم بتعيين متغير صفر SI To، VariablePrise 1. كقاعدة عامة، ومتغيرات دائما، حيث يتراكم المبلغ هنا، هنا، تتم إعادة تعيين الدورة، والمتغيرات التي يتم فيها حساب المنتج تم حسابه 1.

    باستخدام ... دورة التالية، جميع عناصر الصفيف وتحقق مما إذا كانت إيجابية (D (I)\u003e 0).

    إذا اتضح أن العنصر إيجابي، ثم نضيف قيمته إلى قيمة SI، فنحن نحتفظ بالمبلغ الجديد في نفس المتغير. متغير إلى القيمة الإيجابية للعنصر وكذلك حفظ أيضا إلى المتغير. وإلى المتغير - سحب 1 وحفظ قيمة جديدة في نفس المتغير

برنامجهذا الجزء من الخوارزمية لديه النموذج:

S \u003d 0: p \u003d 1: k \u003d 0

إذا د (ط)\u003e 0 ثم

S \u003d S + D (I) "لذلك تراكم المبلغ _

القيم الإيجابية لعناصر الصفيف D (I)

P \u003d P * D (I) تحديد عمل إيجابي

'مناصر ماسيفا

K \u003d K + 1 'هذا المشغل يسمى العداد، هنا

يحدد عدد العناصر الإيجابية للمجموعة

مثال 9.9. تقدير المبلغ والأعمال والكمية ويعني قيم عناصر الصفيف الغريبد.(م.).

دعونا تعطي جزءا من برنامج مثل هذا التعريف.

S \u003d 0: p \u003d 1: k \u003d 0

إذا د (1) وزارة الدفاع 2<> 0 ثم.

SSR \u003d S / K 'حساب متوسط \u200b\u200bقيم العناصر الفردية

قارن هذا الجزء من البرنامج مع برنامج المثال 9.8. هذا البرنامج يكرر تماما تقريبا السابق. غيرت الحالة فقط في بيان IF. شروط (I) وزارة الدفاع 2<> يعني 0 أننا نبحث عن عناصر من مجموعة (I)، والتي لا تقسم على 2، أي عناصر غريبة. إذا قمنا بفحص الشروط (I) MOD 2 \u003d 0، فسنقوم بتحديد عناصر الصفيف.

كما تعلمون، تقسيم عصري.dattime الناتجة عن رصيد الانقسام في الأعداد الصحيحة. على سبيل المثال، بعد تنفيذ Operatord \u003d 34mod4، يجب أن يكون المتغير 2. لذلك، بالنسبة للاختيار عناصر صفيف متعددة 4، فمن الضروري التحقق من الحالة (I) MOD 4 \u003d 0. الحالة مشابهة إذا بحثنا عن العناصر، عدة أرقام أخرى. بدلا من 4 سيتم تسجيل هذه الأرقام الأخرى.

مثال 9.10. تسجيل عناصر الصفيفرديئة(ن.)، متعددة 5، في صفيف آخر وسحب صفيف جديد في النموذج.

صفيف آخر هو، على سبيل المثال، R5 (ن). يجب أن تؤخذ حجم هذه الصفيف الجديد كأصل، لأنه في حالة الحد، يمكن أن تكون جميع العناصر متعددة 5.

خوارزمية المهمة:

    إعادة تعيين متر ك. باستخدام Cyclefor للمشغل ... خيارات جميع عناصر الصفيف (N).

    يقوم كل عنصر بالتحقق من التعدد 5 باستخدام أحد المشغلين ... ثم قم بتقسيم تنشيط عنصر الصفيف.

    إذا كان عنصر Koint 5، فعندئذ استخدام عداد K \u003d K + 1، فإننا نتشكل مؤشرات الصفيف (n)، بدءا من 1، واكتبها إلى هذه الصفيف الأخرى -R5 (N).

    إذا كان لاغيا، فإننا نستمد مجموعة () إلى النموذج.

    إذا انسحب Kranno Zero: "لا توجد عناصر، متعددة 5".

جزء من البرنامج:

إذا ص (1) mod 5 ثم k \u003d k + 1: r5 (k) \u003d r (i)

إذا ك.<> 0 ثم.

طباعة "لا توجد عناصر، متعددة 5"

يمكن استثمار الدورات في دورات أخرى.

سنقوم بإظهار العمل دورات متداخلة وبعد أدناه في البرنامج نظمت إخراج قيم عدادات الدراجات، JK. من نتائج الإخراج، ي، من الواضح كيف يتم تنفيذ دورات متداخلة.

Frmcycle_dblClick الخاص ()

Scalemode \u003d 4 "وحدات القياس - الرموز

لأني \u003d 1 إلى 3 'دورة خارجية

طباعة "i \u003d"؛ أنا؛

ل J \u003d 1 إلى 4 '1st دورة استثمار

currentx \u003d textwidth ("i \u003d 1") + 5

طباعة "J \u003d"؛ J؛

currentx \u003d textwidth ("i \u003d 1 j \u003d 1") + 7

ل K \u003d 1 إلى 5 '2nd دورة متداخلة

في النموذج الموضح (الشكل 1)، يتم تقديم نتائج مخرجات متر جميع الدورات الثلاثة: دورة خارجية - مواجهة I، أول دورة استثمار - عداد الدورة الثانية، الدورة الداخلية - عداد. كما ترون أكبر متر "بطيء" في الدورة الخارجية(بي)، و الأسرع "- عداد الدورة الداخلية (بواسطةك.).

يتم تنفيذ البرنامج بعد النقر المزدوج على زر الماوس الأيسر في نموذج FRMCICICLI.

CurrentX، خصائص Currenty - Form تحديد الإحداثيات، البيوت الريفية لبدء تشغيل طريقة إخراج المعلومات (انظر الشكل 1 فتح نموذج الموقع).

TextWidth () هي وظيفة تقوم بإرجاع عرض النص المحدد في الوظيفة كوسيطة في اقتباسات مزدوجة.

تستخدم دورات متداخلة في معالجة المصفوفات ثنائية الأبعاد (المصفوفات). ولكن في بعض المهام، باستثناء مدخلات وإخراج عناصر الصفيف ثنائي الأبعاد، يمكن أن تقتصر على دورة واحدة. النظر في بعض الأمثلة على مصفوفات البرمجة.

مثال 9.11. إدخال وإخراج المصفوفة (صفيف ثنائي الأبعاد) أعداد صحيحةإنستير(ن.).

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

مدخلات وإخراج المصفوفةفي الصفوف - جزء 1..

Dim M as Integer، n كمثل صحيح، وأنا كيميني، ي أن عددا صحيحا

ديم INTA () كعدد صحيح إعلان صفيف ديناميكي

م \u003d فال (txtn.text) 'م - عدد الصفوف

n \u003d val (txtn.text) 'n - عدد الأعمدة

Redim Inta (م، ن) كعدد عدد صحيح "تجاوز صفيف

ل i \u003d 1 إلى m 'سأقدم قيمتك حتى تماما

"لم يكتمل في الدورة المتداخلة من قبل J

مطبعة ""؛ INTA (I، J)؛ استنتاج حسب الخط

طباعة "انتقل إلى بداية سطر جديد

لإدخال المصفوفة على الأعمدة، من الضروري إجراء حلقة من الخارج من J (تعدد أرقام الأعمدة)، و PI الدورة الداخلية الدورة (تحدد أرقام الصف).

مدخلات وإخراج المصفوفةبواسطة الأعمدة جزء 2..

PRY \u003d 2500: Currenty \u003d PRY "PRY" يحدد تنسيق y البداية

إخراج العنصر الأول من كل عمود في النموذج

ل J \u003d 1 إلى N 'J سيوفر قيمتك بينما تماما

"لم يكتمل في الدورة المتداخلة وفقا ل I

iNTA (I، J) \u003d Inputbox ("أدخل عنصر INTA (" & I & "،" & _) "، _

"مصفوفة INPUT INTA (" & M & "،" & n & ")

طباعة علامة التبويب (6 * j)؛ INTA (I، J) '' استنتاج في الأعمدة

Currenty \u003d PRY 'لإخراج العنصر الأول

العمود التالي

في هذا الجزء الثاني من البرنامج، لا تتكرر الأسطر الأولى من الجزء الأول من الجزء الأول. تعمل وظيفة علامة التبويب (6 * j) بداية الإخراج في السلسلة (بالأحرف)، تتراوح من الحافة اليسرى للنموذج. التنسيق يساوي 2500 غصين، ولكن يمكنك اختيار قيمة أخرى.

مثال 9.12. . تنظيم قيم عناصر الصفيفالخامس.(ن.) تصاعدي.

هناك العديد من الخوارزميات في ترتيب المصفوفات. نعطي واحدة منهم: بمساعدة دورات متداخلةلالتالي حدد العناصر التي تبدأ من الأول وإلى ما قبل الأخير، ومقارنة كل منها مع عناصر لاحقة؛ إذا اتضح أن العنصر اللاحق أقل من المحدد، فقم بتغييرها في الأماكن.

جزء من البرنامج ينفذ هذه الخوارزمية:

لأني \u003d 1 إلى n - 1

ل J \u003d i + 1 إلى n

إذا v (ي)< V(i) Then P = V(i): V(i) = V(j): V(j) = P

دعونا نوضح هذا الجزء من البرنامج.

باستخدام دورة خارجية مع متر، فإن العنصر الذي حدده (ط) للمقارنة مع العناصر اللاحقة. الدورة الداخلية مع المقابلة لمقارنة العناصر اللاحقة (J). القيمة الأولية-jowy + 1. هذا هو العنصر الأول من اللاحقة.

لتبادل قيم العناصر V (I) YV (J)، ندخل بعض المتغير، وهو "إخفاء" مؤقتا "قيمة واحدة من عناصر الصفيف (في البرنامج ISV (I)). ثم يتم بعد ذلك تعيين عنصر V (I) قيمة العنصر (ي)، ويتم تعيين ElectressV (J) القيمة OFV (I)، والتي يتم تخزينها في المتغير. إذا تم تعيين TOV "إخفاء" (ي)، فإن رمز تبادل القيم سيكون: p \u003d v (j): v (j) \u003d v (i): v (i) \u003d p. النتيجة لن تتغير.

ل تبسيط الصفيف تنازلي، حالة كافية للتحقق من الكتابة في Videov (J)\u003e V (I)، I.E.E. لتغيير علامة عدم المساواة إلى أخرى.

إذا لم تكن الصفيف رقما رقميا، وسلسلة، وسيتم تقديم الأبطن في عناصر الصفيف، ثم وفقا لبرنامج المثال 9.12، يمكنك ترتيب قائمة بأقللقة وفقا للحروف الأبجدية. الحقيقة هي أن أحرف الأبجدية المستخدمة في الكمبيوتر، وعدم المساواة عادلة:< Б < В < Г….< Я и т. д., поскольку числовые коды букв алфавита последовательно увеличиваются, начиная с А и до конца алфавита. Это же справедливо и для букв английского алфавита.

مثال 9.13. . حساب مقدار العناصر الإيجابية للأعمدة الفردية للمصفوفةF.(م., ن.) وإخراج الشكل.

برنامج الخوارزمية:

    باستخدام الدورة الخارجية في الزيادات 2، قم بتشكيل فهرس عمود Matrix الفهرس، بدءا من العمود الأول.

    نقوم بإعادة ضبط مجموع S، حيث تتراكم مجموع العناصر الإيجابية.

    في الدورة الداخلية، تحقق من علامة عنصر الصفيف.

    إذا كان عنصر الصفيف إيجابيا (\u003e 0)، فإننا نحسب المبلغ S.

    بعد نهاية الدورة الداخلية، نستمد مجموع نموذج SNA.

شظية برامج:

ل J \u003d 1 إلى n الخطوة 2

إذا f (i، j)\u003e 0 ثم s \u003d s + f (i، j)

طباعة "حجم العمود"؛ J؛ ":"؛ S 'J - رقم العمود!

تسمح لك دورات متداخلة تنظيم خيارات Everbore وحل المشاكل التي لا يمكن حلها تحليليا. نتيجة وجود، يتم الحصول على خيارات الحلول، من بينها واحدا أو أكثر، والتي تلبي شرط المشكلة.

مثال 9.14. هناك 1801 روبل. كم يمكنك شراء الشوكولاتة ل 31 روبل. والثور على 18 روبل لإنفاق كل الأموال بالكامل.

برنامج:

المبلغ \u003d 1801.

جميع المائل \u003d المبلغ \\ 31: Allbilailails \u003d المبلغ \\ 18

لأني \u003d 1 إلى جميع

ل J \u003d 1 إلى الشاملة

السعر \u003d i * 31 + j * 18 'إجمالي سعر الشراء

إذا كان السعر \u003d 1801 ثم

طباعة "الشوكولاتة:"؛ أنا؛ علامة التبويب (19)؛ "الكتاب:"؛ ج.

دعونا نوضح البرنامج الذي نستخدم فيه المتغيرات في الروسية.

أولا، حدد ما هو الحد الأقصى لعدد الشوكولاتة فقط أو فقط الثور يمكن شراؤها من أجل المبلغ بأكمله. يتم استخدام القيم التي تم الحصول عليها لجميع الفولتية وجميع المطاحن للحد من كميات التنقلات من عدد الشوكولاتة والثور. لكل قيم كمية الشوكولاتة (I) وعدد الكتل (ي)، نحدد السعر الإجمالي لشراءهم. إذا كان السعر المحسوب 1801، فسيكون الخيار المحدد أحد حلول المشكلة.

تشير وظيفة علامة التبويب () إلى أي موقف من حافة النموذج سيكون إخراج المعلومات بعد هذه الوظيفة. iftab (19)، ثم من الموقف التاسع عشر.

يعرض البرنامج 3 خيارات شراء ممكنة:

الشوكولاته 7، كتاب 88

الشوكولاته 25، كتاب 57

الشوكولاته 43، كتاب 26

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

هناك العديد من المهام الرياضية التي يتم حلها ببساطة بواسطة طريقة الإطفاء باستخدام برمجة الدورات المتداخلة.