Структурное программирование
Первые программы состояли из нескольких десятков — сотен машинных команд. Программные комплексы и информационные системы включали в себя от нескольких десятков тысяч до миллионов операторов на языках высокого уровня. По мере увеличения объема программных средств на первое место по влиянию на скорость их разработки вышел процесс отладки, т.е. обнаружение и исправление допущенных ошибок. Практика показала, что написать более-менее большую программу без ошибок практически невозможно. Более того, даже во время эксплуатации готовых программ обнаруживаются пропущенные при отладке ошибки. Ошибки делятся на несколько категорий.
Самая простая — синтаксические ошибки. Они связаны с неверным написанием конструкций языка и обнаруживаются сразу, в тот момент, когда компилятор пытается перевести программу на машинный язык
Вторая категория ошибок связана с компоновкой программы, т.е. стадией построения программы из отдельных оттранслированных модулей. Ошибки, в основном, здесь связаны с неверными именами процедур или функций.
Если исправлены все синтаксические ошибки и ошибки компоновки, то программа начинает выполняться (стадия Run). Однако эта стадия может быть прервана недопустимой операцией (например, делением на ноль), и в этом случае говорят об ошибках времени выполнения {RunTime Errors). Либо программа досчитала до конца, но полученные результаты оказываются неверными. Вызвать это могут ошибки алгоритма, либо ошибки организации межмодульных связей, ошибки преобразования типов данных, либо простые описки (например, пропущен ноль при записи числа 100 и программа использовала в вычислениях 10). Ошибки времени выполнения обнаруживаются решением серии тестовых примеров {прогонка программы), результат для которых известен заранее. Как правило, время, затраченное на поиск подобных ошибок, существенно превышает время написания самой программы и исправления синтаксических ошибок. Развитие концепции программирования тесно связано с проблемой снижения брака при написании программы.
Разрабатываются теоретические основы структурного программирования, теория доказательства правильности программы, доказательное программирование.
Концепция структурного программирования предполагает такой научно обоснованный подход к построению программы и к возможностям языка программирования, при котором будет существенно снижен объем возможных ошибок. Существенное развитие концепции достигнуто в языке структурного программирования Pascal [15]. Суть структурного программирования состоит в том, что данные представляют собой, прежде всего, абстракции реальных объектов и формулируются предпочтительно как абстрактные структуры, которые могут не иметь конкретной реализации в языке программирования. В процессе конструирования программы представление данных постепенно уточняется вслед за уточнением алгоритма.
Язык структурного программирования должен предоставлять возможность конструирования собственных типов данных. На низшем уровне стоят предопределенные в языке фундаментальные структуры (например: скалярные типы, запись, массив и множество). Из фундаментальных структур, как из молекул, строят усложненные структуры. Переменные фундаментальной структуры могут менять только значение, сохраняя тип или множество допустимых значений и занимаемый ими размер. Усложненные структуры характеризуются изменением не только значения, но и самой формы представления, составом входящих в них фундаментальных структур. Динамическое управление памятью реализуется на уровне указателей, и динамические данные объединяются в древовидную структуру (деревья).
Кроме того, предъявляются определенные требования к типизации данных, за счет чего тип любого выражения или переменной можно определить без необходимости проведения вычислений, т.е. на стадии трансляции. При этом можно избежать большого количества трудно находимых ошибок времени выполнения за счет выявления их на стадии трансляции программы.
Концепция структурного программирования предполагает не только использование специальных языков и применения определенного стиля программирования. В первую очередь это — философия программирования, которая затрагивает и такой аспект, как методика обученияпрограммистов. Отмечается, что программирование представляет собой обширную и разнообразную деятельность, часто требующей сложной умственной работы. Неверно считать, что программирование можно свести к использованию готовых рецептов, основанных на систематическом описании простейших блоков. У учеников необходимо развивать способность творчески мыслить, и здесь чрезвычайно важна роль учителя, показывающего, как он делает то-то и то-то. Творчество не подвластно канонам, методикам и технологиям. В качестве метода обучения принимается тщательный выбор и рассмотрение характерных примеров. Необходимо рассматривать сложные и длинные программы, какие часто и встречаются на практике и лучше всего подходят для выявления того неуловимого, но важного свойства, которое называется стилем программирования. Разбор длинных программ служит упражнением в искусстве их чтения, которое не менее важно, чем умение писать программы.
Контрольные вопросы и задачи
5.1. Назовите и кратко охарактеризуйте части команды программы.
5.2. Основой для программы функционирования УОДИ является ____ ; дайте его определение.
5.3. Что понимается под программированием в кодах?
5.4. Что Вы знаете о языке ассемблер?
5.5. Какие языки программирования называют машинно-независи-мыми?
5.6. Каким образом осуществляется «перевод» программы, написанной на алгоритмическом языке в объектный код, понятный компьютеру?
5.7. Что понимается под модульным программированием и отдельным модулем?
5.8. Что Вы знаете о структурном программировании?
Глава 6
Дата добавления: 2016-07-18; просмотров: 2555;