زنگ

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

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

با استفاده از یک زبان سطح بالا (مانند Fortran) ، برنامه نویسان می توانند برنامه هایی را به طول چندین هزار خط بنویسند. با این حال ، یک زبان برنامه نویسی که هنگام برنامه های بزرگ به راحتی قابل درک است ، قابل خواندن نیست (و غیر قابل کنترل). خلاص شدن از شر چنین برنامه های بدون ساختار پس از ایجاد زبان های برنامه نویسی ساختاری در سال 1960 اتفاق افتاد. اینها شامل زبانهای Algol ، Pascal و C می باشد.

برنامه نویسی ساختاری شامل ساختارهای کنترل دقیقی تعریف شده ، بلوک های برنامه ، عدم وجود دستورالعمل های GOTO ، روالهای خودمختار که از بازگشت و متغیرهای محلی پشتیبانی می کنند. برنامه نویسی ساختاری اصلی برای تقسیم برنامه به عناصر تشکیل دهنده آن است. با استفاده از برنامه نویسی ساختاری ، یک برنامه نویس متوسط \u200b\u200bمی تواند برنامه هایی با طول بیش از 50،000 خط ایجاد و نگهداری کند.

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

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

در نتیجه ، یک نقشه سلسله مراتبی ساخته می شود که منعکس کننده ترکیب و تابع متقابل عملکردهای فردی است ، که نامیده می شود ساختار عملکردی الگوریتمبرنامه های کاربردی (FSA)

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

1) اهداف اتوماسیون منطقه موضوع و سلسله مراتب آنها تعیین می شود.

2) ترکیب برنامه ها (کارهای پردازش) ایجاد می شود که اجرای اهداف را تضمین می کند.

3) ماهیت رابطه برنامه ها و خصوصیات اصلی آنها (اطلاعات برای حل مشکلات ، زمان و فراوانی راه حل ها و غیره) را روشن می کند؛

4) توابع پردازش داده لازم برای حل مشکلات تعیین می شود.

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

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

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


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

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

· خطی (زیر)

غیر خطی (چنگال)؛

· چرخه ای (چرخه ، یا تکرار).

این قضیه در سال 1966 توسط Boim و Jacopini (Corrado Bohm ، Guiseppe Jacopini) تدوین شد. ایده اصلی قضیه این است که هر قسمت از برنامه را به یکی از سه ساختار اصلی یا ترکیب آنها تبدیل کنیم تا بخشی از ساختار نشده برنامه کاهش یابد. پس از تعداد کافی از چنین تحولاتی ، قسمت بدون ساختار باقی مانده یا ناپدید می شوند یا غیر ضروری می شوند. قضیه ثابت می کند که نتیجه برنامه ای است که معادل اصلی است و فقط از ساختارهای اساسی ذکر شده استفاده می کند.

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

در زبان الگوریتمی C (C ++) از اپراتورهای زیر برای اجرای کدگذاری ساختاری استفاده می شود:

· اپراتور مرکب؛

· اپراتور بیان؛

· اپراتور انتخاب؛

· اپراتور برچسب خورده؛

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

تکرار اپراتور؛

· Asm-operator؛

· اعلامیه (فقط در C ++).

ساختار را دنبال کنید(شکل 5.1 ، الف) توسط اپراتور مرکب ، عملگر بیان ، asm-operator و غیره پیاده سازی می شود.

بیانیه مرکب، یا بلاک ، لیستی است (احتمالاً خالی) از اپراتورهای محصور در بند {…} . به طور مصنوعی ، یک بلوک به عنوان یک اپراتور واحد در نظر گرفته می شود ، اما تأثیر می گذارد متن نوشته شناسه های اعلام شده در آن. بلوک ها می توانند هر عمق لانه سازی داشته باشند.

بیانیه بیان اصطلاحی است که به دنبال آن یک کلمه است. قالب آن به شرح زیر است:

<выражение>;

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

اپراتورهای Asm ارائه برنامه نویسی در سطح مونتاژ (با استفاده از نشانگرها ، عملیات بیتی ، عملیات تغییر مکان و غیره). با استفاده از زبان اسمبلر برای پردازش کارهای روزمره ، با تکرار عملیات ، می توانید سرعت بهینه سازی را بدون هیچ گونه پیشرفت در سطح سطح بالا افزایش دهید.

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

اساسی اگر بیانیه(شکل 5.1 ، ب) فرم زیر را دارد:

if (شرط_عباس) عبارت_if_true operator_if_false؛

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

اگر بند دیگر وجود نداشته باشد ، و شرط_عباس ارزیابی به صورت صحیح باشد ، دستور_if_ true اجرا می شود. در غیر این صورت نادیده گرفته می شود

اگر پیشنهادی داده شود if_operator نادرست است ، و شرط_expression را درست ارزیابی می کند ، سپس عملگر if_ درست است. در غیر این صورت ، بیانیه_ اگر غلط اجرا شود ، اجرا می شود.

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

if (! ptr) ... یا اگر (ptr \u003d \u003d 0) ....

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

به عنوان مثال ، ورودی:

اگر (x \u003d\u003d 1)

if (y \u003d\u003d 1) قرار می دهد ("x \u003d 1 و y \u003d 1")؛

دیگری قرار می دهد ("x! \u003d 1")؛

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

دیگری قرار می دهد ("x \u003d 1 و y! \u003d 1")؛

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

اگر (x \u003d \u003d 1)

if (y \u003d \u003d 1) قرار می دهد ("x \u003d و y \u003d 1")؛

دیگری قرار می دهد ("x! \u003d 1")؛ // راه حل صحیح

بیانیه تغییر دهید (شکل 5.1 ، ج را ببینید) از قالب اصلی زیر استفاده می کند:

تعویض (switch_expression) case_operator؛

این امکان را به شما می دهد تا بسته به مقدار switch_expression ، کنترل را به یکی از چندین مورد دارای برچسب منتقل کنید. هر جمله در بیانیه case (شامل یک بیانیه خالی) می تواند با یک (یا چند) برچسب متغیر مشخص شود:

موردثابت_عکس_پیشی : Case_operator_i؛

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

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

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

پیش فرض: default_operator

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

برنامه نویسی ساختاری

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

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

جبرنامه نویسی ساخت یافته مضامین اصول یک رویکرد سیستماتیک در فرآیند ایجاد و بهره برداری از نرم افزارهای رایانه ای. برنامه نویسی ساختاری مبتنی بر مفاد نسبتاً ساده زیر است:

    الگوریتم و برنامه باید به صورت مرحله ای (در مراحل) تدوین شوند.

    کار دشوار باید به قسمتهای نسبتاً ساده تقسیم شود که هر کدام یک ورودی و یک خروجی دارند.

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

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

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

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

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

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

"اجرا کردن ؛ اجرا کردن
»,

اگر یک سپس اجرا کنید در غیر این صورت اجرا کنید
»,

"تا زمان انجام دادن »,

جایی که - وضعیت؛ , ,
- اقدامات.

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

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

بسته به نوع و تعداد شرایط آزمایش شده ، آنها تشخیص می دهند:

انشعاب با یک شرط ساده (یک شرط بیان یک رابطه است)؛

انشعاب با یک شرایط مرکب (شرط یک بیان منطقی است)؛

انشعاب پیچیده (چندین شرط).

گزینه محاسبه تعیین شده با بررسی شرایط نامیده می شود شاخه.

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

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

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

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

گذر چرخه کامل تک از ابتدا تا انتها خوانده می شود تکرار.

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

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

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

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

    ورود به چرخه (تشکیل مقدار اولیه پارامتر چرخه)؛

    محاسبات در بدنه چرخه (محاسبه مقدار فعلی توابع ، تشکیل مقدار جدید پارامتر چرخه و همچنین عملیات کمکی)؛

    خروج از چرخه (بررسی شرط تعیین تکرار محاسبات یا خاتمه آنها).

مطابق با نوع کار (تغییر) پارامتر چرخه ، چرخه های حسابی به:

    چرخه با تغییر تحلیلی در پارامتر؛

    حلقه ها با تنظیم پارامتر جدول.

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

مشترک دو روش (استراتژی) توسعه برنامهمربوط به برنامه نویسی ساختاری:

- برنامه نویسی از بالا به پایین.

- برنامه نویسی از پایین به بالا.

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

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

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

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

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

زیر برنامه ها را می توان تو در تو لانه کرد - مجاز به فراخوانی یک زیر برنامه نه تنها از برنامه اصلی بلکه از هر برنامه دیگری است.

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

مزایای برنامه نویسی ساختاری:

- قابلیت اطمینان برنامه ها را افزایش می دهد (به دلیل ساختار خوب در حین طراحی ، برنامه تست آسان است و در حین اشکال زدایی مشکلی ایجاد نمی کند)؛

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

- کاهش زمان و هزینه توسعه نرم افزار;

- خوانایی برنامه ها را بهبود می بخشد.

آماده سازی قبل از کار

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

1. بیان مسئله؛

2. شکل گیری یک مدل ریاضی مسئله؛

3. انتخاب و توجیه روش راه حل؛

4- الگوریتم سازی فرآیند محاسباتی.

5. برنامه نویسی؛

6. اشکال زدایی و آزمایش برنامه؛

7. حل یک مشکل رایانه ای و تجزیه و تحلیل نتایج؛

8- نگهداری برنامه.

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

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

بیانیه مشکل باید شرایط زیر را تأمین کند:

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

ارائه مقادیر و ابعاد داده های منبع؛

تعیین تمام راه حل های ممکن ، شرایط انتخاب هر یک.

تعیین مرزهای کاربرد و اقدامات در صورت فراتر رفتن از آنها.

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

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

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

مدل ریاضی حاصل باید شرایط زیر را برآورده کند:

ابتدا ، یک مدل از داده های ورودی کامپایل می شود ، و سپس وابستگی های محاسبه شده.

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

تعیین تمام مقادیر موجود در وابستگی با نامهایی که ذات آنها را تعریف می کنند.

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

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

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

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

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

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

3. برخی از تکنیک های ساده می توانند اثربخشی برنامه را بهبود بخشند (یعنی تعداد عملیات انجام شده و مدت زمان اجرای برنامه را کاهش دهند). این روشها شامل موارد زیر است:

استفاده از عمل ضرب به جای نمایی؛

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

هنگام سازماندهی حلقه ها ، از متغیرها استفاده کنید و از عبارات استفاده نکنید که هر بار حلقه منتقل می شود ، به عنوان مرزهای شاخص 4؛

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

4- برنامه باید حاوی اظهارنظرهایی باشد که پیگیری رابطه منطقی و کارکردهای قسمتهای جداگانه آن را آسان می کند.

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

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

تأیید صحت همه عملیات الگوریتم؛

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

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

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

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

اشکال زدایی و آزمایش (آزمون آزمون - آزمون) - این دو به روشنی قابل تشخیص و بر خلاف هر مرحله دیگر:

در حین اشکال زدایی ، بومی سازی و حذف خطاهای نحوی و خطاهای کدگذاری صریح رخ می دهد.

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

آزمایش واقعیت خطاها را مشخص می کند و اشکال زدایی علت آن را می یابد. در سیستم های نرم افزاری مدرن (Turbo Basic ، Turbo Pascal ، Turbo C و غیره) ، اشکال زدایی اغلب با استفاده از ویژه انجام می شود ابزارهای نرم افزاریdebuggers نامیده می شود. این ابزارها به شما امکان می دهند رفتار داخلی برنامه را کشف کنید.

برنامه اشکال زدایی معمولاً ویژگی های زیر را ارائه می دهد:

اجرای مرحله به مرحله برنامه با توقف بعد از هر دستور (عملگر)؛

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

نصب در برنامه "نقاط کنترل" ، یعنی نقاطی که در آن برنامه به طور موقت اجرای آن متوقف می شود ، بنابراین می توانید نتایج میانی و غیره را ارزیابی کنید.

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

در آغاز فرآیند اشکال زدایی ، شما باید از داده های تست ساده استفاده کنید.

مشکلاتی که بوجود می آیند باید به روشنی تقسیم شود و کاملاً متناوب از بین برود.

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

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

داده های آزمون باید تأیید تمام شرایط خطای احتمالی را ارائه دهند:

هر شاخه از الگوریتم باید آزمایش شود.

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

آزمون اول باید تا حد امکان ساده باشد تا بررسی شود که آیا این برنامه اصلاً کار می کند یا خیر.

برای محاسبه مقدار محاسبات ، عملیات حسابی در آزمایشات باید بسیار ساده باشد.

تعداد عناصر دنباله ، صحت محاسبات تکراری ، تعداد گذر حلقه در مثالهای آزمایش باید به دلایل کاهش میزان محاسبه تعیین شود.

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

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

عوارض داده های آزمون باید به تدریج رخ دهد.

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

1. تحت شرایط عادی بررسی کنید. این شامل آزمایش بر اساس داده هایی است که مشخصه شرایط عملیاتی برنامه هستند.

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

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

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

اگر تعدادی از عناصر آنها از مقدار مشخص شده در بیانیه آرایه فراتر رود ، چگونه برنامه کار با آرایه ها رفتار خواهد کرد؟

اگر اعداد خیلی کوچک یا خیلی بزرگ باشند چه اتفاقی می افتد؟

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

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

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

پشتیبانی برنامه:

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

نهایی کردن برنامه برای حل مشکلات خاص؛

تهیه اسناد برای مسئله حل شده ، مدل ریاضی ، الگوریتم ، برنامه استفاده از آنها.

1Constant در برنامه نویسی - راهی برای آدرس دهی به داده هایی که اصلاح آنها توسط برنامه مورد نظر قرار نیست یا ممنوع است.

2 متغیر در برنامه نویسی ضروری - منطقه حافظه به نام یا در غیر این صورت آدرس داده شده است که می تواند برای دسترسی به داده ها استفاده شود. داده ها در یک متغیر (یعنی در یک آدرس حافظه معین) مقدار این متغیر نامیده می شود.

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

3 دستورالعمل یا عملگر (بیانیه انگلیسی) - کوچکترین بخش خودمختار یک زبان برنامه نویسی. فرمان یک برنامه معمولاً دنباله ای از دستورالعمل ها است.

بسیاری از زبانها (به عنوان مثال C) بین آموزش و تعریف تمایز قائل هستند. تفاوت در این است که دستورالعمل کد را اجرا می کند ، و تعریف یک شناسه ایجاد می کند (یعنی می توانید تعریف را به عنوان یک دستورالعمل تکالیفی در نظر بگیرید).

در زیر دستورالعمل های عمومی اساسی برای زبان های برنامه نویسی ضروری است.

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

سه روش وجود دارد که عناصر آرایه را می توان با اعداد صحیح غیر منفی فهرست کرد:

عنصر اول آرایه دارای شاخص 0 است.

عنصر اول آرایه دارای شاخص 1 است.

n ("فهرست شروع با n")

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

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

زبانها و فن آوری های برنامه نویسی

اولین برنامه ها نصب کلیدهای کلید در قسمت جلوی دستگاه محاسبات بود. بدیهی است که از این طریق می توان فقط برنامه های کوچک را تدوین کرد. با توسعه فن آوری رایانه ، زبان ماشین ظاهر شد که به کمک آن برنامه نویس می تواند دستورالعمل هایی را اجرا کند که با سلول های حافظه کار می کند و با استفاده کامل از قابلیت های دستگاه. با این حال ، استفاده از اکثر رایانه ها در سطح زبان ماشین مخصوصاً برای I / O دشوار است. بنابراین ، استفاده از آن باید کنار گذاشته شود. به عنوان مثال ، برای سازماندهی خواندن یک بلاک داده از فلاپی ، یک برنامه نویس می تواند از 16 دستور مختلف استفاده کند که هر یک از آنها به 13 پارامتر نیاز دارد مانند شماره بلوک در دیسک ، شماره بخش در مسیر و غیره که عملیات دیسک تمام شد ، کنترلر 23 برمی گردد. مقادیر منعکس کننده وجود و انواع خطاهایی که باید مورد تجزیه و تحلیل قرار گیرند. "کلمات" در زبان دستگاه گفته می شود دستورالعمل ها، هرکدام از آنها یک عمل ابتدایی را نشان می دهد پردازنده مرکزی، به عنوان مثال ، خواندن اطلاعات از یک سلول حافظه. هر مدل پردازنده مجموعه ای از دستورالعمل های دستگاه خود را دارد ، اگرچه بیشتر آنها یکسان هستند. اگر پردازنده A زبان پردازنده B را کاملاً درک کند ، آنگاه گفته می شود که پردازنده A با پردازنده B. سازگار است. پردازنده A با پردازنده A ناسازگار خواهد بود ، اگر A دارای دستورالعمل هایی باشد که توسط پردازنده B. به رسمیت شناخته نشده است. زبانها ، زبانهای ماشین گرا - از اسمبلرهای نزدیک به آنها استفاده می شود. مردم به جای دستورالعمل های ماشینی از دستورات mnemonic استفاده می کنند.

اما حتی کار با اسمبلر کاملاً پیچیده است و به آموزش خاصی احتیاج دارد ، به عنوان مثال ، برای پردازنده Zilog Z80 ، دستور ماشین 00000101 به پردازنده دستور می دهد که رجیستر B خود را به میزان یک کاهش دهد.در زبان مونتاژ ، این کار با عنوان DEC B نوشته می شود.

برنامه نویسی ساختاری

قدم بعدی در سال 1954 برداشته شد ، هنگامی که اولین زبان سطح بالا ، Fortran ، ایجاد شد. FORTRAN - ترانسفورماتور Formula) زبانهای سطح بالا با استفاده از برخی از کلمات زبان گفتاری و به طور کلی نمادهای ریاضی مورد قبول ، زبانهای طبیعی را تقلید می کنند. این زبان ها برای انسان راحت تر هستند ، با استفاده از آنها می توانید برنامه هایی را به طول چندین هزار خط بنویسید. با این وجود ، که به راحتی در برنامه های کوتاه قابل درک است ، این زبان هنگام صحبت از برنامه های بزرگ ، خواندن و مدیریت آن دشوار شد. راه حل این مشکل پس از اختراع زبان های برنامه نویسی ساختاری (Eng. زبان برنامه نویسی ساخت یافته) ، مانند Algol (1958) ، پاسکال (1970) ، C (1972).

برنامه نویسی ساختاری شامل ساختارهای کنترل دقیقی تعریف شده ، بلوک های برنامه ، عدم وجود دستورالعمل های پرش بی قید و شرط (GOTO) ، روالهای مستقل ، پشتیبانی از بازگشت و متغیرهای محلی است. ماهیت این رویکرد ، امکان تقسیم برنامه به عناصر تشکیل دهنده آن است. همچنین ایجاد شده است عملکردی (زبانهای کاربردی) (مثال: Lisp - انگلیسی پردازش LISt1958) و تیزر مغز زبانها (مثال: Prolog - انگلیسی برنامه نویسی در LOGic، 1972). اگرچه برنامه نویسی ساختاری ، در هنگام استفاده ، نتایج برجسته ای را به همراه می آورد ، حتی وقتی برنامه به طول مشخصی رسید ، غیرقابل اعتماد بود. برای نوشتن یک برنامه پیچیده تر (و طولانی تر) ، رویکرد جدیدی برای برنامه نویسی لازم بود.

در نتیجه ، اصول برنامه نویسی شی گرا در اواخر دهه 1970 و اوایل دهه 1980 توسعه یافت. OOP بهترین اصول برنامه نویسی ساختاری را با مفاهیم جدید و قدرتمند ترکیب می کند ، که اصول اولیه آن نامیده می شود محصور کردن ، چند شکل و وراثت. نمونه ای از زبان های شی گرا عبارتند از: Object Pascal ، C ++ ، Java و غیره. OOP به شما امکان می دهد برنامه ها را به بهترین شکل سازماندهی کنید ، مشکل را به بخش های آن متلاشی کنید و با هر یک جداگانه کار کنید. برنامه ای با زبانی شی گرا ، حل یک مشکل ، در واقع بخشی از جهان مربوط به این کار را توصیف می کند.

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

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

دنباله ساده؛

شرایط یا گزینه های دیگر؛

تکرارها ، یعنی حلقه ها و تکرارها.

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

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

برنامه نویسی ساختاری ، یعنی ماهیت ساختاری متن های برنامه ، کاملاً به این بستگی دارد که زبان برای این مورد استفاده می شود. البته این سؤال پیش می آید ، کدام یک مناسب ترین است. ابزارهای نوین توسعه نرم افزار بهترین زبانهایی هستند که یک رویکرد ساختاری برای برنامه نویسی را پیاده سازی می کنند. از رایج ترین آنها Basic ، Pascal و FoxBASE است. به عنوان مثال ، اجرای اصول تجسم یافته در مفهوم برنامه نویسی ساختاری عملاً غیرممکن است. این زبان بر نوشتن کد در سطح پایین متمرکز است.

برنامه نویسی ساختاری اساساً بر برقراری ارتباط با افراد و نه با ماشین ها متمرکز است و بنابراین به نوشتن برنامه هایی کمک می کند که یک راه حل روشن و ساده برای مسئله باشد. یک برنامه نویس باید از نظر سازه های اساسی اساسی فکر کند.

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

برای تسهیل در خواندن ، برنامه ها اغلب خطوط خالی بین بخش ها را اضافه می کنند. شایسته است متن برنامه را با شیفت نوشتن کنید تا بتوانید ترتیب اقدامات و تعداد پیوست ها را بخوانید.

پارادایم های برنامه نویسی

برنامه نویسی ساختاری - یک روش توسعه نرم افزار مبتنی بر ارائه برنامه در قالب یک ساختار سلسله مراتبی از بلوک. این در دهه 1970 توسط E. Dijkstroy و همکاران پیشنهاد شد.

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

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

روش ساخت نرم افزار ساختاری به عنوان "قویترین رسمی شدن دهه 70" شناخته شده است.

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

دانشنامه YouTube

    1 / 5

    ming برنامه نویسی ساختاری. اصول اساسی

    ✪ پاسکال از ابتدا [ch1]. برنامه اول

    ✪ درس 7. عبارات خروجی را بنویسید / بنویسید. برنامه ساده. برنامه نویسی پاسکال / پاسکال

    ✪ مبانی برنامه نویسی - # 5 - حساب و عبارات منطقی

    3 003. الگوریتم های طبقه بندی منطقی - K.V. ورونونسوف

    زیرنویس

تاریخ

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

ده سال بعد اوضاع به شدت تغییر کرد ، هنگامی که در مارس 1968 دیجکسترا نامه معروف خود "برو به بیانیه ای که مضر است" منتشر کرد. این یک سند واقعاً تاریخی است که تأثیر بسزایی در توسعه بیشتر برنامه نویسی داشته است.

سرنوشت خود سند بسیار جالب است. واقعیت این است که دایکسترا نامی کاملاً متفاوت به این مقاله داد: "پرونده علیه بیانیه برو به".

با این حال ، در زمان انتشار ، چیزی غیرقابل درک اتفاق افتاده است - مقاله به دلایلی به طرز مرموزی به "نامه ای به ویراستار" تبدیل شده و عنوان قبلی نیز همانطور مرموز از بین رفته است. واقعاً چه اتفاقی افتاد؟ دایكسترا تحولات اسرارآمیز یك مقاله را به نامه ای تنها سالها بعد ، یعنی در سال 2001 ، یك سال قبل از مرگ وی ، توضیح داد.

هدف

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

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

کد اسپاگتی

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

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

بیانیه برو

از دهه 1970 ، اپراتور انتقال بی قید و شرط goto در مرکز انتقادهای منظم و روزافزون قرار داشته است. استفاده نادرست و بی فکر از اپراتور goto در کد منبع برنامه منجر به "کد اسپاگتی" گیج کننده ، غیرقابل خواندن می شود. از متن چنین کد ، درک دستور اجرای و وابستگی متقابل قطعات تقریباً غیرممکن است.

برای اولین بار ، این دیدگاه در مقاله ای از Edsger Dijkstra "اپراتور Go To مضر تلقی می شود" بازتاب یافت. دایكسترا متوجه شد كه كیفیت كد برنامه به طور معكوس با تعداد عبارات Goto موجود در آن متناسب است. این مقاله به طور گسترده ای شناخته شد ، به عنوان یک نتیجه ، نظرات در مورد استفاده از اپراتور goto به طور قابل توجهی تجدید نظر شد. در "یادداشت های برنامه نویسی ساختاری" ، Dijkstra این واقعیت را اثبات کرد که برای کد بدون Goto ، بررسی صحت صوری بسیار ساده تر است.

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

برخی از راه های استفاده از goto می تواند باعث ایجاد مشکل در منطق اجرای برنامه شود:

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

استدلال ها علیه اپراتور goto چنان جدی بود که در برنامه نویسی ساختاری ، آن را به عنوان بسیار نامطلوب تلقی کردند. این در طراحی زبانهای برنامه نویسی جدید منعکس می شود. به عنوان مثال ، goto در Java و Ruby ممنوع است. در تعدادی از زبانهای مدرن ، هنوز هم به دلایل کارآیی در موارد نادری که استفاده از goto توجیه شود ، متوقف می شود. بنابراین ، Goto در Ada ، یکی از متفکرترین زبانها از نظر معماری در تاریخ ، حفظ شد.

با این حال ، در زبانهای سطح بالا که این اپراتور در آن حفظ شده است ، استفاده از آن ، به عنوان یک قاعده ، در معرض محدودیت های شدید است که مانع از خطرناک ترین روش های استفاده از آن می شود: به عنوان مثال ، انتقال کنترل از خارج از حلقه ، رویه یا عملکرد به داخل ممنوع است. استاندارد زبان C ++ با دور زدن ابتدای متغیر با استفاده از goto ممنوع است.

قضیه برنامه نویسی ساختاری

این قضیه توسط ریاضیدانان ایتالیایی کورادو بوم و جوزپه ژاکوپینی تدوین و اثبات شده است. آنها آن را در سال 1965 به زبان ایتالیایی و در سال 1966 به زبان انگلیسی منتشر کردند. در کنار این قضیه ، مقاله Böhm و Jacopini روش هایی را برای تبدیل الگوریتم های غیر ساختاری به موارد ساختاری با استفاده از مثال زبان برنامه نویسی P ′ ایجاد شده توسط Böhm شرح داده است. P ′ the اولین زبان برنامه نویسی کامل Turing و بدون عملگر goto است.

قضیه Böhm-Jacopini به زبان پیچیده و با علامت غیرمعمول نوشته شده است. اگر از اصطلاحات و نشانه های مدرن استفاده کنید ، این فرم به دست می آید:

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

  • توالی - نشان داده شده است:f THG ،
  • انشعاب - نشان داده شده است:اگر در این مرحله دیگر ،
  • چرخه - نشان داده شده است:تا زمانی که F ،

نمودار f ، g نمودارهای بلوک با یک ورودی و یک خروجی هستند ،

P - شرط ، THEN ، IF ، ELSE ، WHILE ، DO - کلمات کلیدی.

توضیح فرمول f THEN g به معنی زیر است: ابتدا برنامه f اجرا می شود ، سپس برنامه g اجرا می شود.

Boehm و Jacopini اصطلاح "برنامه نویسی ساختاری" را استفاده نکردند. با این وجود ، قضیه ای که آنها ثابت کردند (و تغییرات بعدی آن توسط نویسندگان مختلف) بعداً به عنوان "قضیه ساختاری" ، "قضیه ساختار" و "قضیه ساختاری" شناخته شدند.

اصول برنامه نویسی ساختاری

شکل گیری و توسعه برنامه نویسی ساختاری با نام Edsger Dijkstra همراه است.

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

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

اصل 3 در برنامه می توان ساختارهای کنترل اصلی را به هر طریقی تعبیه کرد. هیچ وسیله دیگری برای کنترل توالی عملیات ارائه نشده است.

اصل 4 تکرار قطعات برنامه می تواند به صورت مرتب شود کارهای روزمره (رویه ها و عملکردها) به همین روش (به شکل زیر برنامه) امکان تنظیم قطعات کاملاً منطقی از برنامه وجود دارد ، حتی اگر تکرار نشوند.

اصل 5 هر گروه از دستورالعمل های منطقی تکمیل شده باید به عنوان بلوک صادر شود. بلوک ها اساس برنامه نویسی ساختاری هستند.

یک بلوک یک قسمت منطقی از کد منبع است ، به عنوان مثال ، مجموعه ای از دستورالعمل هایی که به صورت ردیف در نوشته شده اند کد منبع برنامه ها. مفهوم مسدود کردن به این معنی است که باید از دستورالعملها به عنوان یک دستورالعمل واحد یاد شود. از بلوک ها برای محدود کردن دامنه متغیرها و توابع استفاده می شود. بلوک ها می توانند خالی یا یک لانه به یکدیگر باشند. مرزهای بلوک کاملاً مشخص است. به عنوان مثال ، در یک عبارت if ، بلوک با کد BEGIN..END (در پاسکال) یا محدود شده است پرانتز (...) (در C) یا تورفتگی (در پایتون).

اصل 6 تمام ساختارهای ذکر شده باید دارای یک ورودی و یک خروجی باشند.

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

اصل 7 تدوین برنامه به صورت گام به گام ، از بالا به پایین انجام می شود (روش بالا به پایین) .

روش بالا به پایین

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

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

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

زیر برنامه

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

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

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

مزایای برنامه نویسی ساختاری

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

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

وضوح و خوانایی برنامه ها

برنامه نویسی ساختاری ، خوانایی برنامه ها را تا حد زیادی تقویت می کند. ادوارد اوردون توضیح می دهد:

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

برعکس ، برنامه های ساختاری در سازمان و اجرای سازگار هستند.

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

برنامه نویسی ساختاری دو بعدی

فن آوری P برای تولید برنامه ها یا "فناوری برنامه نویسی دو بعدی" در ایجاد شده است. سیستم گرافیکی فناوری برنامه نویسی R در استانداردهای GOST 19.005-85 ، GOST R ISO / IEC 8631-94 و استاندارد بین المللی ISO 8631N ثابت شده است.

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

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

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

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

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

همچنین ببینید

یادداشت

  1. مایر B. کلاس را احساس کنید. یادگیری برنامه ریزی خوب با اشیاء و قراردادها. - مطابق. از انگلیسی - م.: INTUIT National Open University: BINOM. آزمایشگاه دانش ، 1390. - 775s. - س 208. - شابک 978-5-9963-0573-5
  2. E. Dijkstra. اظهارات Goto مضر تلقی می شود
  3. Dijkstra E. برو به بیانیه ای در نظر بگیرید که مضر است // ارتباطات ACM ، جلد 11 ، شماره. 3 ، مارس 1968 ، صص. 147-148. - انجمن ماشین آلات رایانه ، شرکت
  4. همچنین مطالب موجود از بایگانی Dijkstra را مشاهده کنید. E. W. Dijkstra Archive. نسخه های خطی Edsger W. Dijkstra. - گروه علوم کامپیوتر دانشگاه تگزاس در آستین
  5. نسخه خطی EWD1308 از بایگانی Dijkstra.
  6. رمزگشایی نسخه خطی EWD1308 از بایگانی Dijkstra. آنچه منجر به "یادداشت هایی در مورد برنامه نویسی ساختاری" شد - نونن ، 10 ژوئن 2001. - گروه علوم کامپیوتر. دانشگاه تگزاس در اوستین ، ایالات متحده آمریکا
  7. Linger R.، Mills H.، Witt B. تئوری و عملکرد برنامه نویسی ساختاری. - مطابق. از انگلیسی - م.: میر ، 1982.- 406. - س 7.
  8. جان ویلیسیدز ، کایل براون ، جرارد مززاروس AntiPatterns: راهنمای Survival. .

زنگ

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