زنگ.

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

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

  • اپراتور کامپوزیت؛
  • اپراتور شرطی اگر؛
  • مورد اپراتور Casel؛
  • اپراتور چرخه تکرار کنید
  • اپراتور چرخه WHELE؛
  • اپراتور چرخه برای.

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

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

فرمت اپراتور:

اپراتور شماره 1؛

اپراتور شماره 2؛

اپراتور شماره 3؛

اپراتور شماره N-1؛

شماره اپراتور n؛ پایان؛

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

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

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

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

اپراتور شرطی اگر.

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

فرمت اپراتور به صورت کامل:

اگر<условие> سپس.<оператор 1> دیگر<оператор 2>

فرمت اپراتور در فرمت ناقص:

اگر<условие>سپس.<оператор 1>

اگر (اگر)، سپس (سپس)، دیگر (در غیر این صورت) - کلمات رزرو شده است.

اگر فلوچارت اپراتور زیر باشد:

اپراتور شرطی به شرح زیر عمل می کند. ابتدا بیان شرطی را محاسبه می کند< условие >. اگر نتیجه درست باشد (حقیقت)، سپس آن را انجام می شود< оператор 1 > (پس از کلمه آن)، و< оператор 2 > پرش اگر نتیجه نادرست باشد (نادرست)، سپس< оператор 1 > پرش کرد و اعدام شد< оператор 2 > (پس از کلمه دیگر). قبل از دیگری، یک نقطه کاما هرگز قرار نیست، زیرا این پایان اپراتور نیست.

بخشی از دیگر<оператор 2> اپراتور مشروط اگر بتوانید حذف شود اگر یک< условие > اگر اپراتور درست انجام شود، سپس اعدام شد<оператор 1> در غیر این صورت، این اپراتور پرشده است. در این مورد، فرمت اپراتور شرطی دارای فرم ناقص است:

مقایسه دو ساختار:

اگر<условие>سپس.<оператор 1>;

اگر<условие>سپس.<оператор 1>; <оператор 2>;

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

مثال:

اگر a\u003e 0 سپس b: \u003d 1؛

اگر a\u003e 0 سپس b: \u003d 1؛ a: \u003d b؛ (اپراتور a: \u003d b؛ همیشه)

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

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

اگر<условие>سپس.

اپراتور 11؛

اپراتور 1N؛

اپراتور 21؛

اپراتور 2n؛

مثال.

اگر a\u003e 0 سپس شروع B: \u003d 1؛ a: \u003d b؛ پایان؛

وظیفه 1 محاسبه مقدار نابرابری های مشخص شده

y \u003d x + 1 با x<0; y=2∙x при x>0. برنامه A5؛ var x، y: واقعی؛ شروع نوشتن ('وارد X:')؛ readln (x)؛ اگر x writeln ('ارزش U:'، Y: 6: 2) پایان.

نتایج برنامه:

مقدار X: 0.5 را وارد کنید.

ارزش ارزش: 1.00

وظیفه 2 یک برنامه را برای حل معادله مربع بنویسید. اگر تبعیض کمتر از صفر باشد، پیام مناسب را نمایش دهید.

برنامه A6؛ var a، b، c: واقعی؛ (ضرایب معادله) x1، x2: واقعی؛ (معادله ریشه ها) D: REAL؛ (تبعیض آمیز) شروع Writeln ('راه حل معادله مربع': 50)؛ نوشتن ('مقادیر ضرایب A، B، C:') را وارد کنید)؛ Readln (A، B، C)؛ (وارد کردن ضرایب) D: \u003d B * B-4 * A * C؛ اگر (D.<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

نتایج برنامه:

راه حل معادله مربع

مقادیر ضرایب A، B، C: 3 1 6 را وارد کنید

معادله ریشه ندارد

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

مثال.

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

هنگام کار با اپراتورهای توپی اگر قوانین زیر باید مورد توجه قرار گیرد:

  • قبل از استفاده از کلمه دیگر نماد "؛" هرگز قرار نده
  • کلمه کلیدی رزرو شده همیشه با نزدیکترین در مقابل آن همراه با یک کلمه نگهداری شده است.

وظیفه 3 بهبود برنامه حل معادله مربع (وظیفه 2). هنگامی که ضریب ضریب a \u003d 0، معادله دژنراسیون است. در این برنامه، این واقعیت در نظر گرفته نشده است، که باعث خطای مرگبار در اجرای برنامه (تقسیم به صفر) خواهد شد. به منظور حذف تقسیم به صفر، اعتبار سنجی ضریب را انجام دهید و پس از ورود آن به اپراتور Readln (A، B، C).

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

گزینه های متعددی برای مقایسه صحیح مقادیر متغیر واقعی با صفر وجود دارد:

وظیفه 4 برنامه راه حل معادله مربع بهبود یافته است.

برنامه A7؛ VAR A، B، C: REAL؛ (ضرایب معادله) x1، x2: واقعی؛ (معادله ریشه ها) D: REAL؛ (تبعیض آمیز) شروع Writeln ('راه حل معادله مربع': 50)؛ نوشتن ('مقادیر ضرایب A، B، C:') را وارد کنید)؛ Readln (A، B، C)؛ (وارد کردن ضرایب) اگر گرد (a)<>0 سپس شروع D: \u003d B * B-4 * A * C؛ اگر D.<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

نتایج برنامه:

محلول معادله مربع مقادیر ضرایب A، B، C، C: 0 1 6 را به صفر وارد کنید.

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

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

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

فرمت اپراتور:

مورد "<ключ выбора>"Constanta1: اپراتور 1؛ Constanta2: اپراتور 2؛ Constanta3: اپراتور 3؛ ... Constantan-1: اپراتور N-1؛ Constantan: اپراتور NN؛ دیگر اپراتور

در اینجا Sase (در مورد)، از (از)، دیگر (در غیر این صورت)، پایان (پایان) کلمات رزرو شده است.

کلید انتخاب بیان هر نوع به جز واقعی و رشته است.

Constant1 - ثابت از همان نوع به عنوان بیان.

اپراتور 1 - اپراتور دلخواه.

اپراتور انتخاب به شرح زیر عمل می کند. در ابتدا بیان محاسبه می شود<ключ выбора> و سپس در دنباله اپراتورها پیدا کردن یکی از پیش از یک ثابت برابر با مقدار محاسبه شده است<ключ выбора> . اپراتور یافت شده اجرا می شود، پس از آن اپراتور انتخاب عملیات خود را تکمیل می کند (کنترل به پایان می رسد). اگر ثابت در لیست ثابت مطابقت نداشته باشد، مربوط به مقدار محاسبه شده کلید انتخاب، کنترل به اپراتور ایستاده پشت کلمه دیگر منتقل می شود.

بخشی از دیگر<оператора> شما می توانید حذف کنید، سپس در غیاب در لیست ثابت، ثابت مورد نظر اتفاق نمی افتد، و اپراتور انتخاب به سادگی کار خود را کامل می کند.

وظیفه 5 یک برنامه ماشین حساب ساده بنویسید.

برنامه A8؛ var x، y: واقعی؛ Z: واقعی؛ (نتیجه) OP: char؛ (کلید را انتخاب کنید) شروع بنویسید ("Eperands X، Y را وارد کنید)؛ readln (x، y)؛ نوشتن ("عملیات را وارد کنید (+، -، *، /): ')؛ Readln (OP)؛ مورد op of '+': z: \u003d x + y؛ '-': Z: \u003d X-Y؛ '*': Z: \u003d x * y؛ '/': اگر Y0 سپس Z: \u003d x / y elswriteln ('تقسیم به صفر')؛ دیگر Writeln (اقدام ارائه نشده است!)؛ پایان؛ (op) (بنابراین شما می توانید علامت گذاری کنید، "پایان) Writeln ('نتیجه \u003d'، Z: 8: 2)؛ پایان.

نتایج برنامه:

اپراتور X را وارد کنید، Y: 4 2

عملیات را وارد کنید (+، -، *، /): *

نتیجه \u003d 8.00 است

در برنامه، کلید شخصیت یک متغیر از نوع نماد است. بسته به مقادیر نماد وارد شده (+، -، *، /)، یکی از اقدامات ریاضی انجام می شود: علاوه بر، تفریق، ضرب یا تقسیم. اگر صفر به عنوان یک تقسیم معرفی شود، تقسیم غیرممکن است و پیام "تقسیم به صفر" صادر می شود. اگر هر شخصیت دیگری وارد شود، نتیجه پیام "عمل ارائه نشده است" خواهد بود. اگر عملیات مجاز وارد شود، نتیجه صادر می شود.

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

برنامه A9؛ var n: integer؛ (تعداد روز هفته) شروع به نوشتن ('شماره روز هفته را وارد کنید:')؛ readln (n)؛ مورد n از 1: writeln ('دوشنبه')؛ 2: Writeln ('سه شنبه')؛ 3: Writeln ('چهارشنبه')؛ 4: Writeln ('پنج شنبه')؛ 5: Writeln ('جمعه')؛ 6: Writeln (شنبه ")؛ 7: Writeln ('یکشنبه')؛ دیگر نوشتن ('شما اشتباه می کنید!') پایان؛ (n) پایان.

نتایج برنامه:

شماره روز را وارد کنید: 1

دوشنبه

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

مورد n از 1،3،5،7،9: writeln ('این ارقام عجیب و غریب است)؛ 2،4،6،8،10: Writeln ('این ها حتی اعداد هستند)؛ پایان؛

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

اپراتورها شامل هیچ اپراتورهای دیگر نیستند ساده. این شامل اپراتورهای تخصیص، انتقال بدون قید و شرط، روش تماس و اپراتور خالی.

اپراتور برنامه

اپراتور برنامه (:=) تجویز برای انجام یک عبارت مشخص شده در قسمت راست خود، و تعیین نتیجه متغیر که شناسه آن در سمت چپ قرار دارد. متغیر و عبارت باید با نوع سازگار باشد.

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

به عنوان مثال، برای اپراتور

Rezult: \u003d div b؛

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

نمونه هایی از استفاده از اپراتور تخصیص:

ولی:= 8;

s: \u003d a *که در;

Ostatok: \u003d mod b؛

نسبت: \u003d a / b؛

اپراتور انتقال بدون قید و شرط (رفتن به)

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

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

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

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

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

فاصله بین برچسب و بیانیه انتقال به آن نباید بیش از یک صفحه از متن (یا ارتفاع صفحه نمایش) باشد.

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

برچسب Metka؛ (در توضیحات دست برچسب ها برچسب را به نام توصیف کردmetka}

شروع. (برنامه پایه)

(اپراتورهای اصلی برنامه)

(اپراتورهای اصلی برنامه برچسب گذاری شده)

روش انجام کار

    اطلاعات نظری را در مورد موضوع بررسی کنید: "نوشتن یک برنامه در یک کت و شلوار با استفاده از تخصیص و اپراتورهای انتقال بدون قید و شرط".

    یک کار فردی را از معلم دریافت کنید و یک برنامه را مطابق با این کار توسعه دهید.

    نمایش برنامه در حال اجرا به معلم

    پاسخ به سوالات آزمون

سوالات کنترل

    عناصر برنامه نویسی پایه.

    ویژگی های اصلی برنامه. مفاهیم زبان، پوشش، بلوک های جهانی و محلی.

    اپراتورهای زبان برنامه نویسی پاسکال. اپراتور تخصیص فرمت، مثالها.

    اپراتور انتقال بدون قید و شرط. فرمت، مثالها. قوانین اساسی استفاده

کار آزمایشگاهی شماره 7

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

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

اطلاعات نظری مختصر

اپراتورهای مشروط

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

توربو پاسکال دارای دو اپراتور مشروط است: اگر و مورد

شرایط اپراتور اگر.

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

این می تواند یکی از فرم های زیر را انجام دهد:

    اگر<условие> سپس.<оператор1>

دیگر<оператор2>;

    اگر<условие> سپس.<оператор>;

ترجمه شده از انگلیسی، این فرمت ها را می توان به عنوان:

    اگر یک <условие> که <оператор1> در غیر این صورت <оператор2>

    اگر یک <условие> که <оператор>

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

در اولین مورد، اگر مقدار بیان باشد درست است، واقعی. (حقیقت)، اعدام شد <оператор1>, مشخص شده پس از کلمه سپس.(ترجمه شده - "به"). اگر نتیجه محاسبه بیان در شرایط باشد اشتباه (دروغ)، سپس در حال اجرا است <оператор2> .

در مورد دوم، اگر نتیجه بیان باشد درست است، واقعی.، انجام <оператор>, اگر یک اشتباه - اپراتور بعدی بلافاصله پشت اپراتور اگر. اپراتورها اگر شاید تو در تو.

مثال یک قطعه از یک برنامه با اپراتور شرط بندی:

اگر ch \u003d "n" سپس parol: \u003d درست است

پارک دیگر: \u003d نادرست؛

اگر parol \u003d true thatn

اگر x \u003d 100 سپس نوشتن ("رمز عبور و کد سمت راست")

Writeln ("خطا در کد")؛

در این مثال، صفحه کلید مقدار متغیر نوع شخصیت را می خواند چاله. وضعیت پس از آن بررسی می شود از جانبh.=" n." . اگر انجام شود، سپس متغیر است پارول کردننوع بولین ارزش تعیین شده است درست است، واقعی.اگر شرایط انجام نشده باشد، اشتباه. سپس از صفحه کلید مقدار کد را بخوانید ایکس.. بعد، اگر اپراتور PAROL \u003d شرایط واقعی را بررسی کند. اگر مهم باشد درست است، واقعی.سپس رمز عبور وارد شده توسط اپراتور را بررسی کنید اگر x \u003d 100. اگر شرایط x \u003d 100 معنی دارد درست است، واقعی.، پیام "رمز عبور و کد صحیح است" نمایش داده می شود، و مدیریت در برنامه به اپراتور پس از کلمه منتقل می شود پایان.اگر مهم باشد اشتباه، اپراتور کامپوزیت ایستاده پس از، کلمات دیگرکه پیام "خطا در کد" را به صفحه نمایش مانیتور ویدئو نشان می دهد و یک روش استاندارد را ایجاد می کند توقف (1) برای متوقف کردن برنامه

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

اگر condition1 پس از آن شرط 2 پس از آن<оператор1> دیگر<оператор2>

ابهام در حال ظهور به کدام اپراتور اگر متعلق به بخش است دیگر <оператор2>, این اجازه می دهد این واقعیت است که کلمه خدمات دیگر همیشه مرتبط با (مرتبط) با نزدیکترین کلمه کسب و کار اگر که هنوز با یک کلمه خدمات مرتبط نیست دیگر.

در این راستا، هنگام نوشتن اپراتورهای وضعیت توطئه، باید دقیق باشد.

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

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

متن برنامه ممکن است به شرح زیر باشد:

primer1 برنامه؛

a، in: integer؛

نوشتن ("مقدار تقسیم A را وارد کنید:")؛

نوشتن ("مقدار تقسیم را وارد کنید:")؛

اگر b \u003d 0 (کنترل ورودی شمارهب}

سپس Writeln ("Ha Zero برای به اشتراک گذاشتن آن غیر ممکن است") (شرط راضی)

(شرط برآورده نشده است)

Rezult: \u003d a / in؛

Writeln ("شماره های خصوصی"، و، "و"، در، "\u003d"، Rezult)؛

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

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

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

اپراتور انتقال دارای فرم است:

در اینجا GOTO یک کلمه رزرو شده است (برو [بر روی برچسب])؛ - برچسب.

برچسب 1؛ // اعلام یک برچسب به نام 1 var
A: عدد صحیح؛ شروع.
a: \u003d 10؛
رفتن 1؛ // انتقال به برچسب 1
a: \u003d sqrt (a)؛ // این اپراتور هرگز انجام نخواهد شد! 1: a: \u003d a + a؛ // اپراتور مشخص شده با برچسب 1 پایان؛

اپراتورهای انتقال مشروط

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

اگر وضعیت سپس. اپراتور 1 اپراتور دیگر؛

اپراتور وضعیت را می توان در یک فرم ساده ثبت کرد:

اگر وضعیت سپس. اپراتور؛

ما نمونه هایی از استفاده از شرایط اپراتورها را ارائه می دهیم:

اگر a\u003e 0 سپس b: \u003d sqrt (a) else b: \u003d a * 2؛ // شرایط اپراتور
اگر A \u003d 10 سپس B: \u003d B + 1؛ // فرم ساده شده

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

بر خلاف دیگر زبان های برنامه نویسی در Object Pascal، اولویت عملیات روابط کمتر از عملیات منطقی است، در این مورد، اجزای فردی بیان منطقی پیچیده در براکت ها هستند. به عنوان مثال، چنین رکوردی از اپراتور قبلی نادرست خواهد بود:
اگر A\u003e B و B 0 از آن ... // خطا به عنوان در واقع (با توجه به اولویت عملیات) کامپایلر این خط را پخش خواهد کرد:
اگر a\u003e (b و b) 0 سپس ...

اپراتور انتقال

این بار من در مورد موضوع "اپراتورها" ادامه خواهم داد.

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

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

1) تمام برچسب هایی که در بلوک هستند باید شرح داده شوند. در این مورد، هر برچسب را می توان بیش از یک بار توصیف کرد. کسانی که. در داخل بلوک، هیچ دو برچسب با همان نام وجود ندارد.

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

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

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

1) اگر به نظر می رسد غیر ممکن است بدون اپراتورهای انتقال انجام شود، لازم است تلاش برای اعمال آنها برای انتقال کنترل تنها متن برنامه (به جلو)؛ اگر شما نیاز به انتقال "بازگشت" بهتر استفاده از اپراتورهای چرخه (نگاه کنید به زیر)؛

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

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

var ج: عدد صحیح؛

(ما دو برچسب را اعلام می کنیم)

برچسبشروع پایان؛

شروع: writeln ('برنامه شروع')؛

قابل اعتماد و متخصص. پایان؛

پایان: Writeln ('پایان برنامه')؛

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

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

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

اپراتور مشروط

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

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

اگر کفیل سپس. Writeln (کلید کلیدی)؛

اگر a\u003e b. سپس. دقیقه: \u003d ب

دیگر دقیقه: \u003d a؛

اگر x1\u003e x2 سپس شروع کنید

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

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

اگر شرایط 1 سپس اگر Condition2 سپس. اپراتور 1 دیگراپراتور 2؛

برای وضوح، شما می توانید تفسیر کنید

اگر شرایط 1 سپس شروع کنید

اگرCondition2 سپس. اپراتور 1 دیگراپراتور 2؛

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

گزینه اپراتور

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

نوع tway \u003d (بالا، راست، پایین، چپ)؛

var راه: Tway؛

MAPX، MAPY: کلمه؛

اگرراه \u003d بالا سپس. MAPY: \u003d MAPY - 1

دیگر اگر راه \u003d راست سپس.MAPX: \u003d MAPX + 1

دیگراگر راه \u003d پایین سپس.MAPY: \u003d MAPY + 1

دیگر MAPX: \u003d MAPX - 1؛

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

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

مورد. مسیر. از.

UP: MAPY: \u003d MAPY - 1؛

راست: MAPX: \u003d MAPX + 1؛

پایین: MAPY: \u003d MAPY + 1؛

چپ: MAPX: \u003d MAPX - 1؛

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

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

مورد.مسیر. از.

UP: MAPY: \u003d MAPY - 1؛

راست: MAPX: \u003d MAPX + 1؛

پایین: MAPY: \u003d MAPY + 1؛

دیگر MAPX: \u003d MAPX - 1؛

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

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

مورد.مسیر. از.

بالا، پایین: writeln ('حرکت عمودی عمودی')؛

راست، چپ: Writeln ('حرکت به صورت افقی')؛

مورد.ایکس. از.

10،20،30: Writeln (ده هاسال)؛

1..9: Writeln ('واحد')؛

در آخرین اپراتور طراحی writeln ('واحد') تکمیل شده اگر متغیر x یکی از مقادیر را داشته باشد 1,2,3,..,8,9 .

همانطور که ممکن است متوجه شوید، خطوط با ثابت هایی که من در کولون قرار داشتم، به نظر می رسد که این نوع به وضوح است، هرچند این موضوع طعم و مزه است، و آنچه که شناخته شده است، طعم و رنگ رفیق وجود ندارد؛ o )

اعمال گزینه اختیاری باید مطابق با قوانین زیر اعمال شود:

1) ارزش معتبر عبارات - "سوئیچ"، پس از کلمه خدمات ثبت شده است مورد.باید نوع گسسته را برآورده کند: برای یک نوع کل آنها باید در محدوده دروغ بگویند -32768..32767 .

2) تمام گزینه های ثابت ثابت باید یک نوع سازگار با نوع بیان داشته باشند.

3) ثابت در گزینه ها نباید در اپراتور گزینه تکرار شود، و محدوده ها نباید تقسیم شوند و نباید ثابت های مشخص شده در این یا سایر گزینه ها را داشته باشند.

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

زنگ.

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