دورات. الخوارزميات الدورية. دورات مع شرط مسبق ونشر مشغل الدورة مع الشرط المسبق

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

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

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

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

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

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

في لغة Pascal، يتم تنفيذ كلا النوعين من الدورات. تتمتع دورة Tradratance العرض العام التالي:

في حين أن دي يبدأ منطقي

(مشغلي الجسم الدورة)

يمكن وصف تشغيل الدورة بالكلمات: " في حين أن التعبير المنطقي هو الجسم المتكرر حقا".

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

التسجيل العام للدورة مع postcondition هو كما يلي:

(مشغلي الجسم الدورة)

حتى logical_section؛

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

غالبا ما تكون دورات قابلة للتبديل. تخيل، على سبيل المثال، أنه لكل من قيم المتغير X \u003d 1.2، ...، 20، تحتاج إلى أداء بعض الحسابات (رياضيا يمكن كتابة هذا القانون من هذا القانون
أو
). سنظل عرضا عاما من الدورات

بينما X.<=20 do begin

(حساب المشغلين)

(حساب المشغلين)

كما يتضح من القائمة، يتم تعيين متغير التحكم XB من كلا الحالتين القيمة الأولية 1، فإن كلا الدورتين تغيير قيمة القيمة، على التوالي، تصحيح الدورة، المشغل: \u003d x + 1؛، ولكن لدورة "مقلوب" ("سيكون هناك أكثر من 20")، ولا يتم الانتهاء من الجسم في قوسين المشغلين.

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

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


مشاركة العمل على الشبكات الاجتماعية

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


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

تعريفات

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

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

دورة مع الشرط المسبق

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

في حين<условие> فعل.

يبدأ.

<тело цикла>

نهاية؛

دورة مع postband.

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

يكرر.

<тело цикла>

حتى. <условие выхода>

دورة مع الوسط

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

في الواقع هذا هوفترة راحة؛

دورة مع متر

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

لأني: \u003d 0 إلى 9

يبدأ.

دورة دورة

نهاية؛

الإخراج الأمامي من الدورة

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

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

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

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

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

أعمال أخرى مماثلة قد تهمك. ISHM\u003e

2740. الخوارزميات الدورية. دورة مع الشرط المسبق 16.37 كيلو بايت.
سوف نتعرف على أولها - مشغل الدورة مع حين. يتم استخدام الدورات مع الشرط المسبق عند ارتباط تنفيذ الدورة بحالة منطقية معينة. يحتوي مشغل الدورة مع ما سبق على جزأين: حالة الدورة وجسم الدورة. نموذج التسجيل العام التالي بينما يبدأ الحالة في نهاية دورة الجسم؛ باللغة الروسية، يبدو هذا مثل هذا: في حين يتم تنفيذ هذه الحالة، قم بمجموعة من المشغلين حتى النهاية من البداية؛ من الواضح تماما أن قوسين المشغلين وضعوا منفصلة عن بقية البرنامج ...
7903. دورة الإنتاج 39.35 كيلو بايت.
تتكون فترة العمل من وقت إجراء العمليات التكنولوجية وغير التكنولوجية؛ يتضمن هذا الأخير جميع عمليات التحكم والنقل منذ أول عملية إنتاج وحتى يتم إكمال المنتج المكتمل. مع وجود شكل متتابع من الحركة، يعد أمر الإنتاج جزءا واحدا أو جهازا مجمعة أو جزء من الأجزاء 1 سلسلة من الآلات 2 - في عملية إنتاجها يذهب إلى كل عملية عملية لاحقة فقط بعد معالجة جمعية جميع الأجزاء من آلات هذا الحزب اكتمال ...
7548. دورة حياة EIS. 34.12 كيلو بايت.
دورة حياة EIS تحتاج الحاجة إلى إنشاء EIS إما الحاجة إلى أتمتة أو تحديث عمليات المعلومات الحالية أو الحاجة إلى إعادة التنظيم الأساسي في أنشطة إعادة هندسة أعمال المؤسسة. تشير احتياجات إنشاء EIS من أجل تحقيق الأهداف التي يجب تطويرها؛ ثانيا في أي وقت ينصح بتنفيذ التنمية؛ Thieh ما هي التكاليف التي يجب تنفيذها لتصميم النظام. تصميم EIS ...
7492. دورة المشروع 5.37 ميغابايت.
دورة حياة المشروع المفهوم الأصلي لدراسة مشاكل تمويل يعمل في المشروع واعتماد القرارات ذات الصلة. كل مشروع، بغض النظر عن تعقيد وحجم العمل اللازم لتنفيذها، تمر ببعض الدول في تنميتها: من الدولة عندما لا يكون هناك مشروع بعد للدولة عندما لم يعد هناك. بالنسبة لأعمال رجال الأعمال، يرتبط بداية المشروع ببداية تنفيذها وبداية الاستثمار النقدي في تنفيذها.
8075. الدورة الثانية من الحسابات 9.25 كيلو بايت.
في الحالة الثانية، تم الحصول على مكعبات D المكافآت المكافئة عن لعنصر 8، والذي يختلف عن الانعكاس الوحيد الأول للرمز D، لذلك من الضروري اتخاذ مكعب مكعب مكافئ والحصول على حل.
21755. دورة حياة المشروع 154.99 كيلو بايت.
يتم تحديد فعالية واستدامة أنشطة المنظمة الحديثة إلى حد كبير حسب جودة أنشطة الإدارة التي تنفذ في إدارة دورة المشروع. الإدارة المختصة لدورة المشروع هي مؤشر على الاتجاه الصحيح للتنمية الاستراتيجية وفقا للفرص المتاحة.
2742. كرر دورة تكرار 12.49 كيلو بايت.
أنت تعرف بالفعل كيفية تنظيم دورة باستخدام المشغل أثناء ذلك. أذكر أنه عند إجراء هذا المشغل، يتحقق الكمبيوتر قيمة الحالة. إذا كان الشرط صحيحا، فسيتم تكرار الجزء التنفيذي من المشغل بينما
20265. دائرة Zhistictєviy من شركة "Ferrero" 13.74 كيلو بايت.
Alla Zoopnyl I Sviy Vibіr في Vіlsh-Mensen Kondiji Kondterty Kompanії Ferrero. حصة جلد البشرة الجبل الرابع في Svіtі - آراء في مصب Lasuni Yaki Baluє بنفسي Lasoischi _tіyskiї Grup Ferrero Yakiy Z لحظة ZasNounced في الصخور الضميرة Vipovnuzhnaya Rockіv Vi Nіkoli لم تنجح حول هؤلاء HTO HTO HTO Doroslich Lasshiv D_Teji Skocolate -Shigovu وسادة p_d nutell ...
1002. شروط التحقق، دورة مع حالة إضافية 2.25 ميغابايت.
لغة المجمع هي نظام التعيين المستخدم لتمثيل في الشكل القابل للقراءة بالبرامج المسجلة في رمز الجهاز. تتيح لغة المجمع للمبرمج استخدام رموز العمليات الهادسة الأبجدية
2341. دورة حياة المنتج وسلوك المستهلك 14.84 كيلو بايت.
تتكون دورة حياة البضائع والسلوك المستهلك ل ZHC من عدة مراحل من المراحل: البحث والتطوير؛ التنفيذ؛ زيادة في المبيعات؛ نضج؛ ركود اقتصادي. المرحلة الأولى من دراسة ZHCT وتطوير المنتجات. بالنسبة للشركة، هذه المرحلة من إنشاء البضائع هي التكاليف فقط والدخل المستقبلي المحتمل. الإجراء الخاص بالتخلص من السلع إلى السوق يستغرق وقتا؛ خلال هذه الفترة، تزيد المبيعات ببطء ما يمكن شرحه بهذه الظروف: التأخير في توسيع القدرات الإنتاجية؛ مشاكل تقنية؛ ...

يرجى إيقاف ADBLOCK مؤقتا على هذا الموقع.

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

البرنامج: لعب المكعب.

البرنامج يحل محل مكعب اللعب المعتاد.

يتحكم:

  • 1 - رمي مكعب؛
  • 0 - الانتهاء من اللعبة.

دعونا نكتب الشغل لعملتنا.

سرد 1.

#تضمن. #تضمن. #تضمن. INT الرئيسي (الفراغ) (Srandf (NULL)؛ طباعة ("########## Devilty \\ 'S Bones ########### \\ n")؛ طباعة (# # \\ n ")؛ طباعة (" الأوامر #: # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" # 1 - لعبة جديدة # \\ n ")؛ طباعة (" # 0 - الخروج # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" ################### ### ######## \\ n \\ n ")؛ UNT Control Value \u003d 0؛ PrintF (" إدخال الأمر: ")؛ SCANF ("٪ D "، والتحكم)؛ إذا (Control \u003d\u003d 1) (القيمة \u003d 1 + rand ()٪ 6؛ printf ("النتيجة:٪ d \\ n"، القيمة)؛) إرجاع 0؛)

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

دورة مع الوقت

سرد 2.

بينما (شرط) المشغل؛

  1. يجتمع البرنامج الكلمة الرئيسية للوقت، مما يعني مزيدا من التصميم الدوري؛
  2. يتم فحص الحالة. يتم احتساب التعبير المنطقي المسجل بين قوسين؛
  3. إذا كانت قيمة الحالة هي الحقيقة، يتم تنفيذ نص الدورة. الذهاب إلى الفقرة 2؛
  4. إذا كانت قيمة الشرط كذبة، فسيتم إكمال الدورة. يتم نقل عنصر التحكم إلى المشغل بعد هيئة الدورة.

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

دعونا إعادة كتابة برنامجنا باستخدام هذه الدورة.

سرد 3.

#تضمن. #تضمن. #تضمن. INT الرئيسي (الفراغ) (Srandf (NULL)؛ طباعة ("########## Devilty \\ 'S Bones ########### \\ n")؛ طباعة (# # \\ n ")؛ طباعة (" الأوامر #: # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" # 1 - لعبة جديدة # \\ n ")؛ طباعة (" # 0 - الخروج # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" ################### ### ######## \\ n \\ n ")؛ UNT CONCORT؛ القيمة الدولية \u003d 0؛ printf (" enter command: ")؛ scanf ("٪ d "، والتحكم)؛ بينما (التحكم! \u003d 0) (الحالة 1: القيمة \u003d 1 + rand ()٪ 6؛ طباعة ("النتيجة:٪ d \\ n"، القيمة)؛ استراحة؛ الافتراضي: printf ("خطأ! حاول مرة أخرى ... \\ n")؛ استراحة؛) printf ("enter command:")؛ scanf ("٪ d"، والتحكم؛) printf ("good bye! \\ n")؛ عودة 0؛)

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

  1. نعرض قائمة المستخدم وعرض إدخال الأمر؛
  2. تشغيل أثناء الدورة. التحقق من الشرط
  3. إذا دخل المستخدم 0، فإن حالة الدورة تأخذ قيمة الكذب. لا يتم تنفيذ جسم الدورة. يتم نقل التحكم إلى المشغل التالي على الدورة. عرض صف من وداعا! وبعد اكتمال البرنامج؛
    1. اختيار الاختيار:
      1. إذا دخل المستخدم 1، فنحن نولد رقما عشوائيا من 1 إلى 6 وعرضه على الشاشة. نترك من مشغل الاختيار؛
      2. إذا أدخل المستخدم شيئا آخر، فقم بعرض رسالة خطأ. نترك من مشغل الاختيار.
    2. نقدم للمستخدم لإدخال أمر جديد؛
    3. اقرأ رمز الأمر في متغير التحكم؛
    4. نعود إلى التحقق من الحالة. النقطة 3.

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

القاعدة الهرمية:

حتى الآن، حالة الحقيقة، أداء جسم الدورة.

القيام به أثناء القيام بدورة

والخارج، التصميم الدوري الثالث هو دورة القيام بها.

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

بناء جملة هذا التصميم الدوري هو:

سرد 4.

هل المشغل؛ بينما (شرط)؛

يعمل هذا التصميم على النحو التالي:

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

دعونا إعادة كتابة برنامجنا باستخدام هذا النوع من التصميم الدوري.

سرد 5.

#تضمن. #تضمن. #تضمن. INT الرئيسي (الفراغ) (Srandf (NULL)؛ طباعة ("########## Devilty \\ 'S Bones ########### \\ n")؛ طباعة (# # \\ n ")؛ طباعة (" الأوامر #: # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" # 1 - لعبة جديدة # \\ n ")؛ طباعة (" # 0 - الخروج # \\ n ")؛ طباعة (" # # \\ N ")؛ طباعة (" ################### ### ######## \\ n \\ n ")؛ INT CH_CONTROL؛ القيمة الدولية \u003d 0؛ قم بعمل (" أمر الإدخال ("" أمر الإدخال: ")؛ Scanf ("٪ d "، & ch_control)؛ تبديل (ch_control) ( الحالة 0: استراحة؛ الحالة 1: القيمة \u003d 1 + rand ()٪ 6؛ طباعة ("النتيجة:٪ d \\ n"، القيمة)؛ استراحة؛ الافتراضي: printf ("خطأ! حاول مرة أخرى ... \\ N") ؛ استراحة؛)) بينما (Ch_Control! \u003d 0)؛ طباعة ("وداعا! \\ n")؛ عودة 0؛)

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

خطة تمهيد الدرس

على علوم الكمبيوتر وتكنولوجيا المعلومات والاتصالات

في الصف العاشر في الموضوع:

"الخوارزميات الدورية. دورات مع شرط مسبق و postcondition. "

شيء: المعلوماتية وتكنولوجيا المعلومات والاتصالات

درس موضوع: " الخوارزميات الدورية. دورات مع الشرط المسبق والبريد

نوع الدرس: دراسة مواد جديدة

شكل: درس العمل

أهداف الدرس

التعليمية:للتعرف على مفهوم "الدورات مع الرهن والبريد." تأمين معرفة الطلاب عن الخوارزمية.

النامية: السكك الحديدية المجتهد، استقلال، ثقافة الكلام والتواصل.

تعليمي: تطوير التفكير والذاكرة والكلام وغيرها من العمليات العقلية.

الخشب المعرفي: شكل وتطوير الكفاءة في مجال استخدام تكنولوجيا المعلومات والاتصالات

(كفاءات تكنولوجيا المعلومات والاتصالات).

الخشب التنظيمي: تصحيح أعمالهم بشرطا مع النتائج المخططة.

الخشب التواصل: تعرف على العمل بشكل فردي وفي المجموعة.

الخشب الشخصي: فهم أهمية التدريب في مجال علوم الكمبيوتر وتكنولوجيا المعلومات والاتصالات في الظروف

تطوير مجتمع المعلومات.

وسائل التعليم:جهاز الإسقاط، الكمبيوتر الشخصي، البرامج المتخصصة (بيئة برمجة Pascalabc).

خلال الفصول الدراسية

1. تنظيم بداية الدرس

مرحبا. اليوم الأول، سأقود دروس "المعلوماتية وتكنولوجيا المعلومات والاتصالات". تحية للطلاب، تحقق من استعدادهم للدرس. يرحب الطلاب ببعضهم البعض.

2. التحقق من الواجبات المنزلية

أطلب منهم أن أصابوا المواد.

1. ما هي الخوارزمية الخطية؟

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

2. كيف يتم تنفيذ الخوارزمية الخطية؟

في البرنامج، يتم تنفيذ الخوارزمية الخطية من خلال وضع المشغلين المتسلسلين.

على سبيل المثال، الخطي هو خوارزمية هبوط الشجرة التالية:

1) حفر في الأرض؛
2) خفض seedlove في حفرة؛
3) تغفو الحفرة مع ستة الأرض؛
4) شرفة المياه مع الماء.

3. ما هي تنظيم الإجراءات التي تسمى فرع؟

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

4. كيف نعلم خوارزمية فرع؟

يمكن وصف منطق صنع القرار على النحو التالي:

اذا كان<условие> الذي - التي<действия 1> غير ذلك<действия 2>

أمثلة:

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

3. دراسة مواد جديدة

سيكون موضوع دروسنا: " الخوارزميات الدورية. الدورة مع الاختبار "بينما". دورة مع وظيفة "قبل"».

    الغرض من درسنا هو: "التعارف مع مفهوم دورة وتطوير القدرة على حل المهام المختلفة في هذا الموضوع".

دعونا الآن نكتب ما هي الدورة؟

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

خوارزمية دورية - هذه خوارزمية تحتوي على دورات واحدة أو أكثر.

يمكن إصلاح هيكل الخوارزميات ل "الدورة" بطرق مختلفة:

بيانيا - باستخدام مخطط انسيابي؛

في لغة البرمجة، على سبيل المثال، في Pascal، باستخدام تعليمات خاصة تنفذ دورات أنواع مختلفة.

اليوم سوف نتعرف على الدورات مع التنبؤ والنشر.

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

باللغة الروسية، يبدو مثل هذا:

في حين يتم تنفيذ هذا الشرط، افعل
من البداية
مجموعة المشغلين
إلى النهاية؛

عند استخدام دورة مع شرط مسبق، يجب أن تتذكر ما يلي:

    يجب تحديد قيمة شروط أداء الدورة قبل بدء الدورة؛

    إذا كانت قيمة الحالة صحيحة، يتم تنفيذ جسم الدورة، وبعد ذلك يتكرر التحقق من الصحة. إذا كانت الحالة خاطئة، ثم الخروج من الدورة؛

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

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

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

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

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

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

تبديل الشريحة) !!!

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

1) يجب تحديد القيمة الأولية للتعبير المنطقي قبل الدخول في الدورة، أي قبل حين؛

2) يجب أن تكون تسلسل المشغلين المنفذين في جسم الدورة متصلين منطقيا وتحتوي على مشغل واحد على الأقل تغيير قيمة معلمة الدورة، وإلا فإن الدورة ستستمر بلا حدود؛

3) تعبير منطقي في الدورات أثناء انتهاء الدورة حتى تنتهي الدورة، يجب أن تأخذ قيمة FALSE.

عامل العمل في حين

دعونا ننظر في المثال الأول:

في مخطط الكتلة، يبدو جدول الضرب على 3 مثل هذا:

حاول إنشاء جدول الضرب بنسبة 1 و 2 و 4 و 5 و 6 و 7 و 8 و 9. كيف سيبدو وكأنه مخطط انسيابي؟ (يشكل الطلاب طاولة الضرب في شكل مخطط كتلة).

الآن دعونا نفكر في ميزات هذه الدورة والكتابة لنفسك:

دعنا الآن نحاول حل المهمة في توربو باسكال.

حل مشكلة إخراج 10 أعداد صحيحة على الشاشة باستخدام الدورة في حين فعل. :

مهمة:

لحل هذه المهمة، دعونا نتذكر أي نوع من الأرقام الطبيعية للأرقام؟

يسمى الرقم الطبيعي سلسلة من الأعداد الصحيحة بدءا من 1. وهذا هو، 1، 2، 3، ...، وإلى رقم N.

حل هذه المهمة:

مهمة:

قرار:

برنامج koshey_vasilisa؛

var v، s: عدد صحيح؛

يبدأ.

الخامس: \u003d 18؛ (العمر فاسيليسا)

s: \u003d 27360؛ (دخول رأس المال كوششي)

بينما س.<30000 do

يبدأ.

s: \u003d S + 33؛ (كل عام من التفجير يصبح أكثر ثراء)

v: \u003d v + 1؛ (أصبح كل عام من Vacilisa أكبر سنا)

نهاية؛

writeln ("Vasilisa"، V، "سنوات")؛

نهاية.

المهمة التالية لن تحل نفسك في المنزل، اكتب المهمة:

    بدأت التدريب، المتزحلق في اليوم الأول ران 10 كم. كل يوم في اليوم التالي زاد طول الركض بنسبة 10٪ من اليوم السابق. حدد في أي يوم سيدير \u200b\u200bأكثر من 20 كم، في أي يوم يتجاوز مجموع الأميال لجميع الأيام 100 كم.

دعونا نتساءل عدد المتغيرات التي سنحصل عليها وما نوعها؟ لدينا 2 متغيرات فقط، واحد سيكون لديه أكثر من 20 كم لحساب المدى اليومي، والآخر سوف يحسب اليوم ما يزيد إجمالي عدد الكيلومترات لجميع الأيام 100 كم. ما النوع سيكون المتغيرات؟ سيتم استخدام الأميال اليومية عدد صحيح (I.E. عدد صحيح)، والثاني الحقيقي (أي رقم حقيقي أو رقم فاصلة)، نظرا لأن لدينا 10٪، ثم إذا تم ترجمتها إلى الرقم، نحصل على 0.1. سيكون لدينا دورتين في البرنامج، الدورة الأولى لتحديد اليوم عندما يدير المتزحلق أكثر من 20 كم، والثاني للعثور على اليوم عندما يتجاوز مجموع الأميال لجميع الأيام 100 كم.

الآن دعونا تعرف على النوع التالي من الدورات - هذه دورات مع postcondition.

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

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

يكرر. (كرر)
(العاملين)
حتى. <условие>؛ (طالما أن الشرط غير صحيح)

تتم قراءة هذا التصميم مثل هذا:

النظر في تشغيل الدورة مع PODLASIA:

ميزات الدورة مع postlasia:

الأكثر ذوقا يستخدم الآن الدورة مع postcal.

مقارنة الدورة مع ما قبل و postcondition:

كيف قلت من قبل:

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

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

وأيضا هناك عام في هذه الدورات:

    لدورة جلس القيمة الأولية للمتغيرات ,
    المدرجة في الحالة. شرط - التعبير منطقية يكتب.

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

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

والآن التحدي نفسه:

رأى الجميع المهمة التي تحتاج إلى حلها باستخدام دورة مع PODLASIA. ترى جميعا أن هناك مخطط انسيابي، مؤلف باستخدام دورة مع شرط مسبق. دعونا ننظر إليها بالتفصيل، ثم سأقدم مهمة. نرى جميعا أن مخطط الكتلة لديه بداية، ثم يحدث إدخال البيانات، حيث أنا \u003d 7، لأن هذا الابن في رقم 7، لأنه أخذ آخر اثنين من الزمرد من صندوق الأب، لذلك نحن نقدم قيمة تساوي اثنين. نظرا لأن الابن الأول استغرق نصف ما كان في الصدر، فهذا يعني أن الفرق في التقدم الهندسي هو ما هو، وهذا هو، نحن تعيين قيمة تساوي اثنين. فقط الحرف ص ويعرض الفرق في التقدم الهندسي. سنحصل على الحالة أنه بينما نحن\u003e 1 نحن ننفذ التسلسل التالي من الإجراءات، أي أنا: \u003d I-1، أي أن هذا الإجراء يظهر أن عدد الابن التالي ينخفض \u200b\u200bمن قبل واحد. ثم نحسب اندلاع تقدم الإجراء: Q \u003d Q * R. سيتم تنفيذ تسلسل الإجراءين هذا حتى يصبح الشرط الأول\u003e 1 خاطئا، وبعد ذلك سيحدث الاستنتاج مقدار الزمراد الذي حدث في الصدر وسيجد البرنامج.

تثبيت التقديرات والتعبير عن طلابها.

شكرا على المشاركة والأنشطة النشطة. إلى اجتماعات جديدة.

5. الواجبات المنزلية

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

العلامات: دورات سي. C حلقات. دورة مع postband. دورة مع الشرط المسبق. دورة قفل. في حين. افعل اثناء. ل. فترة راحة. يكمل.

مقدمة دورات مع شرط مسبق.

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

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

النظر في دورة مع الشرط المسبق.

int i \u003d 0؛ عندما أنا.< 10) { printf("%d\n", i); i++; }

يتم تنفيذ هذه الدورة حتى يتم تحديد الحالة بعد الكلمة الرئيسية أثناء صواب Whele. هيئة الدورة هي سطرين، يعرض المرء رقما، والثاني يغيره. من الواضح أن هذه الدورة سيتم الانتهاء منها 10 مرات وسيعرض
0
1
2
3
وهلم جرا إلى 9.

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

int i \u003d 0؛ عندما أنا.< 10) { printf("%d\n", i); }

في هذه الدورة، المتغير لا يتغير، الذي يعمل على تحديد حالة التوقف، لذلك لن تكتمل الدورة.

int i \u003d 0؛ بينما (i\u003e 0) (printf ("٪ d \\ n"، i)؛ i ++؛)

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

INT I؛ عندما أنا.< 10) { printf("%d\n", i); i++; }

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

إذا كان جسم الدورة أثناء وجود مشغل واحد، فيمكن حذف الأقواس المجعد.

int i \u003d 0؛ عندما أنا.< 10) printf("%d\n", i++);

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

دورات مع postcondition.

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

افعل (هيئة دورة) أثناء (شرط)؛

المثال السابق باستخدام دورة do سوف تبدو

int i \u003d 0؛ افعل (printf ("٪ d \\ n"، i)؛ i ++؛) بينما (أنا< 10);

دعونا نفكر في مثال على استخدام الدورة مع postlane والشرط المسبق. دعونا بحاجة إلى دمج الوظيفة.

تين. 1 وظيفة التكامل العددية ∫ a b f x d x

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

∫ a b f x d x \u003d σ i \u003d a b f i h

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

المستطيلات اليسرى "SRC \u003d" / images / c_loop_rectangles_left.png "Alt \u003d" (! Lang: طريقة وظيفة التكامل العددي
المستطيلات اليسرى"> Рис. 2 Численное интегрирование функции методом!}
المستطيلات اليسرى

اسمحوا X 2 تكون الوظيفة المطلوبة. سنحتاج إلى المتغيرات التالية. أولا، البطارية المبلغ لتخزين التكامل. ثانيا، الحدود اليسرى واليمينية A و B، في الثالثة الخطوة H. نحتاج أيضا إلى القيمة الحالية لجدية وظيفة x.

للعثور على التكامل الذي تحتاجه للذهاب من أ. قبل ب. مع بعض الخطوة حاءوإضافة منطقة مستطيل مع الجانبين f (x) و حاء.

#تضمن. #تضمن. Int Main () (Sum Double \u003d 0.0؛ Double A \u003d 0.0؛ Double B \u003d 1.0؛ Double H \u003d 0.01؛ مزدوج x \u003d a؛ بينما (x< b) { sum += x*x * h; x += h; } printf("%.3f", sum); getch(); }

البرنامج يعرض 0.328.

∫ 0 1 × 2 D X \u003d x 3 3 | 0 1 \u003d 1 3 ≈ 0.333

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

بينما (X.< b) { x += h; sum += x*x * h; } المستطيلات الصحيحة "SRC \u003d" / images / c_loop_rectangles_right.png "Alt \u003d" (! Lang: طريقة وظيفة التكامل العددي
المستطيلات الصحيحة"> Рис. 3 Численное интегрирование функции методом!}
المستطيلات الصحيحة

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

Trapetes "SRC \u003d" / images / c_loop_integral_trapezium.png "Alt \u003d" (! Lang: وظيفة التكامل العددي حسب الطريقة
شبه منحرف"> Рис. 4 Численное интегрирование функции методом!}
شبه منحرف

التقريب بمساعدة المراجع هو في الواقع تقريب موصول من منحنيات الدرجة الأولى (AX + B). نربط النقاط على الرسم البياني باستخدام القطاعات. من الممكن تعقيد نقاط ربط النقاط غير حسب القطاعات، ولكن شرائح Parabola، ثم ستكون طريقة Simpson. إذا كنت لا تزال تعقد، فارجع إلى الاستيفاء المنشأ، ولكن هذا هو آخر محادثة طويلة جدا.

دعنا نعود إلى فروعنا. النظر في 4 دورات.

int i \u003d 0؛ بينما (i \u200b\u200b++< 3) { printf("%d ", i); } int i = 0; while (++i < 3) { printf("%d ", i); } int i = 0; do { printf("%d ", i); } while(i++ < 3); int i = 0; do { printf("%d ", i); } while(++i < 3);

إذا قمت بإجراء هذه الأمثلة، فسينظر إلى أن الدورات يتم تنفيذها من اثنين، ما يصل إلى أربع مرات. الأمر يستحق الاهتمام به، لأن التغيير غير الصحيح في Colle Counter يؤدي غالبا إلى أخطاء.

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

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

#تضمن. #تضمن. int الرئيسية () (int num \u003d 0؛ int max \u003d num؛ printf ("للإقلاع عن التدخين، أدخل 0 \\ n")؛ / * دورة لا حصر لها * / أثناء (1) (printf ("من فضلك، أدخل الرقم:")؛ SCANF ("٪ d"، & num)؛ / * حالة الخروج من الدورة * / إذا (num \u003d\u003d 0) (كسر؛) إذا (num\u003e max) (max \u003d num؛)) printf ("ماكس كان الرقم٪ D "، ماكس)؛ Getch ()؛)

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

إذا (عدد \u003d\u003d 0)

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

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

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

#تضمن. #تضمن. Int Main () (INT I \u003d 0؛ int positivecnt \u003d 0؛ المجموع float \u003d 0.0f؛ المدخلات تعويم؛ printf ("أدخل 10 أرقام \\ n")؛ بينما (أنا< 10) { i++; printf("%2d: ", i); scanf("%f", &input); if (input <= 0.0) { continue; } sum += input; positiveCnt++; } printf("Sum of %d positive numbers = %f", positiveCnt, sum); getch(); }

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

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

افعل (printf ("من فضلك، أدخل الرقم:")؛ Scanf ("٪ d"، & n)؛ إذا (n< 0 || n>100) (طباعة ("عدد سيئة، حاول مرة أخرى \\ n")؛ متابعة؛) آخر (استراحة؛)) أثناء (1)؛

دورة ل

حول المتنوع من الأكثر استخداما هو الدورة مع العداد لوبعد بناء الجملة

ل (<инициализация>; <условие продолжения>; <изменение счётчика>){ <тело цикла> }

على سبيل المثال، سحب مربعات الأرقام المئات الأولى.

INT I؛ ل (i \u003d 1؛ أنا< 101; i++) { printf("%d ", i*i); }

واحدة من النقاط الرائعة للدورة هي أنه لا يمكن أن تعمل ليس فقط مع الأعداد الصحيحة.

تعويم الأسطم ل (num \u003d 5.3f؛ num\u003e 0f؛ num - \u003d 0.2) (printf ("٪. 2F"، num)؛)

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

#تضمن. #تضمن. Int Main () (Sum Double \u003d 0.0؛ Double A \u003d 0.0؛ Double B \u003d 1.0؛ Double H \u003d 0.01؛ مزدوج X؛ ل (X \u003d A؛ X< b; x += h) { sum += x*x * h; } printf("%.3f", sum); getch(); }

دعونا نلقي نظرة على قطعة من التعليمات البرمجية

x ل (x \u003d a؛ x< b; x += h) { sum += x*x * h; }

يمكن تغييره لذلك

مزدوج x \u003d أ؛ ل (X.< b; x+=h) { sum += x*x*h; }

علاوة على ذلك، باستخدام المشغل فترة راحة، يمكنك إزالة الحالة والكتابة

x ل (x \u003d a ؛؛ x + \u003d h) (إذا كان (x\u003e b) (استراحة؛) sum + \u003d x * x * h؛)

مزدوج x \u003d أ؛ ل (؛؛) (إذا كان (x\u003e b) (كسر؛) sum + \u003d x * x * h؛ x + \u003d h؛)

بالإضافة إلى ذلك، باستخدام المشغل "،"، يمكنك نقل جزء من الإجراءات

x ل (x \u003d a؛ x< b; x += h, sum += x*x*h) ;

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

دعونا نقرر أي مهمة عملية أكثر تعقيدا. دعونا نكون لديك وظيفة f (x). العثور على كحد أقصى مشتقاته على القطاع. كيفية العثور على وظيفة مشتقة عدديا؟ من الواضح، بحكم التعريف). وظيفة المشتقة عند هذه النقطة هي الظل زاوية الميل.

f x '\u003d d x d y

خذ النقطة على المنحنى مع الإحداثيات (x؛ f (x))، التحولات لكل خطوة H للأمام، نحصل على نقطة (x + h، f (x + h))، ثم سيكون المشتق

d x d y \u003d f (x + h) - f x (x + h - x) \u003d tg α

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

D x d y \u003d f x - f (x - h) h \u003d tg β

خذ المتوسط \u200b\u200bمن هذين القيمتين، نحصل عليه

f (x + h) - f (x - h) 2h

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

#تضمن. #تضمن. #تضمن. INT CARMENT () () (مزدوج A \u003d 0؛ مزدوج B \u003d 3.0؛ مزدوج H \u003d 0.001؛ مزدوج H2 \u003d H * 2.0؛ مزدوج maxval \u003d a * sin (a)؛ double maxx \u003d a؛ double curval؛ مزدوج x؛ // نمر عبر المنطقة من A إلى B //، ونحن نبحث عن أقصى مشتق الأول // باستخدام وظيفة X * SIN (X) ل (X \u003d A؛ X< b; x += h) { curVal = ((x+h)*sin(x+h)-(x-h)*sin(x-h))/h2; if (curVal > maxval) (maxval \u003d curval؛ maxx \u003d x؛) printf ("أقصى قيمة \u003d٪ .3f في٪ .3f"، maxval، maxx)؛ getch ()؛ في

في الإخراج، يصدق البرنامج أقصى قيمة \u003d 1.391 عند 1.077

الحل العددي يعطي نفسه (بدقة الخطأ) النتائج كبرنامجنا.

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

النظر في مثال حيث يتم تضمين الدورات في بعضها البعض. سحب جدول الضرب.

#تضمن. #تضمن. #تضمن. INT الرئيسي () (INT I، J؛ // لكل أنا ل (i \u003d 1؛ أنا< 11; i++) { // Выводим строку из произведения i на j for (j = 1; j < 11; j++) { printf("%4d", i*j); } // После чего переходим на новую строку printf("\n"); } getch(); }

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

ل (i \u003d 1؛ أنا< 11; i++) { for (j = 1; j < 11; j++) { if (j > I) (كسر؛) printf ("٪ 4D"، I * J)؛ ) printf ("\\ n")؛ في

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

ل (i \u003d 1؛ أنا< 11; i++) { for (j = 1; j <= i; j++) { printf("%4d", i*j); } printf("\n"); }

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

ru-cyrl 18- البرنامج التعليمي Sypachev S.S. 1989-04-14. [البريد الإلكتروني المحمي] ستيبان سيباتشيف الطلاب.

لا يزال غير واضح؟ - كتابة الأسئلة على المربع