برمجة عمليات معالجة البيانات الحسابية الدورية. برمجة عمليات الحوسبة الدورية. مثال على استخدام العبارة for

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

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

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

5.4.1 المشغل ل

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

رأس الحلقةيحتوي هذا العامل (المعامل الأيمن) على متغير يسمى معامل(أو العداد) دورة، و قائمة القيمهذه المعلمة. يحدد عدد عناصر القائمة أيضًا عدد التكرارات - أثناء كل تكرار، تتلقى معلمة الحلقة القيمة التالية من القائمة المحددة في الرأس.

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

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

عند الانتهاء من التكرار الأخير، سيتم تنفيذ بيان البرنامج الذي يلي بيان الحلقة. في هذه الحالة، المتغير المستخدم كمعلمة للحلقة المكتملة يحتفظ بالقيمة التي كان لها في آخر واحد اكتمل فعلاتكرار[*]. لاحظ أن هذه القيمة لا تتطابق دائمًا مع القيمة الأخيرة من القائمة المحددة في رأس الحلقة، نظرًا لأن الخروج "المبكر" من الحلقة ممكن عند تشغيل عامل التشغيل استراحة المدرجة في جسم الحلقة.

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

توضح البرامج الثلاثة المبينة في الشكل 21 الاستخدامات المختلفة للمشغل ل .

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

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

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

الشكل 21 - أمثلة على برمجة الدورة ل


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

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

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

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

الشكل 22 - أمثلة على استخدام عوامل التشغيل استراحة و يكمل

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

5.4.3 المشغل بينما

على عكس المشغل ل ، رأس البيان بينما (في الترجمة - " الوداع") لا يحتوي على مؤشرات صريحة لعدد التكرارات - فهو يحتوي على التعبير المنطقي، والتي يتم حساب قيمتها تلقائيا قبل البدايةتنفيذ كل التكرار التالي[†]. طالما أن هذا التعبير صحيح، ستستمر الحلقة في التكرار؛ بمجرد أن يصبح التعبير خطأ بعد الانتهاء من التكرار التالي، لن يتم تنفيذ التكرار التالي للحلقة، وسيتلقى بيان البرنامج الذي يلي البيان التحكم بينما .

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

أمثلة على استخدام المشغل بينما يظهر الشكل 23. وترد ثلاثة خيارات لحل نفس المشكلة: كل برنامج من البرامج F0 , F1 و F2 تقوم بإرجاع فهرس العنصر الأول من المتجه المصدرالخامس تتجاوز القيمة المحددةض .

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

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

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

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

الشكل 23 - أمثلة على برمجة الدورة بينما

الهدف من العمل:

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

معلومات نظرية مختصرة

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

مشغل الحلقة for

الشكل الأساسي لبيان الحلقة هو:

لـ (expression_1; Expression_2; Expression_3)

المشغل أو العامل؛

أين Expression_1- القيمة الأولية لمعلمة الدورة؛

Expression_2– التحقق من شروط استمرار الدورة؛

Expression_3- تغيير معلمة الدورة (التصحيح)؛

المشغل أو العامل– عامل بسيط أو مركب في لغة C.

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

على سبيل المثال:ل (ك = 1؛ ك<5; k++)

printf("\n %d", k);

نتيجة لتنفيذ هذا العامل، تتم طباعة الأرقام من 1 إلى 4 في عمود.

يمكنك استخدام متغير من أي نوع أساسي كمعلمة حلقة.

على سبيل المثال:

ل(ch='a'; ch<=’z’; ch++) // Вывод на экран букв

printf("%c",ch); // الأبجدية اللاتينية

من الضروري التحكم بعناية في بنية الحلقات في البرنامج حتى لا ينتهي بك الأمر بحلقة لا نهاية لها (لا يوجد مخرج منها).

على سبيل المثال:

ل(ك=10; ك>6;ك++)

printf("حلقة لا نهاية لها\n");

حلقة الخروجقبل الموعد المحدد بالطرق التالية:

بشرط إضافي؛

باستخدام عوامل التشغيل التالية:

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

خروج (كثافة العمليات كود)؛- الخروج من البرنامج.

يعود؛- الخروج من الوظيفة؛

استخدام عامل القفز غير المشروط اذهب إلى<метка>;

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

يحظر نقل التحكم من الخارج إلى داخل الحلقة.

قد يكون أي من تعبيرات حلقة for الموجودة بين قوسين مفقودًا، ولكن الرمز ";". لا يمكن خفضها.

على سبيل المثال:

ل(؛ ط<3; i++)

يضع("مرحبا!");

عبارات while وdo–while الدورية

الشكل الأساسي للمشغل الدوري بينما:

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

المشغل أو العامل؛

أين المشغل أو العامل

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

الشكل الأساسي للمشغل افعل اثناء:

المشغل أو العامل؛

بينما(الحالة);

أين المشغل أو العاملعبارة بسيطة أو مركبة أو فارغة.

المشغل أو العامل يفعلبينما- مشغل الحلقة مع الشرط اللاحق، أي أولاً يتم تنفيذ البيان، ثم يتم التحقق من صحة الشرط. نظرًا لأنه في حلقة do-while يتم التحقق من الشرط في نهاية الحلقة، فسيتم تنفيذ الحلقة مرة واحدة على الأقل.

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

على سبيل المثال:

ل (ط = 1؛ ط<=300;i++) // Печать целых чисел, кратных 5

إذا استمر (i%5!=0)؛

printf("%5d",i);

أمثلة على الحلقات اللانهائية:

المشغل أو العامل؛

2) while(number_not_0) // صحيح دائمًا!

المشغل أو العامل؛

المشغل أو العامل؛

بينما(number_not_0); // دائما صحيح او صادق!

يجب أن يكون هناك شرط خروج بين مشغلي الحلقة.

حلقات متداخلة

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

ل(i=nn;i

ل(ي=mn;j

المشغل أو العامل؛

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

مثال:

ل(ط=1;ط<10;i++) // Печать таблицы умножения

ل(ي=1;ي<4;j++)

printf("\n %d*%d=%2d", i, j, i*j);

printf("\n");

مثال على استخدام العبارة for

احسب. يجب أن يقوم البرنامج بطباعة النتائج المتوسطة والنهائية.

قد يبدو نص البرنامج

#يشمل

#يشمل

يضع("أدخل N");

scanf("%d",&N);

ل(ق=0، ك=1؛ ك<=N; k++) // В заголовке цикла можно выпол-

( // خذ المهمة المزدوجة

printf(" \n k=%d s=%f ", k, s);

printf("\n ANSWER: s=%f, اضغط على أي مفتاح...",s);

خيارات للمهام الفردية

اكتب برنامجًا لتحديد جدول قيم الدوال فيفي نطاق تعسفي [ أ,ب] تغييرات الوسيطة Xبخطوات تعسفية ح. قيم أ، ب، حدخلت من لوحة المفاتيح. يجب أن يحتوي الجدول على الأعمدة التالية: رقم التسلسل، قيمة الوسيطة س، قيمة الدالة، رسالة حول زيادة أو تقليل الدالة، الفرق بين قيمتين متجاورتين للدالة.

تحديد القيم القصوى والدنيا للدالة.

1. أ=-ص; ب=ع; ح=0.4.

2. أ = 0.7؛ ب = 1.8؛ ح=0.1.

3. أ=-0.5؛ ب = 2.5؛ ح=0.2.

4. أ=-0.9؛ ب = 2.7؛ ح = 0.3.

5. أ=-2; ب = 0.8؛ ح=0.2.

6. أ=-1.9؛ ب = 2.7؛ ح = 0.3.

7.أ=-0.4p; ب = 0.4 ع؛ ح=0.5.

8. أ=-0.3ع؛ ب = 1.3 ع؛ ح = ص/10.

9. أ=-ص/2; ب = ص/2؛ ح=ع/10.

10. أ=-3؛ ب = 3؛ ح=0.5.

"برمجة عمليات الحوسبة الدورية"

الهدف من العمل:إتقان طرق تجميع الخوارزميات للعمليات الحسابية الدورية وتنظيم البرامج الدورية ذات البنية المعقدة.

الجزء النظري

4.1.1. الخوارزميات الدورية.

الدورة عبارة عن سلسلة من الإجراءات التي يمكن تنفيذها أكثر من مرة.

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

هناك 3 أنواع من الدورات:

حلقة بشرط مسبق؛

حلقة مع الشرط اللاحق؛

حلقة مع عداد (حلقة العد).

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

الحلقات المضادة هي فئة يجب فيها تكرار تنفيذ جسم الحلقة لعدد محدد مسبقًا من المرات.

تبدو المخططات الكتلية للخوارزميات الدورية كما يلي:

1. حلقة مع العداد.

2. حلقة بشرط مسبق. 3. حلقة مع الشرط اللاحق.

4.1.2 عوامل تشغيل الحلقة في لغة البرمجة C++.

في لغة C++، يوجد لكل نوع من أنواع الحلقات عامل تشغيل مطابق:

حلقة مثل while (بشرط مسبق)؛

قم بتكرار الأمر كما تفعل... while (مع الشرط اللاحق)؛

حلقة مثل (العد).

1. حلقة المشغل مثل الوقت

نموذج إدخال:

بينما (الحالة) بيان؛

حيث: (الشرط) - التعبير المنطقي؛

عامل - عامل أو جسم الحلقة المنفذة في حلقة.

إذا كان نص الحلقة عبارة مركبة، فيجب وضعها بين قوسين (...):

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

مجموعة من المشغلين

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

2. مشغل الحلقة مثل القيام...بينما

نموذج إدخال:

المشغل أو العامل؛

بينما(الحالة);

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

إذا كان جسم الحلقة عبارة مركبة، فبالنسبة للحلقة ذات الشرط المسبق، يجب وضعها بين قوسين (...):



مجموعة من المشغلين

بينما(الحالة);

3. مشغل الحلقة مثل

نموذج إدخال:

المشغل أو العامل؛

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

ط=0، س=0.5، ع=1، ق=0

B هو تعبير شرطي يتحقق من حالة استمرار الحلقة. على سبيل المثال:

C هو تعبير زيادة يحدد زيادة معلمة الحلقة، وإذا لزم الأمر، معلمات أخرى، ثم يتم كتابتها في القائمة. على سبيل المثال: x+=0.1,i++

4.1.3 مثال على تجميع خوارزمية وبرنامج بلغة C++ لعملية حوسبة دورية.

احسب قيمة التعبير:

ب– القيمة الأولية، يتم إدخال قيمتها من لوحة المفاتيح ولا تتغير؛

أ- التغييرات في النطاق في خطوات 1؛

ذ– النتيجة يتم عرض قيمها على الشاشة.

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

الرسم التخطيطي للخوارزمية لحل هذه المشكلة باستخدام دورة العد هو كما يلي:

#يشمل

#يشمل

#يشمل

printf("أدخل ب:");

scanf("%f",&b);

printf("y\n");

ل(أ=0;أ<=10;a++)

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

الرسم التخطيطي للخوارزمية لحل هذه المشكلة باستخدام حلقة بشرط مسبق هو كما يلي:

نص برنامج C++ المطابق لهذه الخوارزمية هو كما يلي:

#يشمل

#يشمل

#يشمل

printf("أدخل ب:");

scanf("%f",&b);

printf("y\n");

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

آخر printf("y غير موجود\n");

الرسم التخطيطي للخوارزمية لحل هذه المشكلة باستخدام حلقة ذات شرط لاحق هو كما يلي:

نص برنامج C++ المطابق لهذه الخوارزمية هو كما يلي:

#يشمل

#يشمل

#يشمل

printf("أدخل ب:");

scanf("%f",&b);

printf("y\n");

printf("%3d",a);

printf("%8.2f\n",y);

y=(a-b)/sqrt(a);

printf("%8.2f\n",y);

آخر printf("y غير موجود\n");

بينما (أ<=10);

الجزء العملي

4.2.1 متطلبات أداء العمل:

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

إضفاء الطابع الرسمي على مخرجات النتائج بحيث يتم إبراز قيم معلمة المتغير بشكل واضح ولكل قيمة محددة يتم عرض قيم النتيجة (ثلاثة متغيرات من العمود 2 من الجدول 3) بالشكل من الطاولة.

ترتيب العمل.

1. قم بإجراء تحليل للمهمة وصياغة بيان بالمشكلة.

2. إنشاء مخططات بيانية للخوارزميات.

3. إنشاء برنامج في C++. توفير إدخال البيانات الأولية من لوحة المفاتيح وإخراج النتائج إلى الشاشة.

4. التحقق من وظائف البرنامج على البيانات الأولية المختلفة.

5. تحليل النتائج التي تم الحصول عليها.

خيارات للمهام الفردية.

يتم تحديد خيارات الواجبات الفردية من الجدول 4 وفقًا لرقم الطالب في قائمة المجموعة في مجلة المعلم.

الجدول 4. خيارات المهام الفردية

لا. المتغير المتغير أنواع الدورات
10 ≥ أ 10,Δ أ = 1
-4 ≥ د ≥ 4, Δ د = 0.5
-6 ≥ س ≥ 3, Δ س = 0.5
0 ≥ ب ≥ 3 0, Δ ب = 1.5 1. بشرط مسبق، 2. قابل للعد
-15 ≥ ي ≥ 1 0, Δ ي = 0.5 1. بشرط مسبق، 2. بشرط لاحق
5 ≥ ه ≥ 35،Δ ه = 2 1. معدودة، 2. مع شرط لاحق
-5 ≥ م ≥ 15،Δ م = 1 1. بشرط مسبق، 2. قابل للعد
1 ≥ ج ≥ 70،Δ ج = 3 1. بشرط مسبق، 2. بشرط لاحق
1.5 ≥ ج ≥ 15،Δ ج = 0.5 1. معدودة، 2. مع شرط لاحق
-8 ≥ ب ≥ 28،Δ ب = 2 1. بشرط مسبق، 2. قابل للعد
-4.5 ≥ س ≥ 11.5،Δ س = 0.5 1. بشرط مسبق، 2. بشرط لاحق
-7 ≥ ك ≥ 2،Δ ك = 0.3 1. معدودة، 2. مع شرط لاحق
-1 ≥ م ≥ 21،Δ م = 1 1. بشرط مسبق، 2. قابل للعد
-2 ≥ ه ≥ 34،Δ ه = 2 1. بشرط مسبق، 2. بشرط لاحق
-11 ≥ ج ≥ 23،Δ ج = 2 1. معدودة، 2. مع شرط لاحق
-13 ≥ ف 50،Δ ع = 3 1. بشرط مسبق، 2. قابل للعد
3.3 ≥ ب ≥ 9.3،Δ ب = 0.3 1. بشرط مسبق، 2. بشرط لاحق
3.5 ≥ ص ≥ 12.3،Δ ص = 0.4 1. معدودة، 2. مع شرط لاحق
-7.5 ≥ أ ≥ 5.7،Δ أ = 0.6 1. بشرط مسبق، 2. قابل للعد
-1.5 ≥ ح ≥ 1.2،Δ ح = 0.1 1. بشرط مسبق، 2. بشرط لاحق
0 ≥ ح ≥ 10،Δ ح=0.5 1. معدودة، 2. مع شرط لاحق
-15 ≥ ب ≥ 15, Δ ب =2 1. بشرط مسبق، 2. قابل للعد
-7 ≥ لتر ​​≥ 3, Δ ل = 0.5 1. بشرط مسبق، 2. بشرط لاحق
-5.5 ≥ ب ≥ 6.5, Δ ب = 0.5 1. معدودة، 2. مع شرط لاحق
1 ≥ ك ≥ 9, Δ ك = 0.4 1. بشرط مسبق، 2. قابل للعد
0 ≥ ب ≥ 6.9,Δ ب = 0.3 1. بشرط مسبق، 2. بشرط لاحق
-3 ≥ الخامس ≥ 9،Δ الخامس = 0.6 1. معدودة، 2. مع شرط لاحق
-2 ≥ ع ≥ 2.6،Δ ع = 0.2 1. بشرط مسبق، 2. قابل للعد

4.3 أسئلة الاختبار والمهام العملية:

1. كيف تعمل عبارة while؟

2. كيف يعمل do... while البيان؟

3. كيف يعمل بيان for؟

4. ضع خطًا تحت العبارات الموجودة في البرنامج والتي تشكل دورة.

5. ما الفرق بين عبارات while و do... while؟

6. استبدال مشغل حلقة واحد في البرنامج بآخر.

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

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

ما هي الحلقة في البرمجة؟

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

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

على سبيل المثال، دورة الماء في الطبيعة هي دورة طبيعية في حياتنا.

الآن دعونا نلقي نظرة على القواعد والمفاهيم العامة المستخدمة في الدورات الحسابية.

مراحل العملية الدورية

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

1. طرق بناء العمليات الحسابية الدورية في البرامج.

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

مقدمة

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

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

البرامج، تنفيذ عملية دورية تسمى البرامج الدورية.

يمكن تقسيم تنظيم الدورة إلى المراحل التالية:

إعداد (تهيئة) الدورة (AND)؛

إجراء حسابات الحلقة (جسم الحلقة) (T)؛

تعديل المعلمات (م)؛

التحقق من حالة نهاية الدورة (U).

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


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

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

هيئة الحلقة- هذا قسم متكرر من البرنامج.

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

منظر عام للحلقة n مرات

بشكل عام، يتم كتابة الحلقة n مرات مثل هذا:

nc عدد مرات التكرار

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

عدد التكرارات هو عدد صحيح تعسفي.

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

منظر عام للدورة حتى الآن

بشكل عام، الدورة مكتوبة حاليًا على النحو التالي:

لا يوجد شرط حتى الآن

| جسم الحلقة (تسلسل الأوامر)

عند تنفيذ دورة، يكرر الكمبيوتر الإجراءات التالية:

أ) يتحقق من الشرط المكتوب بعد الكلمة الوظيفية بينما؛

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

منظر عام للدورة

nc لأني من i1 إلى i2

| جسم الحلقة (تسلسل الأوامر)

هنا i هو اسم قيمة نوع عدد صحيح، i1، i2 عبارة عن أعداد صحيحة عشوائية أو تعبيرات ذات قيم عددية. يتم تنفيذ جسم الحلقة بشكل تسلسلي لـ i = i1، i = i1 + 1، i1 + 2، ...i = i2.

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

حلقة ن مرات وحلقة في حين

يتم تنسيق الحلقات n مرات وحتى الآن بنفس الطريقة تقريبًا في اللغة الخوارزمية. وهذا ليس مفاجئًا، لأن كلا الأمرين يحددان حلقة - تسلسل متكرر للأوامر. تشير كلمات الخدمة nts وkts إلى أنه يتم تنفيذ حلقة، ويحدد رأس الحلقة الآلية المحددة لتنفيذها.

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

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

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


رسم بياني 1. هيكل نموذجي لبرنامج التحكم مع حلقة لا نهائية.

تتمتع MCPs ببنية متنوعة، ويجب تقييم مدى تعقيدها وفقًا لمعايير خاصة. اقترح V. V. Lipaev معيارًا مناسبًا وموضوعيًا لتعقيد وحدات البرامج، وهو: عدد المسارات وطولها الإجمالي في الرسم البياني للتحكم في الوحدة. تؤخذ في الاعتبار فقط البيانات الشرطية والاختيارية. ومع ذلك، من الواضح أن هذا المعيار لا يكفي لـ MCP ذو الذاكرة الثابتة، لأنه عند تحليل MCP من الضروري تذكر قيم جميع المتغيرات الثابتة التي تم تعيينها في الدورة السابقة. بالإضافة إلى ذلك، لا توجد توصيات لتوحيد الخوارزميات والبرامج، باستثناء البرمجة المهيكلة المعروفة منذ زمن طويل في لغات البرمجة شائعة الاستخدام مثل C وPascal. تقترح هذه المقالة سد هذه الثغرات فيما يتعلق بـ MCP.

2. أجزاء من وحدات البرنامج الدوري

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

تم اقتراح طريقة الأجزاء المستقلة لتجميع بنية الوحدات التي تنفذ جداول القرار. في هذه الحالة، يعتبر الجزء الذي يمكن إدراجه في أي مكان في تسلسل أجزاء الوحدة مستقلاً. يرجع استقلال موقع هذا الجزء إلى حقيقة أن البيانات التي تم تحليلها فيه لا يتم إنشاؤها بالتسلسل المحدد للأجزاء، ولا يتم تحليل البيانات التي تم إنشاؤها في الجزء المستقل في هذا التسلسل من الأجزاء. لذلك، يمكن تنفيذ الأجزاء المستقلة بالتوازي (المتوازي الزائف). في التين. يوضح الشكل 2 خيارات التنفيذ الممكنة لوحدة تحتوي على جزأين مستقلين. في الخيارين "أ" و"ب"، يتم إعادة ترتيب الأجزاء دون تشويه جوهر البرنامج؛ في الخيار "ج"، يتم تنفيذ الأجزاء بالتوازي.


الصورة 2. خيارات لتنفيذ وحدة مع أجزاء مستقلة:

أ) و ب) - التنفيذ المتسلسل،

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

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

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

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




قمة