
- •Лекция № 2.
- •Тема: Интегрированная среда разработки Free Pascal (ИСР).
- •1. Введение в ИСР.
- •2. Этапы подготовки программы в ИСР.
- •Редактор
- •Компилятор
- •Компоновщик
- •Загрузчик
- •Отладчик
- •Ошибки?
- •Ошибки?
- •Вычисление выражений из констант порядкового типа.
- •Формирование одной ссылки на многократно используемую константу строкового типа.
- •Сокращенное вычисление булевских выражений.
- •Сокращение операций при описании параметров – констант в параметрах подпрограмм.
- •Формирование одной ссылки на поля структур через оператор with в параметрах подпрограмм.
- •Сокращение кода при использовании констант множественного типа и оператора in в отличие от использования логических выражений.
- •Оптимизация кода при использовании множеств с границами 0..7 и 0..15.
- •Вычисление операндов выражения – функций в порядке справа налево.
- •Проверка допустимости границ используемых в вычислении переменных.
- •Преобразование операций умножения на степень двойки в сдвиг переменной.
- •Выравнивание переменных и констант на границу машинного слова (32 или 64 бита) для оптимизации обращения по четному адресу.
- •Игнорирование операторов, которые не будут выполняться никогда.
- •Run-time error<nnn> at <xxxx:yyyy>,
- •При выполнении и после выполнения программы возможно выявить ошибки трех типов:
- •Программа выдает ошибку периода выполнения – вызов прерывания (например, деление на ноль).
- •Программа не завершает своей работы (возможность бесконечного цикла) и требуется нажатие Ctrl+Break для аварийного завершения работы (только не во время ввода данных).
- •Программа завершает свою работу, но выдает неверные результаты.
- •4. Общий вид экрана при работе в ИСР.
- •5. Классификация окон в ИСР и возможности по управлению окнами.
- •Действия
- •Горячая клавиша
- •6. Назначение секций основного меню.
Алгоритмизация и программирование. Лекции.
Материалы лекции подготовлены к.т.н., доц. Петренко Т.Г. и к.т.н., ст. преп. Резниченко Ю.С Лектор − к.т.н., ст. преп. Резниченко Ю.С., 2013-2014 уч. год.
Следующим модулем в последовательности создания исполняемой программы является компилятор. Компилятор ИСР выполняет перевод исходного текста программы (.pas файла) в объектный файл в оперативной памяти (на диск не сохраняется), а для модулей – на диске создает как результат перевода файлы с расширениями .о и .ppu. Для перевода компилятору необходима законченная программа на языке FP. Например, минимальная программа «begin end.» будет успешно скомпилирована, хотя смысла не имеет. Кроме этого, задачей компилятора является проверка исходного кода на соответствие правилам языка
FP, в случае ошибок компиляции (см. \doc\user.pdf “Compiler messages”),
необходимо вернуться к этапу редактирования и сохранить исправленный файл на диске. Компилятор FP имеет следующие особенности:
1)Процесс компиляции проходит, как и у большинства компиляторов, несколько стадий – синтаксический анализ, семантический анализ,
2)Компиляция может выполняться в ИСР по горячим клавишам, используя
подпункты основного (пункты меню Run, Compile) и контекстного меню:
•Compile→Compile (Alt+F9), обеспечивает компиляцию текста в активном окне редактора и компоновку.
•Compile→Make (F9) обеспечивает компиляцию текста первичного файла, если он установлен, а затем все нужные исходные файлы программы, модули перекомпилируются, затем выполняется компоновка программы.
•Run→Run (Ctrl+F9) обеспечивает компиляцию программы, компоновку и постановку на выполнение.
3)Компилятор FP выполняет некоторые оптимизирующие функции:
•Вычисление выражений из констант порядкового типа.
•Формирование одной ссылки на многократно используемую константу строкового типа.
•Сокращенное вычисление булевских выражений.
•Сокращение операций при описании параметров – констант в параметрах подпрограмм.
•Формирование одной ссылки на поля структур через оператор with в параметрах подпрограмм.
•Сокращение кода при использовании констант множественного типа и оператора in в отличие от использования логических выражений.
•Оптимизация кода при использовании множеств с границами 0..7 и 0..15.
•Вычисление операндов выражения – функций в порядке справа налево.
•Проверка допустимости границ используемых в вычислении переменных.
•Преобразование операций умножения на степень двойки в сдвиг переменной.
•Выравнивание переменных и констант на границу машинного слова (32 или 64 бита) для оптимизации обращения по четному адресу.
•Игнорирование операторов, которые не будут выполняться никогда.
4)Управление параметрами компиляции может выполняться как в целом над программой, так и зонально путем включения в код директив компилятора.
Согласно пункту меню Options→Compiler… для FP возможно выбрать режим:
диалект Free Pascal, расширение Object Pascal, совместимость с Turbo Pascal,
совместимость с Delphi, диалект Macintosh Pascal. Также возможно установить
Алгоритмизация и программирование. Лекции.
Материалы лекции подготовлены к.т.н., доц. Петренко Т.Г. и к.т.н., ст. преп. Резниченко Ю.С Лектор − к.т.н., ст. преп. Резниченко Ю.С., 2013-2014 уч. год.
параметры генерации кода, включить или отключить включение отладочной информации в код и проверки на этапе выполнения программы, установить параметры оптимизаций при компиляции. Возможен выбор аппаратного или математического (режим эмуляции) сопроцессора. Включаемые в текст программы директивы компилятора начинаются с {$ или с (*$, далее следует имя директивы и параметры и завершение или }, или *). Директивы можно разделить на три группы:
•Директивы – переключатели, позволяют включить (+) или выключить (-) какой-то режим. Например, директива {$B+} позволяет включить сокращенное вычисление логических выражений, а директива {$B-} – выключить.
•Параметрические директивы, позволяют установить параметры для некоторого режима. Например, директива {$M StackSize, HeapMinSize, HeapMaxSize} позволяет установить размеры таких видов памяти программы, как стековая память (для размещения параметров выражений и подпрограмм) и динамическая память (для самостоятельного выделения и освобождения программистом во время выполнения программы).
•Условные директивы, позволяют включать или не включать в компилируемый код участки программы или устанавливать значения определенных констант (явное влияние языка С). Например, последовательность директив {&$IFxxx}…{$ENDIF} означает, что исходный код между IFxxx и $ENDIF будет компилироваться, если условие
xxx является истинным.
Следующая программа в последовательности обработки – компоновщик (linker). Назначение компоновщика – объединение объектных файлов программы (включая объектные файлы библиотек) в один исполняемый файл (.exe) с корректировкой взаимных связей. Компоновщик называют редактором связей. В
ИСР компоновщик обладает следующими особенностями:
1)Параметры настройки компоновщика можно менять в пункте меню
Options→Linker…, при выборе которого можно устанавливать сценарии компоновки и тип связывания с библиотеками.
2)Компоновщик выполняет некоторую оптимизацию кода на этапе
редактирования связей. Например, при подключении некоторого библиотечного модуля в состав объектного файла входят все его описатели типов, константы, переменные и подпрограммы, а на этапе компоновки в исполняемый файл войдут только те данные и подпрограммы, которые фактически используются в программе.
После создания исполняемого файла загрузчик ИСР передает управление ОС для постановки на выполнение программы. Загрузчик среды вызывается как последний этап выполнения цепочки программ по команде Ctrl+F9. При выполнении программы возможны ошибки периода выполнения (см. \doc\user.pdf ”Run-time errors”). При такой ошибке выдается сообщение
Run-time error<nnn> at <xxxx:yyyy>,
где nnn – номер ошибки, xxxx:yyyy – адрес ошибки.
При выполнении и после выполнения программы возможно выявить ошибки трех типов:
Алгоритмизация и программирование. Лекции.
Материалы лекции подготовлены к.т.н., доц. Петренко Т.Г. и к.т.н., ст. преп. Резниченко Ю.С Лектор − к.т.н., ст. преп. Резниченко Ю.С., 2013-2014 уч. год.
•Программа выдает ошибку периода выполнения – вызов прерывания (например, деление на ноль).
•Программа не завершает своей работы (возможность бесконечного цикла) и требуется нажатие Ctrl+Break для аварийного завершения работы (только не во время ввода данных).
•Программа завершает свою работу, но выдает неверные результаты.
Для поиска ошибок программист может выполнить мысленно свою
программу, читая ее текст, однако это возможно только для небольших программ. Задача программиста – подобрать такие исходные данные, для которых однозначно известен результат работы программы, и провести ряд тестовых запусков программы. Если результаты не совпадут с ожидаемыми результатами, то следует найти те места в программе, в которых нарушается правильный ход выполнения. Такие ситуации могут быть выявлены путем наблюдения за переменными программы. Для ускорения поиска вероятного места ощибки используются программы-отладчики. Задача отладчика – предоставить инструментарий программисту для обнаружения ошибок. Основные инструменты отладчика ИСР:
1)Режим пошагового выполнения. При нажатии клавиши F7 или F8 начинается выполнение пошагового режима, для продолжения (после выполнения одной инструкции) требуется повторное нажатие F7 или F8. При F7 пошагово будут выполняться и подпрограммы, а при F8 каждая подпрограмма будет выполняться за один шаг.
2)Просмотр переменных при пошаговом режиме выполнении. Для открытия
окна просмотра переменных Watch (пункт меню Debug→Watches) и добавления в окно переменных (по одной) необходимо нажимать Ctrl+F7 (пункт меню
Debug→Add Watch).
3) Идентификация переменных при пошаговом режиме выполнении. Для изменения переменных и вычисления выражений используется пункт меню
Debug→Evaluate…, выдается окно Evaluate Expression, в котором две зоны
Expression (выражение) и Result (результат), а также кнопка Evaluate (вычислить). 4) Установка точек прерывания. Точки прерывания можно установить – статические и динамические. Статические точки прерывания могут быть безусловными (курсор установить на нужной строке текста и нажать Ctrl+F8 или
выбрать пункт меню Debug→Breakpoint) и условными (пункт меню
Debug→Breakpoint List…). Пункт меню Debug→Breakpoint List…позволяет открыть диалоговое окно со списком установленных точек прерывания. По каждой точке прерывания указаны: тип, состояние, строка кода и путь к файлу, где установлена точка прерывания. Возможно добавить новую точку прерывания (кнопка New), редактировать установленную точку прерывания (кнопка Edit), переключить состояние точки прерывания − доступная/недоступная (кнопка Toggle). Для добавления и редактирования точки прерывания предназначено диалоговое окно Modify/New Breakpoint. В этом диалоговом окне возможно указать путь к файлу и номер строки в файле, где установлена или будет установлена точка прерывания, условие, при выполнении которого произойдёт прерывание (условная точка прерывания), а также количество проходов цикла (условная точка прерывания установлена в цикле), после которого произойдёт прерывание. При выполнении программы (поставить на выполнение − Ctrl+F9) и достижении строки