Структуриран програмиране - studopediya

Структуриран програмиране - метод, включващи създаването на подобрени програми. Тя служи за организиране на проектирането и кодиране на програми, така че да се предотврати най-много грешки, логически и откриване на онези, които са допуснати.

Използването на език от високо ниво (като Fortran) програмисти може да се пишат програми за дълго няколко хиляди линии. Въпреки това, език за програмиране, който е лесно разбираем в кратката програма, когато става въпрос за големи програми, става нечетлив (и неконтролируема). Да се ​​отървем от тези неструктурирани програми идват след създаването през 1960 г. на структурирани езици за програмиране. Те включват Algol, Pascal и C.

Структуриран програмиране предполага точно определени контролни структури, програмни блокове, без GOTO инструкции автономни съчетания, които поддържат рекурсия и локални променливи. Главно в структурно програмиране, е възможността за разделяне на програмата на съставните си елементи. Чрез използването на структуриран програмиране, средният програмист може да се създаде и поддържа програма от над 50 000 реда дълги.

Структуриран програмиране е тясно свързана с такива понятия като "отгоре-надолу дизайн" и "модул".

метод отгоре-надолу дизайн включва последователно разграждане на функциите за обработка на данни за прости функционални елементи ( "отгоре-надолу").

В резултат, конструирана йерархична схема, показваща състава и vzaimopodchinenost отделните функции, който се нарича функционална структура на алгоритъм (FSA) приложението.

Функционалната структура на razrabatyaetsya на прилагане алгоритъм в следната последователност:

1) определя целите на автоматизация домейн и тяхната йерархия;

2) съставът е настроен приложение (задача за обработка), предлагащи цели;

3) пояснява естеството на връзката на приложения и техните основни характеристики (информация за решаване на проблеми, времето и честотата разтвори и т.н.) .;

4) са решени да отговорят на предизвикателствата на функции за обработка на данни;

5) да се разложи функции за обработка на необходимата структурна сложност реализира бъдещите инструменти.

Такава рамка заявление отразява най-важното - състава и връзката между функции за обработка на информация за изпълнението на приложения, въпреки че не разкриват изпълнението на всеки отделен логически функции, условия или честотата на техните разговори.

Разлагане трябва да бъде строго функционален характер, т.е. VEA отделен елемент, трябва да се опише пълен функция информационен обработка на информация, което предполага по определен начин за изпълнение на ниво софтуер.

Модул се основава на концепцията за модул - логично свързани помежду си множество функционални елементи, проектирани под формата на отделни софтуерни модули. Модул се разглежда в раздел 7.

Структуриран програмиране е да се получи правилната програма на някои прости логически структури. Тя се основава на строго доказана теорема, структуриране, който гласи, че който и да е правилна програма (с един вход, с един изход контур и без недостъпни команди) може да се запише като се използват само следните основни логически структури:

· Циклична (цикъл или повторение).

Тази теорема се формулира в 1966 и Boim Yakopini (Corrado Bohm, Guiseppe Jacopini). Основната идея на теоремата - да трансформира всяка част на програмата в един от трите основни структури, или комбинация от тях, така че неструктурирани част на програмата е намалял. След достатъчен брой от тези трансформации останалата част неструктурирана или изчезва или става ненужно. В теорема може да бъде доказано, че резултатът е програма, еквивалентна на оригинала и се споменава само основната структура.

Комбинация от редовни програми, получени с помощта на тези три основни структури също са редовни програми. Прилагането на повторение и вграждане на основните структури, можете да получите на програма за всякакъв размер и сложност. Когато се използват само тези структури премахва необходимостта от безусловни скокове и етикети. Така че понякога структурно кодиране се разбира в тесния смисъл като програмиране без «GOTO».

Езикът за програмиране C (C ++) Следните оператори се използват за реализиране на структурната кодиране:

Структурата на "след" (фиг. 5.1, а) се осъществява неразделна оператор, експресия, ASM-оператор и др.

Съединение изявление. или блока е даден списък (възможно е празен) на оператори затворени в скоби. Синтактически, блок се счита за един оператор, но това се отразява контекст идентификаторите на декларираните в него. Блоковете могат да имат всяка дълбочина на гнездене.

изявление Експресията е израз последвано от запетая. формат му е, както следва:

C ++ компилатор извършва оператори експресионни за оценка на експресията. Всички от страничните ефекти на това изчисление се завършени преди началото на следващия отчет. Повечето оператори изрази представляват присвояване отчети или функция повиквания (например, ФОРМАТ (), scanf ()). Специален случай е празен изявление съставена от единична точка и запетая (;). Празна изявление не прави нищо. Въпреки, че е полезно в случаите, когато C ++ синтаксис очаква присъствието на оператор, но не се изисква програмата (например, един безкраен цикъл за).

ASM-оператори, предоставят програмиране на ниво асемблер (с използване на указатели, побитови операции, работа на смени и т.н.). Използването на асемблер езика подпрограми за обработка на критични ситуации, повтарящи се операции, е възможно да се увеличи скоростта на оптимизация, без никакво подобрение на езика на високо ниво.

Структурата на "вилица" (фиг. 5.1, б, в) се осъществява от операторите избор. Избор на оператор. или поток оператори за контрол работят, за да изберете една от алтернативните клоните на програмата, като се проверяват за тази определена стойност. Има два вида на операторите избор: ако. останало и ключ.

Базовата оператора ако (. Фигура 5.1, б) има следния формат:


C ++ език, за разлика от, например, Pascal няма специално Булев тип данни. Условните проверки на ролята на този вид могат да играят целочислена променлива или тип показалка. Condition_expression трябва да бъдат написани в скоби. Този израз се оценява. Ако тя е нула (или празно в случай на тип показалка), ние казваме, че condition_expression невярно (фалшиво); в противен случай е вярно (истина).

Ако клаузата за друг отсъства и condition_expression дава стойност "истина", а след това на operator_esli_ "истина"; в противен случай тя се пренебрегва.

Ако предложението бъде настроен operator_esli_ "лъжа" и condition_expression дава стойност "истина", а след това на operator_esli_ "истина"; иначе тече operator_esli "лъжа".

Трансформации извършвани от указатели, така че стойността на показалеца може винаги да бъде правилно в сравнение с експресията на тип постоянно дава 0. По този начин, сравнение с нулев указател може да се направи под формата:

ако (! PTR). или (PTR = = 0).

Operator_esli_ "лъжа" и operator_esli_ "истина" може да бъдат себе си, ако операторите, която ви позволява да се организира всеки разкрой дълбочина условни тестове. При използване на вложени структури, ако. друго трябва да бъдат внимателни и да се гарантира, че правилният избор на изпълними оператори. Всяка неяснота в проектирането "друго" се допуска сравнение с последното останало намиращ се на нивото на устройството, ако не друго.

дава неправилно решение, тъй като иначе, независимо от стила на записа не се съпоставя с първия и втория, ако. Ето защо, правилното отчитане на последния ред трябва да бъде:

Въпреки това, с тези скоби може да се реализира и първия структура:

друг поставя ( "х = 1!"); // правилното решение

Отчетът за превключвател (.. виж фигура 5.1, в) използва следната основна формат:

превключвател (pereklyuchayuschee_vyrazhenie) case_operator;

Тя ви позволява да прехвърляте контрол на една от няколко оператори с етикет случай в зависимост от pereklyuchayuschego_vyrazheniya на стойност. Всеки оператор в case_operatore (включително празен оператор) може да се маркира с един (или повече) параметри на етикета:

случай konstantnoe_vyrazhenie_i: case_operator_i;

konstantnoe_vyrazhenie_i където всеки трябва да има уникално число (превърнати в pereklyuchayuschego_vyrazheniya тип) в рамките на превключвателя за пликоване оператор.

Позволено, за да има едно изявление превключвател повтори постоянна делото.

Операторът може да има не повече от един етикет по подразбиране:

След изчисление се извършва pereklyuchayuschego_vyrazheniya сравнение доведе с един от konstantnyh_vyrazheniy_i. Ако не се намери един мач, а след това се предава контрола case_operatoru_i Маркирани, за които е установено съвпадение. Ако не се намери мач и има етикет по подразбиране, управлението се насочва operatoru_umolchaniya. Ако не се намери един мач, и без етикет по подразбиране, без оператори не са изпълнени. За да се спре група от оператори за конкретна версия, трябва да използвате отчета за почивка.