я. p> Конструкції в програмі можуть комбінуватися один з одним так, як цього вимагає програма. Всяка програм, побудована в термінах цих конструкцій, може бути поступово перетворена в одну з цих конструкцій. Так реалізується ідея вкладеної структури, що є важливою в структурному програмуванні.
Програма, побудована таким чином, є модульною в строгому сенсі слова. Тому що, основне в модульному програмуванні - це можливість заміни окремого модуля його еквівалентом без наслідків у іншої частини програми.
Принципи структурного програмування реалізовані в багатьох мовах програмування. При програмуванні повинні використовуватися або звичайні конструктивні оператори для виконання в лінійному порядку, або перераховані раніше керуючі засоби вибору і повторення.
Структурні програми володіють багатьма властивостями, що полегшують пошук помилок. Тим самим підвищується надійність програм. Значення структурного програмування не вичерпується сказаним. По суті, це - дисципліна програмування, що представляє собою, поступове перетворення програмування з ремесла в науку. Найбільш очевидна вигода - зростання продуктивності і зменшення відсотка помилок.
Мови високого рівня дозволяють готувати програму в термінах більш відповідних самій задачі. При програмуванні мовою високого рівня не треба враховувати специфіку реалізації, не треба (або майже не треба) піклуватися про розподіл ресурсів. У процесі програмування зусилля зосереджуються на аналізі конструктивних коштів програми, на зв'язках між ними, на формуванні більш складних конструкцій. Різні мови високого рівня надають різні можливості по створенню правильних програм, але в будь-якому випадку ці можливості вище, ніж в мовах типу Асемблера.
Основні параметри, за яким можна порівнювати мови високого рівня, з метою вибрати "більш надійний "- читабельність підготовлених програм і відсутність особливостей мови, що провокують помилки.
Непроцедурного програм дозволяє піти від подібного (а значить, чреватого помилками) розписування послідовності дій для виконання того чи іншого фрагмента програми. Непроцедурного програмування фрагмента означає завдання специфікацій входу і виходу цього фрагмента без вказівки алгоритму перетворення. Інакше кажучи, програміст обумовлює, ЩО ТРЕБА ЗРОБИТИ, не зазначаючи ЯК ТРЕБА ЗРОБИТИ. Реалізація фрагмента за його специфікаціям виконується автоматично. Сама програма при цьому не змінюється. Прикладом методу підвищення Непроцедурного може служити використання макрозасобів - механізму отримання відкритих підпрограм, налаштованих на значення параметрів. Інший приклад - використання об'єктно-орієнтованих мов. Попередня й незалежна налагодженість стандартних алгоритмів, що залучаються для розшифровки специфікацій, дозволяє підвищити безпомилковість підготовленої програми.
Методи синтезу програм і автоматичного докази їх правильності орієнтуються на формальні методи, які дозволили б отримувати безпомилкові, абс...