زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه

هنگام حل اکثریت قریب به اتفاق وظایف (از جمله بسیار بدون عارضه) در برنامه، تقریبا غیرممکن است که تمام عملیات هایی را که باید اجرا شود مشخص کنید. در حقیقت، اجازه دهید آن را محاسبه کنید تا مجموع اعضای اولین N عضو سری هارمونیک را محاسبه کنید:

y \u003d 1 + 1/2 + 1/3 + ... + 1 / n

بدیهی است، با استفاده از تنها انواع اپراتورهای مورد بحث در بالا، شما می توانید یک برنامه را فقط برای یک مقدار ثابت N ایجاد کنید. به عنوان مثال، با n \u003d 5، محاسبات مورد نیاز را می توان با استفاده از اپراتور تخصیص فرم تنظیم کرد:

Y: \u003d 1 + 1/2 + 1/3 + 1/4 + 1/5

اگر مقدار n ثبت نشده باشد، داده های منبع وارد شده در طول اجرای برنامه (و حتی ثابت ثابت شده در برنامه)، اپراتور تخصیص مشابه مجاز نیست. برای ظاهر فرم y: \u003d 1 + 1/2 + 1/3 + ... + 1 / n در زبان های برنامه نویسی نامعتبر است.

برای از بین بردن مشکلات در حال ظهور خدمت می کنند اپراتورهای چرخه. آنها به شما اجازه می دهند که اجرای بخش های فردی برنامه را تکرار کنید. شما می توانید چهار را انتخاب کنید perator Cyklaارائه در یک فرم خاص در تمام زبان های برنامه نویسی: اپراتور چرخه ریاضی ساده (چرخه با یک پارامتر در مرحله 1)، اپراتور چرخه محاسباتی پیچیده (چرخه با یک گام دلخواه)، اپراتور چرخه تکراری با عملکردی, اپراتور چرخه تکراری با postcondition.

یک اپراتور محاسباتی ساده از چرخه پاسکال (چرخه با پارامتر)

اجازه دهید ما را به کار فوق برسیم تا محاسبه مقدار اولین اعضای سری N سری هارمونیک، قوانین آن را نمی توان به عنوان یک عبارت محاسباتی مشخص کرد، اگر مقدار n پیش از آن ثابت نشده باشد.

در حقیقت، محاسبه این مقدار را می توان با توجه به یک الگوریتم بسیار ساده و جمع و جور انجام داد: قبل از تنظیم Y \u003d 0 (با استفاده از اپراتور Y: \u003d \u003d 0)، و سپس انجام اپراتور تخصیص Y: \u003d Y + 1 / من برای مقادیر متوالی I \u003d 1، 2، ...، n. با هر اجرای بعدی این اپراتور، اصطلاح بعدی به مقدار فعلی y اضافه می شود. همانطور که در این مورد دیده می شود، فرآیند محاسبات Cyclic خواهد بود: اپراتور y: \u003d y + 1 / i باید چندین بار انجام شود، به عنوان مثال cyclically، به عنوان مقادیر مختلف من.

این مثال از یک فرایند محاسباتی چرخه ای بسیار معمول است؛ ویژگی های مشخصه آن این است

  • تعداد تکرار چرخه به آغاز اعدام آن شناخته شده است (در این مورد برابر با ارزش N است، که فرض بر این است که در این زمان داده می شود)؛
  • مدیریت چرخه با استفاده از یک متغیر انجام می شود نوع ترتیبکه در این فرایند چرخه ای، مقادیر متوالی از مقادیر مشخص شده به مقادیر محدود مشخص شده (در مورد ما، این متغیر عدد صحیح است که مقادیر متوالی را از 1 تا N دریافت می کنم).

برای یک کار جمع و جور از این نوع فرآیندهای محاسباتی و خدمت اپراتور چرخه با پارامتر. نوع زیر این اپراتور در پاسکال اغلب استفاده می شود:

برای v: \u003d e1 به E2 انجام S،

جایی که برای (برای)، به. (افزایش به) و انجام دادن. (انجام، انجام) - کلمات خدمات V. - متغیر نوع دنباله، به نام پارامتر چرخه، e1 و E2 - عبارات همان نوع به عنوان پارامتر چرخه، S. - اپراتور، که بارها و بارها در یک چرخه انجام می شود، یک بدن چرخه نامیده می شود.

توجه داشته باشید که در پاسکال بعد از انجام دادن. اگر شما نیاز به انجام چندین اقدام دارید باید یک اپراتور وجود داشته باشد، آنها باید با وارد کردن به براکت های اپراتور به یک اپراتور یک جزء ترکیب شوند.

این اپراتور چرخه پاسکال، اختصاص داده شده به پارامتر چرخه V مقادیر متوالی از مقدار اولیه برابر با مقدار بیان E1، به مقدار نهایی برابر با ارزش بیان E2، I.E. هر تکرار توسط اپراتور تخصیص انجام می شود. v: \u003d SACK (V)، و اجرای اپراتور S هر بار که مقدار پارامتر چرخه V. در این مورد، مقادیر عبارات E1 و E2 یک بار محاسبه می شود، زمانی که اپراتور چرخه ورودی است و مقدار پارامتر چرخه V نباید به عنوان یک نتیجه از اجرای اپراتور S تغییر یابد. اگر مقدار نهایی مشخص شده کمتر از مقدار اولیه باشد (آنچه مجاز است)، اپراتور S راضی نیست.

در پاسکال، اعتقاد بر این است که زمانی که اپراتور چرخه انجام می شود، مقدار پارامتر چرخه تعریف نشده است.

استفاده كردن اپراتور چرخه با پارامتر الگوریتم برای محاسبه مجموع N اعضای اولین سری هارمونیک می تواند به شرح زیر باشد:

یک مثال از کد کد برای جمع آوری اولین اعضای سری از سری هارمونیک

readln (n)؛
y: \u003d 0؛
برای من: \u003d 1 به n do y: \u003d y + 1 / i؛

در بعضی موارد، مناسب است که پارامتر چرخه پاسکال پیگیری، اما افزایش و کاهش ارزش ها را انجام دهد. برای چنین مواردی در پاسکال، اپراتور چرخه با پارامتر زیر ارائه شده است:

برای v: \u003d e1 Downto E2،

جایی که پایین (کاهش به) - کلمه رسمی، و تمام کلمات و عبارات دیگر معنای قبلی دارند. تغییر پارامتر چرخه از مقدار بیشتر به کوچکتر در هنگام اختصاص V: \u003d Pred (V). توجه کنید که معنای اولیه ممکن است کمتر از ارزش نهایی باشد. در این مورد، اپراتور S هرگز تکمیل نشده است. مقدار پارامتر چرخه پس از اتمام اجرای چنین چرخه نیز نامشخص است.

باید برای هر دو گزینه برای ضبط به یاد داشته باشید چرخه با پارامتر نمایشگاه: اگر مقادیر اولیه و نهایی برابر باشد، سپس بدن چرخه (بیانیه S) یک بار اجرا خواهد شد.

توجه داشته باشید همان چیزی که پارامتر چرخه این ممکن است در بدن چرخه استفاده نشود، به طوری که هدف اصلی آن کنترل تعداد تکرار چرخه است. به عنوان مثال، مقدار y \u003d x n، جایی که n\u003e \u003d 0 یک عدد صحیح است، می توان آن را با توجه به الگوریتم زیر محاسبه کرد: قبل از قرار دادن y \u003d 1، و سپس n بار برای ضرب این مقدار به X:

برنامه سیکل نمونه سیکلا

readln (n)؛
readln (x)؛
y: \u003d 1؛
برای من: \u003d 1 به N انجام y: \u003d y * x؛

همانطور که دیده می شود، در اینجا، پارامتر چرخه ای که من تنها به طوری که بدن چرخه (اپراتور y: \u003d y * x) تعداد مورد نظر را انجام داد.

اپراتور محاسباتی Pascal Cycle با یک گام دلخواه

عوارض طبیعی چرخه محاسباتی ساده پاسکال چرخه ای است که پارامتر چرخه به 1 تغییر نمی کند، بلکه با ارزش دلخواه - پیاز افزایش. در همان زمان، در روند اجرای چرخه، گام بر یک قانون مشخص متفاوت است. اپراتورهای استاندارد برای اجرای چنین چرخه ای در قلعه هستند، به زبان های دیگر آنها باید از ساده ترین چرخه ریاضی سازماندهی شوند.

اپراتورهای تکراری چرخه پاسکال

چرخه های تکراری از چرخه ها با پارامتر متفاوت هستند که در پیشبرد تعداد تکرارها شناخته شده نیستند.

اجازه دهید ما برای قارچ برویم و زمانی که سبد پر شده، به خانه برگردیم. تمام قارچ ها به 2 دسته تقسیم می شوند:

  • سازمان دیده بان، آیا محل در سبد وجود دارد، و سپس قارچ ها را شکستن اگر آنها را می توان در سبد قرار داد. (هر چند، در زندگی چنین قارچ من مجبور به ملاقات نیست)
  • اول، قارچ ها شکسته می شوند، و سپس آنها فکر می کنند که چگونه آنها را در سبد قرار داده است.

از اینجا، دو گزینه برای اجرای چرخه های تکراری به دست می آید:
با پیش شرط و با پست باند.

در چرخه با پیش شرط، شرط اول بررسی می شود، و سپس یک گام گرفته شده است. قارچ با یک سبد کامل یا تقریبا کامل همراه است. در چرخه با postcondition - مرحله اول، و سپس بررسی کنید. به عنوان یک قارچ طبیعی، این یکی سبد کامل یا کمی شلوغ را به ارمغان می آورد.

چه الگوریتم را انتخاب کنید؟ این بستگی به وظیفه خاص دارد.

اگر، پس از انجام یک گام بدون چک کردن، شما می توانید به گودال سقوط، و سپس بررسی بهتر در ابتدا (به عنوان یک کور با یک جادو). خوب، و اگر گام بدون چک کردن شما ترسید، شما می توانید آن را تا زمانی که مرحله تکمیل شده است، به تعویق بیندازید.

شما همچنین نیاز به تجزیه و تحلیل رویداد ما انتظار می رود. اگر قبل از مرحله اول اتفاق می افتد، پس شما نیاز به یک چرخه با پیش شرط دارید. و اگر این رویداد قبل از اولین مرحله اتفاق نمی افتد، پس شما نیاز به یک چرخه با postcondition دارید.

چرخه اپراتور پاسکال با Postband

ما اکنون کار ریاضی را در نظر می گیریم. اجازه دهید ما نیاز به محاسبه مجموع اعضای اولین سری از سری هارمونیک شرط بندی شرایط 1 / I\u003e \u003d E، که در آن 0< e<1, а i=1,2,3…...Эту задачу можно решить по следующему алгоритму: положить предварительно y=0 и i=0, а затем в цикле увеличивать i на 1, к значению y добавлять очередное слагаемое 1/ i до тех пор, пока текущее значение 1/ i впервые окажется больше заданного значения 0< e<1.

بدیهی است، تعداد تکرارهای این چرخه در پیشبرد شناخته شده نیست. در این نوع موارد، ما فقط می توانیم یک شرط را فرموله کنیم، زمانی که اجرای آن فرآیند اضافه کردن به مجموع جزء بعدی باید تکمیل شود.

برای مشخص کردن چنین فرآیندهای محاسباتی، اپراتور چرخه پاسکال را با پست ارائه می دهد. این اپراتور فرم دارد:

تکرار S1؛ S2؛ ...؛ SI تا b،

جایی که تکرار. (تکرار) و تا زمان (بالا) - کلمات خدمات، از طریق si از طریق هر اپراتور پاسکال و از طریق که دربیان منطقی.

هنگامی که این اپراتور چرخه اجرا می شود، دنباله ای از اپراتورها بین کلمات تکرار می شود و تا زمانی که یک یا چند بار اجرا می شود. این فرایند زمانی تکمیل می شود، پس از اجرای دیگری از یک توالی خاص از اپراتورها، یک عبارت منطقی در پذیرش (برای اولین بار) ارزش واقعی را قبول می کند. بنابراین، با استفاده از یک عبارت منطقی، شرایط برای تکمیل اجرای اپراتور چرخه تنظیم شده است. از آنجایی که در این مورد تأیید شرایط پس از توالی اپراتورها (بدنه چرخه) انجام می شود، این اپراتور چرخه اپراتور چرخه ای با یک پست باند نامیده می شود.

با استفاده از این نوع اپراتور، اپراتور چرخه پاسکال، وظیفه جمع کردن اولین اعضای سری هارمونیک که شرایط داده شده را برآورده می کند، می تواند به صورت زیر اجرا شود:

readln (e)؛
من: \u003d 0؛
y: \u003d 0؛
تکرار.
من: \u003d i + 1؛
y: \u003d y + 1 / i؛
تا 1 / I

توجه داشته باشید که اپراتور با یکپارچگی عمومی تر از اپراتور چرخه با پارامتر است - هر فرآیند چرخه ای که با استفاده از یک چرخه با یک پارامتر مشخص شده است، می تواند به عنوان یک چرخه با انفجار نشان داده شود. بیانیه مخالف نادرست است به عنوان مثال، وظیفه جمع کردن اعضای نخستین سری N سری هارمونیک، که قبلا مورد بحث قرار گرفت، با اپراتور چرخه با این پست به نظر می رسد:

مثال کد اپراتور چرخه با پاسکال

readln (n)؛
من: \u003d 0؛
y: \u003d 0؛
تکرار.
من: \u003d i + 1؛
y: \u003d y + 1 / i؛
تا زمانی که من\u003e n؛

اپراتور چرخه پاسکال با پیش شرط

در مورد اپراتور چرخه پاسکال با postcalion، دنباله اپراتورها عمدا حداقل یک بار انجام می شود. در همین حال، اغلب چنین فرایندهای چرخه ای وجود دارد که تعداد تکرارهای چرخه نیز پیش از آن ناشناخته است، اما در برخی از مقادیر اولیه داده ها، اقدامات ارائه شده در چرخه نباید انجام شود، و حتی اجرای یک بار این اقدامات می تواند منجر به نتایج نادرست یا نامعلوم شود.

به عنوان مثال، به عنوان مثال، با توجه به شماره واقعی M. مورد نیاز است برای پیدا کردن کوچکترین کل تعداد کل غیر منفی K، که در آن 3 k\u003e m. این مشکل را می توان با توجه به الگوریتم زیر حل کرد: قبل از قرار دادن y \u003d 1 و k \u003d 0؛ سپس، در چرخه، مقدار y به 3 و افزایش مقدار k 1 تا زمانی که مقدار فعلی y برای اولین بار بیشتر از مقدار M. در نگاه اول، ممکن است استفاده از اپراتور از چرخه با postcal.

مثال کد اپراتور چرخه با پاسکال

y: \u003d 1؛ k: \u003d 0؛
تکرار.
y: \u003d y * 3؛
k: \u003d k + 1؛
تا y\u003e m؛

با این حال، آسان است که مطمئن شوید<1 будет получен неправильный результат k=1, тогда как должно быть получено k=0: в этом случае предварительно сформированное значение k=0 является окончательным результатом и действия, предусмотренные в цикле, выполняться не должны.

برای مشخص کردن این نوع فرآیندهای محاسباتی، زمانی که تعداد تکرارهای چرخه در پیشبرد شناخته شده نیست و اقدامات ارائه شده در چرخه ممکن است به طور کامل انجام نشود و اپراتور چرخه با پیش شرط انجام شود. این اپراتور چرخه دارای نوع زیر در پاسکال است:

جایی که در حالی که (تا زمان)، انجام دادن. (انجام، انجام) - کلمات خدمات که در - بیان منطقی S. - اپراتور. در اینجا اپراتور S صفر یا بیشتر بار، اما قبل از هر اجرای بعدی آن را با مقدار بیان B محاسبه می شود، و اپراتور S تنها زمانی که مقدار بیان در درست انجام می شود. اپراتور چرخه زمانی اجرا می شود که بیان در اولین بار اشتباه را دریافت می کند. اگر این مقدار بیان در دریافت زمانی باشد که محاسبه می شود، اپراتور S تکمیل نخواهد شد.

در مشکل مورد بررسی، مقدار صحیح K در هر معنی m می تواند به صورت زیر به دست آید:

مثال کد اپراتور Pascal Cycle با Pascal

y: \u003d 1؛ k: \u003d 0؛
در حالی که شروع می کنید
y: \u003d y * 3؛
k: \u003d k + 1؛
پایان؛

اپراتور چرخه پاسکال با بالا می تواند همه کاره ترین ها را در نظر بگیرد - با استفاده از چنین اپراتورها، فرایندهای چرخه ای تعیین شده توسط اپراتورهای چرخه با پارامتر و Postcondition می تواند مشخص شود.

توجه داشته باشید تفاوت ها و ویژگی های سبک کار خوب با اپراتورهای چرخه ای مورد بحث قرار گرفت.

چرخه با در حالی که (تا زمانی که شرایط واقعا) چرخه با پست تکرار (به شرایط حقیقی)
  • قبل از شروع چرخه، تنظیمات اولیه متغیرهایی که شرایط چرخه را کنترل می کنند باید برای ورود صحیح به چرخه ساخته شوند
  • در بدن چرخه، اپراتورها باید حضور داشته باشند، متغیرها را تغییر دهند تا چرخه پس از تعداد مشخصی از تکرارها تکمیل شود
  • چرخه کار می کند در حالی که شرایط درست است (در حالی که درست است)
  • چرخه کار می کند در حالی که وضعیت نادرست است (تا زمانی که نادرست باشد
  • چرخه تکمیل می شود زمانی که وضعیت اشتباه می شود (به اشتباه)
  • چرخه تکمیل می شود زمانی که وضعیت درست می شود (تا درست است)
  • در صورتی که مقدار اولیه شرایط را وارد کنید، چرخه ممکن است اجرا شود
  • این چرخه قطعا حداقل یک بار تکمیل خواهد شد.
  • اگر بدن چرخه نیاز به بیش از یک اپراتور داشته باشد، لازم است از یک اپراتور کامپوزیت استفاده کنید
  • صرف نظر از تعداد اپراتورها در بدن چرخه، استفاده از اپراتور کامپوزیت مورد نیاز نیست
چرخه با متر (با پارامتر) برای
  • نصب اولیه متغیر چرخه شمارنده قبل از عنوان لازم نیست
  • تغییر در چرخه بدن از مقادیر متغیرها ایستاده در عنوان مجاز نیست
  • تعداد تکرارهای چرخه به طور مداوم و با دقت تعیین شده توسط مقادیر مرزهای پایین تر و بالاتر و مرحله افزایش است
  • دوره عادی چرخه را می توان توسط اپراتور GOTO آشفته و یا شکستن و ادامه مراحل
  • چرخه ممکن است تکمیل شود، اگر مرحله چرخه مقدار شمارنده را از حد پایین در جهت مرز مخالف تغییر دهید

اپراتور که در چرخه انجام می شود می تواند یک چرخه باشد. این مربوط به تمام انواع چرخه ها است. در نتیجه، ما دریافت می کنیم چرخه های توزیع شده. مکانیسم عملکردهای چرخه های توزیع شده راحت تر به عنوان مثال از دوره های توزیع شده با پارامتر، راحت تر است. اجازه دهید ما نیاز به توصیف کار ساعت های الکترونیکی، از لحظه ای از زمان 0 ساعت، 0 دقیقه، 0 ثانیه. مقدار دقیقه تنها برابر با 1 تنها پس از ثانیه "اجرا" تمام مقادیر متوالی از 0 تا 59 است. ساعت مقدار آن را به 1 تغییر می دهد تنها پس از دقیقه "اجرای" تمام مقادیر متوالی از 0 تا 59 را تغییر دهید. بنابراین، خروجی تمام وقت زمان از ابتدای روز تا پایان روز می تواند توسط بخش زیر برنامه ارائه شود:

برای H: \u003d 0 تا 23 انجام دهید
برای m: \u003d 0 تا 59 انجام دهید
برای S: \u003d 0 تا 59 انجام دهید
Writeln (H، ":"، M، ":"، S)؛

برای راحتی اجرای ساختارهای چرخه ای در پاسکال در آخرین نسخه های زبان، اپراتورها معرفی شده اند زنگ تفريح و ادامه هید.در داخل چرخه استفاده می شود. آنها امکان استفاده از چرخه ها را گسترش می دهند و ساختار برنامه را بهبود می بخشد.

در فرآیند انجام یک چرخه چرخه، ممکن است شرایط اضافی برای تکمیل چرخه ای که نیاز به اتمام چرخه دارد، رخ دهد. در این مورد، چرخه ممکن است توسط اپراتور شکستن خاتمه یابد.

در طول اجرای چرخه، یک بیماری ممکن است رخ دهد که لازم است تمام یا برخی اقدامات ارائه شده در چرخه را بدون توقف عملیات چرخه به طور کامل از بین ببرد. برای انجام این کار، از اپراتور ادامه استفاده کنید، که کنترل را به نقطه برنامه انتقال می دهد که در آن شرایط ادامه یا توقف چرخه بررسی می شود.

سلام، خوانندگان عزیز! در اینجا ما با شما هستیم و به مطالعه چرخه ها نزدیک می شویم. چرخه در پاسکال. چه چیزی است؟ چگونه از آن استفاده کنید؟ برای چه چیزی مورد نیاز است؟ این امروز برای این سوالات است و من پاسخ خواهم داد.
اگر شما بخوانید، می دانید که سه نوع الگوریتم وجود دارد: خطی، شاخه و چرخه. ما قبلا می دانیم چگونه الگوریتم ها را در پاسکال پیاده سازی کنیم. ما به مطالعه آخرین نوع الگوریتم ها ادامه خواهیم داد.
در پاسکال، همانطور که در اکثر زبان های برنامه نویسی، سه نوع ساختارهای چرخه ای وجود دارد.

هر چرخه شامل بدن و هدر است. بدن چرخه مجموعه ای از اپراتورهای تکراری است و این شرایط یک عبارت منطقی است، بسته به نتیجه که چرخه تکرار می شود.

یک کار را انجام دهید که ما با استفاده از انواع مختلف چرخه ها حل خواهیم کرد.

وظیفه 1 نمایش تمام اعداد از 1 به شماره وارد شده از صفحه کلید.

در حالی که یا چرخه با پیش شرط

همانطور که احتمالا قبلا از نام آن را درک کرده اید، در حالی که - این چرخه ای است که در آن شرایط به بدن روبرو می شود. و بدن چرخه انجام می شود اگر و تنها زمانی که شرایط درست است، واقعی.؛ به محض این که وضعیت می شود اشتباه

در حالی که یک فرمت دارد:

در حالی که < условие> انجام دادن.<оператор 1>؛ (در حالی که ... ....)

این چرخه فقط برای یک اپراتور مناسب است، اگر می خواهید از چندین اپراتور در کد خود استفاده کنید، باید آنها را به براکت های اپراتور وارد کنید - شروع.و پایان؛.

راه حل مشکل.

برنامه example_while؛ var i، n: integer؛ (اعلام متغیرها) شروع به من: \u003d 1؛ (اختصاص ارزش 1) readln (n)؛ (آخرین شماره را بخوانید) در حالی که من<= N do {Как только i станет больше N, цикл прекратится (можно было бы написать просто <, но пришлось бы добавлять 1 к N) } begin {Открываем операторные скобки} write(i, " "); {Выводим i} Inc(i); {увеличиваем i на один.} end; { закрываем скобки } end.

تکرار یا چرخه با postcondition

تکرار. - کاملا مخالف در حالی که. تکرار. - این چرخه ای است که در آن شرایط پس از بدن ایستاده است. و سپس انجام می شود و تنها زمانی که نتیجه نتیجه است اشتباه؛ به محض این که بیان منطقی تبدیل شود درست است، واقعی.اجرای چرخه متوقف می شود.

تکرار یک فرمت دارد:

تکرار. ( تکرار … )
<оператор 1>;
< оператор 2>;

تا زمان (قبل از…) <условие>

شروع. و پایان. لازم نیست.

راه حل مشکل.

برنامه example_repeat؛ var i، n: integer؛ (اعلام متغیرها) شروع I: \u003d 1؛ (اختصاص ارزش 1) readln (n)؛ (آخرین شماره را بخوانید) تکرار (پس از تکرار لازم نیست شروع و پایان) نوشتن (من، ")؛ (خروجی i) inc (i)؛ (افزایش من به یک.) تا زمانی که من \u003d n + 1؛ (به عنوان مثال، I \u003d 11 و n \u003d 10. چرخه متوقف خواهد شد، بنابراین شرایط درست شده است.) پایان

برای یا چرخه با یک پارامتر

برای - این یک چرخه ای است که در آن بدن برای تعداد مشخصی از زمان انجام می شود.

دو نوع ضبط این چرخه وجود دارد:

فرم اول

برای<счетчик1> := <значение1> به.<конечное_значение> انجام دادن.<оператор1>;

<счетчик1> افزایش خواهد یافت 1.

<значение1> - این مقدار اولیه شمارنده است. ممکن است یک متغیر یا عدد باشد.
<конечное_значение> : به زودی به عنوان ارزش<счетчик1> بیشتر می شود<конечное_значение>

اگر می خواهید چندین اپراتور را در بدن چرخه بنویسید، ما استفاده می کنیم شروع. و پایان..

و<счетчик1>، من.<конечное_значение>، من.<значение1> - متغیرها کل نوع را تایپ کنید

اغلب متغیر من به عنوان یک شمارنده استفاده می شود.

فرم دوم

برای<счетчик2> := <значение2> پایین<конечное_значение> انجام دادن.<оператор1>;

پس از هر مقدار ادراری<счетчик2> 1 را کاهش می دهد.

<значение2> - این مقدار اولیه شمارنده است.
<конечное_значение> : به زودی به عنوان ارزش<счетчик2> کمتر تبدیل خواهد شد<конечное_значение>اجرای چرخه متوقف خواهد شد.

دو یادداشت مهم:

  1. چرخه تکرار می شود تا مقدار مقدار متر در بخش [مقدار؛ finite_dation].
  2. مقدار شمارنده را در داخل بدن تغییر دهید غیر ممکن است! این همان چیزی است که کامپایلر نمایش داده می شود:

راه حل مشکل:

برنامه example_for؛ var i، n: integer؛ شروع به خواندن (n)؛ (فرض کنید که ما 10 را معرفی کردیم) برای I: \u003d 1 به N نوشتن (من، "")؛ (تعداد تکرارها - 10 - 1 + 1 \u003d 10) پایان.

موافقم، این کد ساده تر و مختصر تر از همه موارد قبلی است. و چرخه برای - دقیقا چرخه معمولی نیست، هیچ شرایط منطقی وجود ندارد. بنابراین، چرخه با پارامتر برنامه نویسی شکر نحو نامیده می شود. Syntax Sugar توسط نحو برنامه نویسی زبان تکمیل شده است که ویژگی های جدید را اضافه نمی کند، اما استفاده از زبان را برای انسان راحت تر می کند.

بیایید چند وظیفه را تعیین کنیم.

for1. تعداد عدد صحیح K و N (n\u003e 0) داده می شود. نمایش n بار تعداد k.

ما یک چرخه ساده را از 1 به شماره مورد نظر سازماندهی می کنیم.

برنامه for1؛ var k، n، i: integer؛ شروع به خواندن (k، n)؛ برای من: \u003d 1 به N نوشتن (k، "")؛ (ما از طریق فضا می نویسیم) پایان.

برای 2.. < B). Вывести в порядке возрастания все целые числа, расположенные между A и B (включая сами числа A и B), а также количество N этих чисел.

به عنوان A.< B, то цикл должен будет выводить все числа от А до B. Чтобы сосчитать количество чисел, используем формулу: <конечное_значение> — <начальное_значение> + 1.

برنامه for2؛ VAR A، B، I، COUNT: INTEGER؛ شروع به خواندن (A، B)؛ برای من: \u003d A به B نوشتن (من، "")؛ (من اعداد را از کوچکتر به بیشتر منتقل می کنم) تعداد: \u003d B - A + 1؛ (من تعداد اعداد را در نظر می گیرم) Writeln؛ نوشتن ("تعداد اعداد -"، تعداد)؛ پایان.

for9. دو عدد صحیح داده می شوند و B (a< B). Найти сумму квадратов всех целых чисел от A до B включительно.

ما همان چرخه را به عنوان وظیفه قبلی سازماندهی می کنیم، اما در عین حال ما مربع های تمام اعداد را خلاصه می کنیم. برای محاسبه مربع، از عملکرد استفاده کنید.

برنامه for9؛ var a، b، i، s: integer؛ شروع به خواندن (A، B)؛ s: \u003d 0؛ (pascalabc به طور خودکار انجام می شود، اما اگر کامپایلر دیگری داشته باشید، توصیه می کنیم متغیرها را به صورت دستی بازنشانی کنید) برای I: \u003d A به B انجام دهید: \u003d S + SQR (I)؛ (ما تمام مربع ها را قرار می دهیم) Writeln؛ نوشتن ("خلاصه مربعات -"، S)؛ پایان.

for13 °. یک عدد صحیح n (\u003e 0) داده شده است. مقدار بیان 1.1 - 1.2 + 1.3 را پیدا کنید - ... (N اجزای، علائم جایگزین). اپراتور مشروط بکار نبرید.

به منظور تغییر علامت، هر تکرار چرخه، ارزش یک متغیر خاص را به طرف مقابل تغییر می دهد.

برنامه for13؛ var n، a، i: integer؛ S: واقعی؛ شروع بنویسید ("n \u003d")؛ readln (n)؛ S: \u003d 1.1؛ a: \u003d 1؛ (اول مثبت) برای I: \u003d 2 تا N انجام دهید (اولین تکرار چرخه ای که قبلا تولید کردیم، بنابراین ما شروع به شمارش از 2) شروع می کنیم: \u003d -A؛ (در حال حاضر منفی) S: \u003d S + A * (1 + I / 10)؛ (برابر) پایان؛ Writeln (S: 5: 1)؛ (ما یک فرد آشنا را تحت بخش کسری قرار خواهیم داد) پایان می دهیم.

در حالی که 1 درجه. اعداد مثبت A و B (A\u003e B). در طول طول، حداکثر تعداد ممکن از طول طول B (بدون سوپاپوس) قرار می گیرد. بدون استفاده از عملیات ضرب و تقسیم، طول بخش غیرقانونی بخش A را پیدا کنید.

هر بار که ما را از یک تفریق می کنیم، در حالی که A در\u003e \u003d 0 است.

برنامه در حالی که 1؛ var a، b: integer؛ شروع Readln (A، B)؛ در حالی که (a - b)\u003e \u003d 0 انجام دهید: \u003d a - b؛ (در حالی که تفاوت مثبت است، کسر می شود. لازم است یک نوع با چندگانگی A و B ارائه شود، بنابراین\u003e \u003d) نوشتن (a)؛ پایان.

در حالی که 4 درجه. یک عدد صحیح n (\u003e 0) داده شده است. اگر درجه 3 باشد، پس از آن خروجی درست نیست اگر آن را نداشته باشید.

ما به شرح زیر عمل می کنیم: تا کنون N به سه تقسیم شده است، تقسیم n زیاد است. سپس، اگر n \u003d 1 - تعداد درجه سه گانه است؛ اگر n.<> 1، سپس تعداد درجه سه برابر نیست. به منظور حل این کار، شما باید بدانید که چه چیزی و چگونه کار می کنند.

برنامه در حالی که4؛ var n: integer؛ شروع readln (n)؛ در حالی که n mod 3 \u003d 0 آیا n: \u003d n div 3؛ (در حالی که باقی مانده از تقسیم به سه صفر است، ما n apho را تقسیم می کنیم) writeln (n \u003d 1)؛ (بیان منطقی) پایان.

امروز همه چیز! فراموش نکنید که به وب سایت ما بیشتر بروید و روی دکمه هایی که در مقابل نظرات قرار گرفته اند، کلیک کنید.

اغلب نیاز به انجام یک اپراتور مشابه (یا گروه اپراتورها) چندین بار وجود دارد. برای انجام این کار در زبانپاسداری ارائه شده اپراتورهای چرخه

1. اپراتور چرخه با پیش شرط.

فرم ضبط: در حالی که<условие> انجام دادن.<оператор>;

اینجا در حالی که(تا زمان)،انجام دادن. (انجام دادن)- کلمات رزرو شده

به عنوان اپراتور می تواند هر اپراتور ساده یا کامپوزیت باشد. اینجا<оператор> فقط در مورد انجام شده تا زمانی که درست باشد<условие>که هر بار پس از اجرای اپراتور بررسی می شود. اگر از همان ابتدا وضعیت مهم استاشتباه اپراتور چرخه کامل نخواهد شد.

نمودار بلوک عملیات چنین اپراتور در شکل نشان داده شده است. یکی

شکل. 1. اپراتور چرخه با پیش شرط

مثال

من. روش

. محاسبه تعداد فاکتوریل پ(I.E. کار می کند 1 2 ...پ):

واقعیت برنامه_1؛

const n \u003d 5؛

var i، واقعیت: عدد صحیح؛

شروع.

من: \u003d 1؛ واقعیت: \u003d 1؛

در حالی که من<=n do {заголовок цикла}

شروع (شروع چرخه)

واقعیت: \u003d واقعیت * من؛

من: \u003d i + 1

پایان؛ (پایان چرخه)

Writeln ("فاکتوریل"، n، "\u003d"، واقعیت: 10)

پایان.

2. اپراتور چرخه با postcondition. نمودار بلوک الگوریتم عملیات اپراتور در شکل 2 نشان داده شده است.

فرم ضبط:

تکرار.

<оператор1>; <оператор2>;

تا زمان.<условие>;

در اینجا تکرار کنید (تکرار تا)، تا زمان. (شرایط برآورده نخواهد شد) - کلمات رزرو شده

دنباله اپراتورها ممکن است از یک یا چند اپراتور تشکیل شده باشد. در مقایسه با قبلی، در این چرخه، شرایط پس از اجرای اپراتور (یا توالی اپراتورها) نیز بررسی می شود، اگر به اشتباه عمل می کند - اپراتور دوباره انجام می شود، در غیر این صورت - چرخه پیش قوی با چنین ساختاراپراتور حداقل یک بار موظف استآن را اجرا خواهد شد.

مثال:

دوم روش

. محاسبه تعداد فاکتوریل پ(I.E. کار می کند 1 2 ...پ):

واقعیت برنامه_2؛

const n \u003d 5؛

var i، واقعیت: عدد صحیح؛

شروع.

من: \u003d 1؛ واقعیت: \u003d 1؛

تکرار.

شروع (شروع چرخه)

واقعیت: \u003d واقعیت * من؛

من: \u003d i + 1

پایان؛ (انتهای بدن چرخه)

تا زمانی که من\u003e n؛ (وضعیت)

Writeln (فاکتوریل "، n،" \u003d "، واقعیت: 10)

پایان.

اینجا من - این یک تکرار سنج است که باید به صورت دستی در چرخه تغییر کند.

3. اپراتور چرخه با پارامتر.

این چرخه به شما امکان می دهد اقدامات را به صورت آگاهانه چند بار تکرار کنید.

متر متغیری است که تعداد تکرارهای چرخه را در نظر می گیرد. در چنین چرخه، افزایش خودکار در شاخص متر دقیقا 1 است.

فرم ضبط:

برایcounter \u003d nach_newبه.تاریخ پایانانجام دادن.

شروع.

. . . .

پایان.;

اگر لازم باشد که پارامتر توسط 1 کاهش یابد، سپس استفاده کنیدکلمه هل می دهد پایین(مقدار اولیه بیشتر از مقدار نهایی است).

مثال:

III روش

محاسبه تعداد فاکتوریل پ(I.E. کار می کند 1 2 ...پ):

واقعیت برنامه_3؛

const n \u003d 5؛

var i، واقعیت: عدد صحیح؛

شروع.

واقعیت: \u003d 1؛

برای من: \u003d 1 به n انجام می شود

شروع (شروع چرخه)

واقعیت: \u003d واقعیت * من؛

پایان؛ (پایان چرخه)

Writeln ("فاکتوریل"، n، "\u003d"، واقعیت: 10)

پایان.

به عنوان یک اپراتور، شما می توانید از هر گونه ساده یا با استفاده ازاپراتور استاندارد

هنگام استفاده از این اپراتور چرخه، باید قوانین زیر را به یاد داشته باشید:

1) به عنوان یک پارامتر، شما می توانید یک متغیر ساده استفاده کنید،شرح داده شده در همان بلوک؛

2) پارامتر باید یک نوع گسسته داشته باشد؛

3) مقادیر اولیه و نهایی باید همان نوع را داشته باشندپارامتر؛

4) در بدن چرخه (اپراتور) تغییر صریح در ارزش پارامتر(به عنوان مثال، اپراتور انتساب) می تواند به بی نهایت منجر شودچرخه؛

5) مقادیر اولیه و نهایی چرخه را تغییر دهیدrametra، اگر آنها توسط متغیرها مشخص شوند؛

6) پس از تکمیل چرخه، مقدار پارامتر برابر با مقدار نهایی پارامتر برابر می شود اگر چرخه قطع نشداپراتور انتقال

تنها

1. یک برنامه را بنویسید که شماره را در فرمت منطقه نمایش دهد:

7 49

5 25

3 9

1 1

2. حل مشکل در سه راه (با کمک انواع مختلف چرخه):

از چند سالL. ارزش سهم به مقدار مورد نظر برسدS. (مالش)، در سهم اولیهV. (مالش) اگر درصد سالانه تضمین شده توسط بانک 10 درصد از ارزش مشارکت داشته باشد.

برای تحقق بخشیدن به الگوریتمS \u003d 100000 RUB، V \u003d 10،000 روبل.

اپراتورهای چرخه اپراتورهای اجباری شامل ترکیب آنها

مکررا

در پاسکال، سه نوع اپراتور چرخه وجود دارد: اپراتور چرخه با پارامتر، اپراتور چرخه با پیش شرط، اپراتور چرخه با پست باند.

اپراتور چرخه با پارامتر

فرمت اپراتور چرخه با پارامتر:

برای v: \u003d e1 به E2 انجام می شود

جایی که V متغیر سفارش، E1، E2 است - عبارات همان نوع، S اپراتور به نام چرخه بدن است. عبارات E1 و E2 یک بار در ورودی به چرخه محاسبه می شود. پارامتر V اولین مقدار E1 را می گیرد و سپس Nexual زیر زیر آن را دنبال می کند (SACK (V))، و غیره قبل از رسیدن به E2. هر بار V ارزیابی می شود، بیانیه S انجام می شود. اگر چند اپراتور در بدن چرخه وجود داشته باشد، آنها به یک اپراتور کامپوزیت ترکیب می شوند. اگر مقدار E2 نهایی کمتر از E1 اولیه باشد، اپراتور S راضی نیست.

اپراتور چرخه با پارامتر نیز به شرح زیر اعمال می شود:

برای v: \u003d e1 downto e2

در مقایسه با اولین مورد، V از E1 تا E2 متفاوت است، از V به Pred (V) حرکت می کند.

توجه داشته باشید که اگر V، E1، عدد صحیح E2، سپس در مورد اول، یک چرخه با یک مرحله + 1، و در مرحله دوم -1 است.

اپراتور چرخه با پیش شرط

فرمت اپراتور چرخه با پیش شرط:

جایی که B بیان منطقی است، S اپراتور است. اپراتور S اجرا خواهد شد در حالی که شرط B درست خواهد شد. اجرای اپراتور چرخه زمانی تکمیل خواهد شد که بیان B برای اولین بار مقدار کاذب را به دست آورد.

اپراتور چرخه با postcondition

فرمت اپراتور چرخه با پست باند:

تکرار S تا b

جایی که B بیان منطقی است، S اپراتور است. اپراتور S انجام می شود تا B درست شود. اپراتور تکرار حداقل یک بار انجام می شود، زیرا تأیید حقیقت وضعیت B پس از اجرای اپراتور S انجام می شود.

واژه های خدمات تکرار می شوند و تا زمانی که در حال حاضر نقش براکت ها را بازی می کنند، بنابراین براکت های اپراتور شروع می شوند و اختیاری هستند.

نمونه هایی از برنامه ها

به عنوان مثال از استفاده از اپراتورهای چرخه، برنامه محاسبه فاکتوریل را در نظر بگیرید.

برنامه 2.1.1 چرخه با پارامتر (مرحله +1)

فاکتوریل برنامه 1؛

var i، n: integer؛

نوشتن ("وارد N")؛

readln (n)؛ f: \u003d 1؛

برای من: \u003d 1 به n انجام f: \u003d f * i؛

برنامه 2.1.2. چرخه با پارامتر (مرحله 1)

برنامه فاکتوریل 2؛

var i، n: integer؛

نوشتن ("وارد N")؛

readln (n)؛ f: \u003d 1؛

برای من: \u003d n downto 1 انجام f: \u003d f * i؛

Writeln ("فاکتوریل از"، n، "برابر"، f)

برنامه 2.2 چرخه با پیش شرط

برنامه فاکتوریل 3؛

var i، n: integer؛

نوشتن ("وارد N")؛

readln (n)؛ f: \u003d 1؛ من: \u003d 1؛

در حالی که من<=N DO

Writeln ("فاکتوریل از"، n، "برابر"، f)

اپراتور عنصر تقسیم کننده ای از یک برنامه است که امکان انجام اقدامات الگوریتمی خاص را فراهم می کند. تمایز اپراتور، در رابطه با سایر عناصر، این است که همیشه تحت آن وجود دارد. در زبان پاسکال، اپراتورها شامل کلمات خدماتی هستند. اپراتورهای مورد استفاده در این برنامه بین خود و از عناصر دیگر نماد برنامه (؛) جدا می شوند. همه چيز اپراتورهای زبان پاسکال می تواند به آن متصل شود دو گروه:

  1. ساده؛
  2. ساختار یافته.

اپراتورهای ساده - این اپراتورها هستند که شامل اپراتورهای دیگر نیستند. این شامل:

  • اپراتور تخصیص (: \u003d)؛
  • اپراتور روش؛
  • اپراتور انتقال بدون قید و شرط (GOTO).

اپراتورهای ساخت یافته - اینها اپراتورهایی هستند که شامل اپراتورهای دیگر هستند. این شامل:

  • اپراتور کامپوزیت؛
  • اپراتورهای وضعیت (اگر، مورد)؛
  • اپراتورهای چرخه (برای، در حالی که، تکرار)؛
  • اپراتور ضایعات (با).

اپراتورهای ساده

اپراتور روش

اپراتور روش برای تماس با روش استفاده می شود.

فرمت: [نام موقعیت ها] (لیست پارامترهای تماس)؛

اپراتور پروسه شامل شناسه ای از روش به طور مستقیم فراتر از آن در براکت لیستی از پارامترهای تماس است. در پاسکال، روش های بدون پارامترها وجود دارد. در این مورد، هنگام تماس، لیست پارامترها گم شده است. اجرای اپراتور پروسه منجر به فعال شدن اقدامات توصیف شده در بدن آن می شود. در پاسکال، دو نوع روش وجود دارد:

  • استاندارد، که در زبان خود شرح داده شده و زبان متعلق هستند؛
  • روش های کاربر که کاربر ایجاد می کند.

برای تماس با روش های استاندارد، شما نیاز به اتصال در بخش استفاده از نام ماژول (کتابخانه)، که این روش را توصیف می کند. تعدادی از روش ها در ماژول سیستم همیشه به طور خودکار به برنامه متصل می شوند و اتصال آنها در بخش استفاده شده ضروری نیست. روش های استاندارد برای زبان پاسکال - خواندن، نوشتن، بازنویسی، بستن، تنظیم مجدد.

خواندن ([file_name]، [list_vode])

خواندن (x، y)

روش های کاربر (غیر استاندارد) باید قبل از استفاده از آنها در برنامه ایجاد شود و یا در شرح برنامه خود، یا در واحدهای نرم افزاری جداگانه ماژول باشد. اگر این روش در ماژول باشد، باید نام این ماژول باید در برنامه کاربردی استفاده شود.

اپراتور انتقال بدون قید و شرط

فرمت: GOTO [برچسب]؛

GOTO - کلمه رزرو شده در زبان پاسکال. [برچسب] یک شناسه دلخواه است که به شما اجازه می دهد یک اپراتور خاص برنامه را علامت بزنید و بیشتر به آن مراجعه کنید. در زبان پاسکال، به عنوان برچسب ها مجاز به استفاده از یک عدد صحیح بدون علائم است. برچسب در مقابل اپراتور مشخص شده قرار دارد و از آن جدا شده است (:). یک اپراتور می تواند چندین برچسب را برچسب گذاری کند. آنها نیز از یکدیگر جدا شده اند (:). قبل از استفاده از برچسب در بخش اپراتور، باید در بخش برچسب (بخش شرح) شرح داده شود.

اقدام GOTO کنترل اپراتور برچسب مناسب را انتقال می دهد. هنگام استفاده از برچسب ها، باید از قوانین زیر هدایت شود:

  • برچسب باید در بخش توصیف توضیح داده شود و تمام برچسب ها باید استفاده شود.
  • اگر عدد صحیح به عنوان برچسب استفاده شود، آنها اعلام نمی شوند.

بر خلاف اصول تکنولوژی برنامه نویسی ساختاری. زبان های برنامه نویسی مدرن چنین اپراتور را در ترکیب خود ندارند و نیازی به استفاده از آن نیست. علاوه بر این، روش به اصطلاح نوار نقاله در رایانه های مدرن استفاده می شود. اگر برنامه در برنامه مواجه شود، پس از آن چنین اپراتور کل نوار نقاله را شکست می دهد، که باعث می شود دوباره آن، که به طور قابل توجهی فرآیند محاسبات را کاهش می دهد.

اپراتورهای ساخت یافته

شرایط شرایط اگر.

اپراتور شرطی در برنامه برای اجرای ساختار الگوریتمی - شاخه استفاده می شود. در این ساختار، فرآیند محاسباتی ممکن است بر اساس یکی از مسیرهای احتمالی ادامه یابد. انتخاب جهت معمولا با بررسی هر شرایطی انجام می شود. دو نوع ساختار شاخه ای وجود دارد: یک چنگال و دور زدن.

در زبان پاسکال، اپراتور شرطی شرطی یک وسیله سازماندهی یک فرآیند محاسباتی شاخه ای است.

فرمت: اگر [logual_section] سپس [operator_1]؛ دیگر [operator_2]؛

اگر، پس، دیگر - کلمات خدمات. [operator_1]، [operator_2] - عملیات مشترک زبان پاسکال. بخش دیگری اختیاری است (ممکن است غایب باشد).

اپراتور اگر عمل می کند به شرح زیر است: نتیجه یک عبارت منطقی ابتدا بررسی می شود. اگر نتیجه حقیقت (درست)، پس از آن [operator_1] اجرا می شود، پس از کلمه اصلی اجرا می شود، و [operator_2] از بین رفته است. اگر نتیجه یک دروغ (FALSE) باشد، سپس [operator_1] از بین رفته و [operator_2] اجرا می شود.

اگر بخش دیگری از دست رفته باشد، پس اگر اپراتور هیچ شکل نداشته باشد:

اگر [logual_section] سپس [اپراتور]؛

در این مورد، اگر نتیجه حقیقت (درست)، پس از آن [اپراتور] در حال اجرا است، اگر FALSE (FALSE)، کنترل به اپراتور پس از اپراتور منتقل می شود.

2 عدد A و B وجود دارد. حداکثر تعداد را پیدا کنید.

اپراتور کامپوزیت

اپراتور کامپوزیت یک دنباله ای از عملیات دلخواه در برنامه است که در براکت های به اصطلاح اپراتور (Begin-end) به پایان رسید.

فرمت: شروع [اپراتورها]؛ پایان؛

اپراتورهای کامپوزیت به شما این امکان را می دهند که یک گروه از اپراتورها را به عنوان یک اپراتور نمایندگی کنید.

اپراتور انتخاب مورد

طراحی شده برای پیاده سازی شاخه های متعدد، از آنجا که اپراتور IF می تواند تنها دو جهت فرآیند محاسبات را پیاده سازی کند، همیشه از آن برای پیاده سازی شاخه های متعدد استفاده نمی شود. شاخه های چندگانه توسط اپراتور مورد اجرا می شود.

فرمت: مورد [مشتری]

[Constantay_ber_1]: [operator_1]؛

[constantable_2]: [operator_2]؛

[constantable_net]: [operator_n]؛

دیگر [اپراتور]؛

مورد، از، دیگر، پایان دادن به کلمات دفتر. [مشتری] پارامتر یکی از انواع توالی است. [Concantants] - ثابت های همان نوع به عنوان کلید انتخاب اجرای انتخاب. [operator_1 (n)] - اپراتور معمولی. دیگر ممکن است غایب باشد

اپراتور انتخاب به شرح زیر عمل می کند: قبل از عمل اپراتور، مقدار پارامتر کلید انتخاب تعیین می شود. این پارامتر می تواند به عنوان یک متغیر در برنامه یا دیگری بیان شود. سپس پارامتر کلید انتخابی به طور مداوم با ثابت انتخاب مقایسه می شود. هنگامی که مقدار کلید انتخاب با یکی از ثابت های انتخاب همخوانی دارد، اپراتور پس از این ثابت اجرا می شود، و تمام اپراتورهای دیگر نادیده گرفته می شوند. در صورت عدم هماهنگی کلید انتخاب با هر یک از ثابت ها، اپراتور بعدی بعدی را دنبال می کند. اغلب، دیگر اجباری نیست و در صورت عدم درک یک کلید از انتخاب یا یکی از ثابت های انتخاب و در غیاب دیگری، کنترل به اپراتور پس از اپراتور مورد انتقال داده می شود.

در بیانیه ای، هیچ تایید صریح از ویژگی مشخصه اپراتور وجود ندارد. در همان زمان به صورت ضمنی، عملکرد مقایسه انجام می شود. مورد معرفی ناسازگاری به برنامه در زبان پاسکال، از آنجا که اپراتور داده به پایان می رسد با یک کلمه خدمات پایان، که یک جفت شروع نمی شود.

یک الگوریتم و برنامه یک کار را ایجاد کنید که عملیات نور ترافیک را شبیه سازی کند. هنگام وارد شدن به نماد اولین حرف از چراغ راهنمایی، برنامه باید یک پیام در مورد رنگ و اقدامات مربوطه را نمایش دهد.

این برنامه به شرح زیر کار می کند: با استفاده از صفحه کلید RAD، نامه نامه رنگ نور وارد شده است. اگر نامه 's' توسط رنگ سبز مربوطه وارد شده است، سپس در بیانیه مورد، مقدار وارد شده در لیست انتخاب یک ثابت انتخاب "S" و پیام "سبز، حرکت مجاز است" نمایش داده خواهد شد. هنگام وارد شدن به نماد حروف 'k' و 'j'، پیام های مشابه نمایش داده خواهد شد. هنگامی که شما هر نماد دیگری را وارد می کنید، پیام "ترافیک کار نمی کند" نمایش داده خواهد شد، زیرا در این مورد بخشی از این موارد، اپراتور مورد کار می کند.

اپراتورهای چرخه

یک ساختار الگوریتم چرخه ای به عنوان یک ساختار در نظر گرفته می شود که برخی از اقدامات چند بار انجام می شود. در برنامه نویسی، دو نوع ساختارهای چرخه ای وجود دارد: یک چرخه با یک پارامتر و یک چرخه تکراری.

چرخه با پارامتر همیشه شامل پارامترهای به اصطلاح چرخه است: x، x n، x k، Δx. گاهی اوقات یک چرخه با یک پارامتر یک چرخه منظم نامیده می شود. یک ویژگی مشخصه این است که تعداد چرخه ها و تکرار ها را می توان تعیین کرد تا زمانی که چرخه اجرا شود.

در چرخه تکرار، تعیین تعداد چرخه ها قبل از اعدام غیر ممکن است. این کار تا زمانی که شرایط چرخه را ادامه می دهد انجام شود.

در پاسکال، سه اپراتور ساختارهای کامپیوتری چرخشی وجود دارد:

  • اپراتور حساب برای. این طراحی شده است تا یک چرخه را با یک پارامتر پیاده سازی کند و نمی تواند برای اجرای چرخه تکراری استفاده شود؛
  • اپراتور چرخه با در حالیکه؛
  • اپراتور چرخه با پست تکرار

آخرین دو نفر بر اجرای چرخه تکراری تمرکز می کنند، اما همچنین می توانند برای اجرای یک چرخه با یک پارامتر استفاده شوند.

اپراتور برای

فرمت: برای [parameter_t_s]: \u003d [n_z_p_z] به [k_z_p_ts] انجام [اپراتور]؛

برای، به، انجام - کلمات خدمات. [parameter_cyclax] - پارامتر چرخه. [n_p_ts] - مقدار اولیه پارامتر چرخه. [k_z_p_ts] - ارزش نهایی پارامتر چرخه. [اپراتور] - اپراتور دلخواه.

پارامتر چرخه باید یک متغیر از نوع مرکزی باشد. مقادیر اولیه و نهایی پارامتر چرخه باید همان نوع پارامتر چرخه باشد.

کار اپراتور در مورد الگوریتم خود را در نظر بگیرید:

در مرحله اول، مقدار پارامتر چرخه [H_P_CE] را قبول می کند، سپس پارامتر چرخه کمتر یا برابر با [k_p_ts] است. این شرایط شرایطی برای ادامه چرخه است. اگر انجام شود، چرخه عملیات خود را ادامه می دهد و [اپراتور] انجام می شود، پس از آن پارامتر چرخه (کاهش) در هر واحد افزایش می یابد. سپس با ارزش جدید پارامتر چرخه، شرایط ادامه چرخه بررسی می شود. اگر انجام شود، اقدامات تکرار می شود. اگر وضعیت اجرا نشود، چرخه کار خود را متوقف می کند.

اپراتور برای اپراتورهای مشابه در سایر زبان های برنامه نویسی به طور قابل توجهی متفاوت است. تفاوت ها به شرح زیر است:

  • اپراتور بدن برای اپراتور ممکن است اعدام نشود، زیرا آزمون ادامه چرخه قبل از بدن چرخه انجام می شود؛
  • گام تغییر پارامتر چرخه ثابت و برابر 1 است؛
  • بدن چرخه در این بیانیه توسط یک اپراتور نشان داده شده است. در صورتی که عمل بدن چرخه نیاز به بیش از یک بیانیه ساده، پس از آن این اپراتورها باید به یک اپراتور کامپوزیتی توسط براکت های اپراتور تبدیل شوند (Begin-end)؛
  • پارامتر چرخه تنها می تواند یک متغیر از نوع مرکزی باشد.

یک مثال از استفاده از اپراتور برای: یک جدول ترجمه روبل را به دلار تبدیل کنید.

در حالی که اپراتور (اپراتور چرخه با پیش شرط)

فرمت: در حالی که [شرایط] [اپراتور]؛

در حالی که، انجام دهید - کلمات خدمات. [شرایط] - بیان نوع منطقی. [اپراتور] - اپراتور معمولی.

;

اپراتور در حالی که به شرح زیر عمل می کند: نتیجه شرایط منطقی ابتدا بررسی می شود. اگر نتیجه یک حقیقت باشد، اپراتور در حال اجرا است، پس از آن، پس از آن شرایط برای بررسی با ارزش جدید پارامترها در بیان منطقی وضعیت، بازگردانده می شود. اگر نتیجه دروغ باشد، سپس چرخه تکمیل می شود.

هنگام کار با در حالی که شما نیاز به توجه به خواص خود را:

  • شرایط مورد استفاده در حالی که شرایطی برای ادامه چرخه است؛
  • در قسمت چرخه، تغییر در مقدار پارامتر موجود در شرایط بیان نیز وجود دارد
  • در حالی که چرخه ممکن است تکمیل نشود، از آنجا که اعتبار سنجی وضعیت در ادامه چرخه قبل از بدن چرخه انجام می شود.

تکرار اپراتور (اپراتور چرخه با postcondition)

فرمت: تکرار [body_cykla]؛ تا زمانی که [شرایط]؛

اپراتور تکرار به شرح زیر عمل می کند: اول، اپراتورهای بدن چرخه انجام می شود، پس از آن نتیجه توسط یک شرایط منطقی بررسی می شود. اگر نتیجه دروغ باشد، پس از آن بازپرداخت به اعدام اپراتورهای چرخه بعدی. اگر نتیجه حقیقت باشد، اپراتور کار را تکمیل می کند.

اپراتور تکرار دارای ویژگی های زیر است:

  • تکرار شرایط ختم کوک را بررسی می کند و اگر شرایط انجام شود، چرخه کار را متوقف می کند؛
  • بدن چرخه همیشه حداقل یک بار انجام می شود؛
  • پارامتر برای بررسی شرایط تغییر در بدن چرخه؛
  • اپراتورهای چرخه بدن نیازی به وارد کردن به براکت های اپراتور (شروع-پایان) ندارند، در حالی که نقش براکت های اپراتور با تکرار و تا زمانی انجام می شود.

محاسبه y \u003d sin (x)، جایی که xn \u003d 10، xk \u003d 100، مرحله 10 است.

زنگ.

کسانی هستند که این خبر را قبل از شما خوانده اند.
مشترک شدن برای دریافت مقالات تازه.
پست الکترونیک
نام
نام خانوادگی
چگونه می خواهید زنگ را بخوانید
بدون هرزنامه