نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • ویندوز 7، XP
  • روش مونتاژ. انشعاب و جزئیات متوالی الگوریتم - هایپر مارکت دانش

روش مونتاژ. انشعاب و جزئیات متوالی الگوریتم - هایپر مارکت دانش

ماهیت روش در بالا توضیح داده شد. ابتدا مشکل اصلی تحلیل می شود. وظایف فرعی را مشخص می کند. سلسله مراتبی از چنین وظایف فرعی ساخته شده است (شکل 48).

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

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

به جای a و b اعداد اعشاری وجود دارد. آیکون

یکی از علائم عملیات نشان داده شده است: +، -، *. ما به ماشین نیاز داریم تا این عبارت را ارزیابی کند و بعد از علامت = نتیجه را نمایش دهد. عملیات تقسیم فقط با اعداد صحیح سروکار ندارد.

اجازه دهید الزامات برنامه Interpretator را فرموله کنیم، که آن را جهانی تر از گزینه مورد بحث در بخش می کند. 3.16:

1. عملوندهای a و b می توانند اعداد صحیح مثبت چند ارزشی در MaxInt باشند.

2. بین عناصر خط و همچنین در ابتدا و انتهای آن می توان فاصله هایی وجود داشته باشد.

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

4. کنترل معنایی انجام می شود: خط باید طبق طرح الف ساخته شود

b =. اگر برخی از عناصر گم شده باشند یا ترتیب آنها نامرتب باشد، خطا دارد.

5. دامنه مقادیر عملوندها و نتیجه نظارت می شود (نباید از MaxInt فراتر رود).

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

1. یک رشته وارد کنید.

2. کنترل نحوی (آیا کاراکترهای غیرقانونی وجود دارد؟).

3. کنترل معنایی (آیا عبارت به درستی ساخته شده است؟).

4. جداسازی عملوندها. بررسی عملوندها برای محدوده معتبری از مقادیر. تبدیل به اعداد صحیح

5. عملیات را انجام دهید. بررسی نتیجه برای محدوده قابل قبول.

6. خروجی نتیجه.

ما مراحل 2، 3، 4، 5 را به عنوان وظایف فرعی سطح اول در نظر می گیریم و آنها را (و زیر روال های آینده) به ترتیب Sintax، Semantika، Operand، Calc نام گذاری می کنیم.

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

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

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

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

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

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

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

پایان

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

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

در شبه کد، این دستور به طور کلی به این صورت نوشته می شود:

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

که<действие 1>

در غیر این صورت<действие 2>

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

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

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

که<действие >

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

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

دستور را با پیش شرط تکرار کنیددر شبه کد به صورت زیر نوشته شده است:

خدا حافظ<условие >

تکرار<действие>

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

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



تکرار دستور با شرط postبه همین ترتیب اجرا می شود، فقط شرط بعد از اجرای دستور بررسی می شود و زمانی که شرط برآورده نشده باشد، دستور تکرار می شود. تکرار انجام می شود قبل ازشرط (به همین دلیل است که به این نوع حلقه حلقه "قبل از" نیز می گویند.



تکرار

عمل

قبل ازوضعیت

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

حلقه با یک پارامتر (تعداد تکرار شناخته شده)

برایپارامتر:= N1 قبل از N2 انجام دادن

عمل

N1، N2 - عباراتی که شروع و را تعیین می کنند مقادیر نهاییپارامتر چرخه، N3 - مرحله تغییر پارامتر چرخه.

اگر N1< N2, то N3 >0.

اگر N1>N2 پس N3<0.

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

رویکرد ساختاری مستلزم رعایت استانداردی در نمایش نمودارهای جریان الگوریتم‌ها است. آنها باید همانطور که در تمام مثال های ارائه شده انجام شد ترسیم شوند. هر ساختار اساسی باید داشته باشد یک ورودیو یک خروجی. خواندن یک فلوچارت غیر استاندارد دشوار است و وضوح و معنای الگوریتم از بین می رود.

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

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

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

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

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

ساختارهای یک سطح تودرتو در همان سطح عمودی نوشته می شوند (از همان موقعیت در خط شروع می شوند).

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

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

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

الگوریتم هایی برای حل این گونه مسائل فرعی نامیده می شوند الگوریتم های کمکیدر این رابطه دو راه ممکن برای ساخت الگوریتم وجود دارد:

"بالا به پایین" - ابتدا الگوریتم اصلی ساخته می شود، سپس الگوریتم های کمکی.

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

رویکرد اول روش نیز نامیده می شود جزئیات منسجم , دومین - مونتاژ روش.

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

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

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

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

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

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

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

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

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

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

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

تست- این یک نوع حل مشکل است که نتایج آن از قبل مشخص است. به عنوان یک قاعده، یک مورد آزمایشی صحت برنامه را ثابت نمی کند. برنامه نویس باید یک سیستم آزمایشی ارائه کند و یک برنامه آزمایشی برای آزمایش جامع کل برنامه بسازد.

برنامه با کیفیت به هیچ وجهنباید تمام شود اضطراری.

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

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

ماهیت روش در بالا توضیح داده شد. ابتدا مشکل اصلی تحلیل می شود. وظایف فرعی را مشخص می کند. سلسله مراتبی از چنین وظایف فرعی ساخته شده است (شکل 48).

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

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

به جای a و b اعداد اعشاری وجود دارد. آیکون

یکی از علائم عملیات نشان داده شده است: +، -، *. ما به ماشین نیاز داریم تا این عبارت را ارزیابی کند و بعد از علامت = نتیجه را نمایش دهد. عملیات تقسیم فقط با اعداد صحیح سروکار ندارد.

اجازه دهید الزامات برنامه Interpretator را فرموله کنیم، که آن را جهانی تر از گزینه مورد بحث در بخش می کند. 3.16:

1. عملوندهای a و b می توانند اعداد صحیح مثبت چند ارزشی در MaxInt باشند.

2. بین عناصر خط و همچنین در ابتدا و انتهای آن می توان فاصله هایی وجود داشته باشد.

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

4. کنترل معنایی انجام می شود: خط باید طبق طرح الف ساخته شود

b =. اگر برخی از عناصر گم شده باشند یا ترتیب آنها نامرتب باشد، خطا دارد.

5. دامنه مقادیر عملوندها و نتیجه نظارت می شود (نباید از MaxInt فراتر رود).

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

1. یک رشته وارد کنید.

2. کنترل نحوی (آیا کاراکترهای غیرقانونی وجود دارد؟).

3. کنترل معنایی (آیا عبارت به درستی ساخته شده است؟).

4. جداسازی عملوندها. بررسی عملوندها برای محدوده معتبری از مقادیر. تبدیل به اعداد صحیح

5. عملیات را انجام دهید. بررسی نتیجه برای محدوده قابل قبول.

6. خروجی نتیجه.

ما مراحل 2، 3، 4، 5 را به عنوان وظایف فرعی سطح اول در نظر می گیریم و آنها را (و زیر روال های آینده) به ترتیب Sintax، Semantika، Operand، Calc نام گذاری می کنیم.

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

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

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

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

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

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

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

نوع درس: درسی برای تثبیت دانش و یادگیری مطالب جدید.

نوع درس: درس ترکیبی (سخنرانی و تمرین).اهداف درس: آموزش عمومی:

ایجاد ایده در بین دانش آموزان در مورد مفاهیم اساسی موضوع: فرمان شاخه، فرم ناقص فرمان شاخه.

توسعه مهارت در توسعه الگوریتم ها با انشعاب در GRIS "Strelochka"؛

آموزشی:

توسعه دید اطلاعاتی پدیده ها و فرآیندهای دنیای اطراف؛

آموزشی:

پرورش فرهنگ اطلاعاتی دانش آموزان، توجه، دقت، انضباط، پشتکار؛

پرورش علایق شناختی دانش آموزان

ساختار درس:

من لحظه سازماندهی (2 دقیقه)

با درود. بررسی افراد حاضر پیام موضوع درس

II

نظرسنجی کتبی 2 گزینه کاری

III

با استفاده از ارائه توضیح دهید

نمونه ای از یک کار با دو مرحله از جزئیات

توضیح با استفاده از ارائه "نمایش الگوریتم با انشعاب "Ornament" در محیط اجرایی Strelochka."

IV

V . خلاصه درس (2 دقیقه)

VI . تکالیف (1 دقیقه)

در طول کلاس ها:

من .زمان سازماندهی

موضوع درس: " انشعاب و جزئیات متوالی

موضوعات اصلی پاراگراف:

فرمان شعبه؛
♦ شکل ناقص انشعاب.
♦ نمونه ای از یک کار با دو مرحله از جزئیات.
(اسلاید 2)

II . به روز رسانی دانش (5 دقیقه)

تست در مورد موضوع:الگوریتم های چرخه ای

انتخاب 1

1. در کدام یک از شکل ها شرایط بررسی شده است:

2. الگوریتم چرخه ای:


    nc
    گام
    kts

    تا زمانی که یک لبه جلوتر باشد، تکرار کنید
    nc
    گام
    دور زدن
    kts

    شروع
    گام
    باهم

    nc
    گام
    kts

4. بدنه حلقه به صورت زیر است:

    روش گرافیکی برای توصیف الگوریتم

    این مجموعه ای از دستورالعمل ها است که ترتیب اقدامات مجری را برای دستیابی به نتیجه حل یک مسئله در تعداد محدودی از اقدامات توصیف می کند.

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

5. ساختار چرخه را ترسیم کنید (بلوک دیاگرام)

تست در مورد موضوع:الگوریتم های چرخه ای

گزینه 2

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

2. چرخه این است:

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

    روش گرافیکی برای توصیف الگوریتم

    این یک ساختار الگوریتمی است که در آن یک (یا چند) دستور بارها تکرار می شود.

    این مجموعه ای از دستورالعمل ها است که ترتیب اقدامات مجری را برای دستیابی به نتیجه حل یک مسئله در تعداد محدودی از اقدامات توصیف می کند.

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

    شروع
    گام
    باهم

    nc
    گام
    kts

nc

گام

دور زدن

kts

    تا زمانی که یک لبه جلوتر باشد، تکرار کنید

nc

گام

kts

4. بلوک دیاگرام عبارت است از:

    دنباله ای از دستورات موجود در ساختار الگوریتمی "چرخه".

    روش گرافیکی برای توصیف الگوریتم

    این مجموعه ای از دستورالعمل ها است که ترتیب اقدامات مجری را برای دستیابی به نتیجه حل یک مسئله در تعداد محدودی از اقدامات توصیف می کند.

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

5. برنامه ای برای حلقه زدن الگوریتم بنویسید.

III . بخش تئوری (20 دقیقه)

فرمان شعبه

بیایید با یک تیم GRIS دیگر آشنا شویم. به آن دستور شعبه می گویند. فرمت فرمان شاخه به صورت زیر است:

اگر<условие>
که<серия 1>
در غیر این صورت<серия 2>
kv(اسلاید 3)

کلمه سرویس kv پایان یک شاخه را نشان می دهد.

مانند قبل، GRIS فقط می تواند دو شرط را بررسی کند: "آیا لبه ای در پیش است؟" یا "آیا حاشیه ای در پیش نیست؟"<Серия>- این یک یا چند دستور است که از یکدیگر پیروی می کنند. اگر<условие>عادلانه است، پس راضی است<серия 1>، در غیر این صورت -<серия 2>. یک مثال در شکل نشان داده شده است. 5.12.

(اسلاید 4)

این انشعاب کامل نامیده می شود.

فرم انشعاب ناقص

در برخی موارد، یک فرم ناقص از دستور شعبه استفاده می شود (شکل 5.13). مثلا:

اگر لبه ای در پیش باشد
بعد بپیچ
kv

(اسلاید 4)

یک دستور شعبه ناقص دارای فرمت زیر است:

اگر<условие>
که<серия>
kv

اینجا<серия>اجرا می شود اگر<условие>نمایشگاه.اسلاید 5)

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

نمونه ای از یک کار با جزئیات دو مرحله ای

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

(اسلاید 6)

بیایید رویه‌ای را که زنجیره‌ای از مربع‌ها را از لبه به لبه فیلد رسم می‌کند ROW بنامیم. بیایید رویه ای را که یک مربع ترسیم می کند، SQUARE نامگذاری کنیم. ابتدا بیایید برنامه اصلی را بنویسیم.

برنامه تزیین
شروع
یک ردیف بسازید
دور زدن
یک ردیف بسازید
دور زدن
یک ردیف بسازید
دور زدن
یک ردیف بسازید
باهم(اسلاید 7)

حالا بیایید رویه های ROW و SQUARE را بنویسیم:

(اسلاید 8)

روش ROW شامل یک شاخه ناقص در بدنه حلقه است. ساختار چنین الگوریتمی را می توان به این صورت نامید: یک حلقه با انشعاب تو در تو.

در شکل شکل 5.15 بلوک دیاگرام رویه SERIES را نشان می دهد.

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

اکنون تمام دستورات کنترل اجراکننده گرافیکی را می دانید. آنها را می توان به سه گروه تقسیم کرد: دستورات ساده; دستور فراخوانی رویه؛ تیم های ساختاری گروه سوم شامل دستورات حلقه و شاخه است.

(اسلاید 9)

IV . تثبیت دانش (15 دقیقه)

توسعه الگوریتم "زیور آلات".

V . خلاصه درس (2 دقیقه)

ارزیابی کار دانش آموزان در کلاس.

VI . تکالیف (1 دقیقه)

§31، سؤالات. آماده شدن برای آزمون(اسلاید 10)

سوالات و وظایف

1. جزئیات گام به گام چیست؟
2. الگوریتم های کمکی آخرین سطح جزئیات از چه دستوراتی می توانند تشکیل شوند؟
3. فرمت دستور شعبه چیست؟ چه اقدامات مجری را تعیین می کند؟
4. فرق انشعاب کامل با انشعاب ناقص چیست؟
5. با استفاده از جزئیات گام به گام، برنامه هایی را برای کنترل عملکرد گرافیکی برای حل وظایف زیر ایجاد کنید:
کل میدان را به صورت افقی بکشید خطوط نقطه چین;
در هر چهار گوشه میدان مربع بکشید.
کل زمین را به یک مربع با ضلع برابر با زمین بکشید.

>> انفورماتیک: شاخه بندی و جزئیات متوالی الگوریتم

§ 31. انشعاب و جزئیات متوالیالگوریتم

موضوعات اصلی پاراگراف:

♦ فرمان شاخه؛
♦ شکل ناقص انشعاب.
♦ نمونه ای از یک کار با جزئیات دو مرحله ای.

فرمان شعبه

بیایید با یک تیم GRIS دیگر آشنا شویم. به آن دستور شعبه می گویند. فرمت فرمان شاخه به صورت زیر است:

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

کلمه سرویس kv پایان یک شاخه را نشان می دهد.

مانند قبل، GRIS فقط می تواند دو شرط را بررسی کند: "آیا لبه ای در پیش است؟" یا "آیا حاشیه ای در پیش نیست؟"<Серия>- این یک یا چند دستور است که از یکدیگر پیروی می کنند. اگر<условие>عادلانه است، پس راضی است<серия 1>، در غیر این صورت -<серия 2>. یک مثال در شکل نشان داده شده است. 5.12.

این انشعاب کامل نامیده می شود.

فرم انشعاب ناقص

اگر لبه ای در پیش باشد
بعد بپیچ
kv


اگر<условие>
که<серия>
kv

اینجا<серия>اجرا می شود اگر<условие>نمایشگاه.

بیایید آخرین، نسبتاً پیچیده را بسازیم برنامهبرای GRIS. در این مثال، خواهید دید که استفاده از روش جزئیات متوالی، حل برخی از مسائل «معمایی» را آسان‌تر می‌کند.

نمونه ای از یک کار با جزئیات دو مرحله ای

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

بیایید رویه‌ای را که زنجیره‌ای از مربع‌ها را از لبه به لبه فیلد رسم می‌کند ROW بنامیم. بیایید رویه ای را که یک مربع ترسیم می کند، SQUARE نامگذاری کنیم. بیایید اول اصلی را بنویسیم برنامه

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

حالا بیایید رویه های ROW و SQUARE را بنویسیم:

رویه ROW شامل یک شاخه ناقص در بدنه حلقه است. ساختار چنین الگوریتمی را می توان به این صورت نامید: یک حلقه با انشعاب تو در تو.

در شکل 5.15 داده شده است نمودار بلوکیرویه های SERIES.

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

اکنون تمام دستورات کنترل اجراکننده گرافیکی را می دانید. آنها را می توان به سه گروه تقسیم کرد: دستورات ساده. دستور فراخوانی رویه؛ تیم های ساختاری گروه سوم شامل دستورات حلقه و شاخه است.

به طور خلاصه در مورد اصل مطلب

دستور شعبه دارای فرمت زیر است:

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

اگر<условие>درست است، سپس دستورات تشکیل دهنده<серию 1>، اگر نادرست است، پس -<серию 2>.

یک دستور شعبه ناقص دارای فرمت زیر است:

اگر<условие>
که<серия>
kv

اگر شرط درست باشد، ارضا می شود<серия>، اگر غلط باشد، بلافاصله به دستور بعدی الگوریتم منتقل می شود.

ساختن الگوریتم های پیچیده از طریق جزئیات گام به گام راحت است.

سوالات و وظایف

1. جزئیات گام به گام چیست؟
2. الگوریتم های کمکی آخرین سطح جزئیات از چه دستوراتی می توانند تشکیل شوند؟
3. فرمت دستور شعبه چیست؟ چه اقدامات مجری را تعیین می کند؟
4. فرق انشعاب کامل با انشعاب ناقص چیست؟
5. با استفاده از جزئیات گام به گام، برنامه هایی را برای کنترل عملکرد گرافیکی برای حل وظایف زیر ایجاد کنید:
کل میدان را با خطوط نقطه چین افقی بکشید.
در هر چهار گوشه میدان مربع بکشید.
کل زمین را به یک مربع با ضلع برابر با زمین بکشید.

آنچه باید از فصل 5 بیاموزید

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

I. Semakin، L. Zalogova، S. Rusakov، L. Shestakova، علوم کامپیوتر، کلاس نهم
ارسال شده توسط خوانندگان از سایت های اینترنتی

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

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

اگر اصلاحات یا پیشنهادی برای این درس دارید،

بهترین مقالات در این زمینه