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


Первые программы состояли из нескольких десятков — сотен машинных команд. Программные комплексы и информационные системы включали в себя от нескольких десятков тысяч до миллионов операторов на языках высо­кого уровня. По мере увеличения объема программных средств на первое место по влиянию на скорость их разра­ботки вышел процесс отладки, т.е. обнаружение и ис­правление допущенных ошибок. Практика показала, что написать более-менее большую программу без ошибок прак­тически невозможно. Более того, даже во время эксплуа­тации готовых программ обнаруживаются пропущенные при отладке ошибки. Ошибки делятся на несколько кате­горий.

Самая простая — синтаксические ошибки. Они связаны с неверным написанием конструкций языка и обнаружи­ваются сразу, в тот момент, когда компилятор пытается перевести программу на машинный язык

Вторая категория ошибок связана с компоновкой про­граммы, т.е. стадией построения программы из отдельных оттранслированных модулей. Ошибки, в основном, здесь связаны с неверными именами процедур или функций.

Если исправлены все синтаксические ошибки и ошибки компоновки, то программа начинает выполняться (стадия 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; просмотров: 2531;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.