Дмитрий Поляков - Программирование в среде Турбо Паскаль стр 6.

Шрифт
Фон

Программирование в среде Турбо Паскаль

Рис. 1.15

или из среды программирования при отключенном отладчике, то в случае ошибки ее выполнение прервется и на экране появится сообщение следующего вида:

Runtime error 200 at 20B0:8236

Ошибка выполнения 200 по адресу 20B0:8236

В нем содержится важная информация: номер ошибки и адрес команды, которая привела к ошибке. Воспользовавшись списком ошибок выполнения программ, можно по номеру ошибки определить ее вид. Например, ошибка 200 - это деление на ноль. Чтобы определить, в каком месте текста программы произошла ошибка, необходимо произвести следующие действия:

1) запомнить адрес, выданный в сообщении (лучше записать);

2) войти в систему Турбо Паскаль;

3) загрузить текст этой программы в редактор;

4) включить режим отладки (см. разд. 1.3.5.1);

5) откомпилировать программу (Alt+F9);

6) выбрать пункт Compile основного меню и в нем дать команду Find Error;

7) ввести запомненный (записанный) адрес в окна ввода адреса (рис. 1.16). После нажатия клавиши ввода в этом окне система быстро

Программирование в среде Турбо Паскаль

Рис. 1.16

- 26 -

определит место ошибки в тексте программы, и курсор редактора укажет на строку, в которой произошла ошибка.

1.3.4.7. Команда получения общего состояния Get Info. Выбрав этот пункт меню, можно открыть на экране новое окно, содержащее различную информацию о текущем состоянии системы и программы (рис. 1.17).

Дмитрий Поляков, Игорь Круглов - Программирование в среде Турбо Паскаль

Рис. 1.17

1.3.5. Пункт Options (установка параметров системы)

Этот пункт позволяет управлять характеристиками компилятора и самой среды Турбо Паскаль. Меню Options содержит семь пунктов (рис. 1.18).

Программирование в среде Турбо Паскаль

Рис. 1.18

Первые четыре опции - Compiler, Linker, Environment и Directories - имеют еще одно подменю, содержащее несколько директив. Остальные опции необходимы только в специальных ситуациях.

1.3.5.1. Установки компилятора Compiler. Меню, появляющееся при выборе этой команды, показано на рис. 1.19. Пункты в меню

- 27 -

Дмитрий Поляков, Игорь Круглов - Программирование в среде Турбо Паскаль

Рис. 1.19

устанавливают различные режимы работы компилятора, каждым из которых можно управлять двумя способами: изменением установок в этом меню или включением в текст программы директив компилятора.

Выражение "директива компилятора" означает, что инструкции даются компилятору во время обработки текста программы. Подробно о ее синтаксисе рассказывается в разд. 3.3 "Комментарии и ключи компиляции" и разд. 3.4 "Условная компиляция программ".

Режим проверки диапазонов Range Checking. Когда компиляция программы происходит в режиме Range Checking On (включен), исполняемый код формируется так, что при выполнении программы происходит контроль:

1) выхода индекса массива за его границы;

2) переполнения переменных типа String;

3) переполнения разрядной сетки числовых переменных;

4) некорректная инициализация данных типа "объект".

Как только происходит нарушение, программа прекращает свою работу и генерируется ошибка выполнения (Runtime error).

По умолчанию режим Range Checking находится в состоянии Off (выключен). Однако при отладке программы очень полезно включить этот режим (On), так как это увеличит ее эффективность. После отладки рекомендуется восстановить состояние Off.

Режим проверки стека Stack Checking. Стек - это область памяти, в которой программы обычно сохраняют значения локальных переменных во время работы процедур или функций.

- 28 -

Если программа была откомпилирована в режиме Stack Checking On, то компилятор включает в исполняемые коды программы проверки состояния стека при вызове процедур или функций. Если размер стека не достаточен, чтобы сохранить в нем локальные переменные вызываемой программы, то генерируется ошибка выполнения. По умолчанию этот режим устанавливается в состояние On.

Размер стека в Турбо Паскале по умолчанию принимается равным 16K. Для изменения этого значения используется опция Memory Sizes рассматриваемого подменю настройки компилятора.

Режим проверки ввода-вывода I/O Checking. В этом режиме компилятором генерируются коды проверки ошибок ввода-вывода. По умолчанию он включен, и программа будет генерировать ошибку выполнения. Под ошибкой ввода-вывода подразумевается любое аварийное прерывание при обращении к любому периферийному устройству центрального процессора ПЭВМ (чтение-запись на дисках, печать на принтере, ввод с клавиатуры и т.д.).

Обнаружение такой ошибки, так же как и всех других, обычно прекращает выполнение всей программы. Однако Турбо Паскаль поддерживает специальные средства обработки ошибок ввода-вывода. Подробно они будут описаны в разд. 12.11 "Обработка ошибок ввода-вывода".

Режим генерации "дальних" вызовов Force Far Calls. Этот режим применяется в специальных приложениях программирования. "Дальний" вызов (длинный адрес, Far Call) - это полная адресация для части процедур и функций, размещаемых в разных сегментах памяти отдельно от основного программного сегмента. ("Дальний" вызов содержит в себе, кроме относительного адреса сегмента, необходимого внутри 64-килобайтного блока, еще и базовый адрес внешнего сегмента.)

Обычное состояние режима Force Far Calls – Off. При этом компилятор генерирует только "ближние" (near) вызовы. Если же состояние – On, то дальние вызовы генерируются для всех процедур и функций программы. Например, дальние вызовы обязательны при генерации оверлейного кода (см. гл. 18 "Модуль Overlay").

Режим генерации оверлейных кодов Overlay Allowed. Оверлеи - это части кода программы, которые во время ее выполнения могут перекрываться. Их использование позволяет системе выполнять программы, размер которых больше, чем размер всей доступной памяти в компьютере. Оверлеи загружаются в память в тот момент, когда становятся нужны находящиеся в них программы, и после завершения своей работы выгружаются из памяти, освобождая место для другого оверлея.

- 29 -

Чтобы получить модуль, который планируется использовать как оверлейный, необходимо включить этот режим. По умолчанию состояние Overlay Allowed - Off. Более подробно этот вопрос будет рассмотрен в гл. 18 "Модуль Overlay".

Опция установки единицы обработки данных Align Data. Эта опция управляет режимом доступа к данным в компьютерах на базе микропроцессоров семейства 80Х86. По умолчанию используется режим Word как наиболее эффективный. Рекомендуем использовать режим по умолчанию. Более подробно об этом см. Приложение 2.

Режим проверки строк-переменных Var-String Checking. Этот режим определяет, как точно компилятор будет проверять значения типа String, передаваемые в процедуры и функции. По умолчанию он имеет значение Strict (точно). При этом строковые переменные, которые передаются по ссылке, должны точно соответствовать типу формальных VAR-параметров, определенных в заголовке вызываемых процедур или функций. Если это не так, то генерируется ошибка выполнения. Если же этот режим имеет значение Relaxed (ослабленная), то длина строкового аргумента передается процедуре или функции без сравнения ее с длиной формального параметра.

Режим проведения логических операций Boolean Evolution. Этот режим определяет метод работы Турбо Паскаля с логическими выражениями, использующими операторы AND и OR. Он имеет два состояния. Первое по умолчанию - Short Circuit (короткие вычисления). При этом коды формируются по следующим правилам:

1. В выражении "a AND b", если "f=False", то значение b не вычисляется.

2. В выражении "a OR b", если "a=True", то значение b не вычисляется.

И наоборот, полное вычисление операндов в логических выражениях производится при втором состоянии - Complete (полностью).

Режим использования сопроцессора Numeric Processing. Язык Турбо Паскаль может генерировать коды, которые управляют работой сопроцессоров 8087 и 80287. Если такой микропроцессор установлен на применяемой ПЭВМ, то программы, использующие эти коды, будут работать быстрее, особенно если в них много математических расчетов, и могут использовать расширенный набор типов с плавающей точкой (см. разд. 9.5).

Режим Numeric Processing определяет, будет или нет использоваться расширенный набор типов данных. Если режим включен в состояние Software (программное исполнение), то нет; если же он - в состоянии 8087/80287, то да. По умолчанию режим Numeric Processing устанавливается в Software.

- 30 -

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке