Главная страница Библиотека (скачать книги) Скачать софт Введение в программирование Стандарты для C++ Уроки по C# Уроки по Python HTML Веб-дизайн Ассемблер в среде Windows ActiveX Javascript Общее о Линукс Линукс - подробно Линукс - новое Delphi Паскаль для начинающих Турбопаскаль Новости Партнеры Наши предложения Архив новостей |
Контроль исполнения программы, выполняемый программной средой, и его регулирование самой программой Нередко устройства компьютера (процессор, память, устройства ввода- вывода) и обслуживающие их программы программной среды не могут выполнить вычисления или доступ к информации в том виде, как этого требует пользовательская программа. При этом возникают так называемые исключительные ситуации, приводящие, как правило, к прерыванию процесса исполнения программы. Причиной прерываний могут быть также сбои и неисправности в аппаратных или программных средствах среды. Прерывания такого сорта обнаруживаются и идентифицируются средствами операционной среды. Система программирования воспринимает их и выполняет для каждого из них некоторый набор стандартных действий, в частности, приостанавливает процесс исполнения программы и выдает сообщение о причинах этого.
Кроме того, система программирования Турбо Паскаль (при компиляции программы и при ее исполнении) сама выполняет довольно обширный набор контролирующих действий, определяемых требованиями синтаксиса и семантики языка программирования. Перечислим основные контролирующие действия, которые могут выполняться программной средой (операционной системой и системой программирования) во время исполнения программы.
Помимо регулирования контролирующих действий, система позволяет выбирать режим выполнения ряда действий, влияющих на исполнение программы. Основные из них:
Поскольку эти действия часто нетривиальны, то накладные расходы (в смысле потребления ресурсов, таких, как время исполнения и оперативная память) могут быть очень велики. Средством разрешения этого конфликта в системе Турбо Паскаль является использование директив переключения, задаваемых в тексте программы, или соответствующих им параметров компилятора, задаваемых в меню Options/Compiler. Тем самым разработчику программы предоставляется возможность самому выбрать и определить для своей программы (при каждом ее запуске на компиляцию), необходимо ли выполнение системой того или иного действия. Для этого директивы переключения (или соответствующие параметры) задают одно из двух состояний - режимов выполнения или отключения соответствующих действий.
По смыслу назначение директив и параметров одинаково, отличие состоит только в способе задания и области влияния - директивы влияют на исполнение только данной программы, а параметры - на все программы, компилируемые с установленными параметрами. Контроль исключительных ситуаций, возникающих при исполнении программы, и задаваемые в программе реакции на них нужно рассматривать как управляющие действия программы, выполняемые ею при взаимодействии с программной средой.
Использование директив переключения Директивы переключения имеют вид комментария (заключены в скобки {}) и начинаются с символа $. Имя директивы обозначается некоторым ключевым словом (буквой). Состояние, назначаемое директивой, обозначается символами '+' или '-'. В начале исполнения каждой программы эти состояния устанавливаются как значения соответствующих параметров компилятора. Обычно они устанавливаются такими, чтобы гарантировать минимальный объем программы (объектного модуля) и минимум времени компиляции. Для задания таких состояний, которые действовали бы только в данной программе (переопределяя задаваемые параметрами), нужно разместить соответствующие директивы непосредственно в исходном тексте этой программы. Среди директив переключения различают глобальные, т.е. действующие на всю программу, и локачьные - действующие в определенном ее интервале. Первые должны быть помещены в начале программы (после ее заголовка), а вторые - в любом месте текста программы или программного модуля.
Рассмотрим те из директив переключения, которые особенно часто используются в пользовательских программах.
Средства ТурбоПаскаля для задания реакции программы на исключительные ситуации Для некоторых исключительных ситуаций каждая программа может определить собственную реакцию на них. Другими словами, программа может "перехватить" прерывание исполнения программы (которое выполнила бы система при обнаружении ею некорректностей) и выполнить собственную реакцию - некоторую специально заготовленную последовательность действий. Для задания реакции на исключительные ситуации в разных языках и системах применяются разные механизмы. Используемый в системе Турбо Паскаль механизм задания реакций на исключительные ситуации довольно ограничен и недостаточен. Он служит для задания реакции только на исключительные ситуации, возникающие при исполнении ряда стандартных подпрограмм. Тем не менее, его нужно активно использовать. Рассмотрим коротко приемы задания реакции на такие исключительные ситуации. Родственные стандартные подпрограммы объединены в группы, для каждой из которых зафиксирован набор исключительных ситуаций, которые могут возникать при исполнении подпрограмм этой группы. Все возможные ситуации именуются (нумеруются). Номер исключительной ситуации, возникшей при исполнении одной из подпрограмм группы, становится значением некоторой вспомогательной функции. Одно из значений этой функции соответствует не исключительной ситуации, а нормальному (правильному) завершению подпрограммы. Чтобы узнать, правильно ли выполнилась подпрограмма группы, достаточно непосредственно после ее выполнения проверить значение этой вспомогательной функции, предусмотрев в программе действия, которые нужно выполнить в случае обнаружения исключительной ситуации - анализ аргументов контролируемой подпрограммы, повторный запрос данных, выдачу сообщения, выполнение некоторой специальной ветви программы и т.п.
|
||
Библиотека программиста. 2009. |
|