
- •1.Язык Object Pascal. Алфавит языка. Операторы. Выражения. Структура программы.
- •2. Простые типы данных. Преобразование типов. Приведение типов. Составной оператор.
- •3. Управляющие конструкции языка.
- •3.1 Безусловные конструкции
- •3.2 Условные конструкции.
- •3.3 Циклические конструкции.
- •4. Комментарии в крограммах. Директивы.
- •5. Структурные типы данных.
- •5.3 Записи.
- •6. Подрограммы.
- •6.1 Процедуры и функции. Состав. Синтаксис.
- •6.2 Список формальных параметров.
- •6.3 Параметры-значения. Параметры-переменные. Параметры-константы. Нетипизированные параметры.
- •6.4 Передача массивов в подпрограммы. Параметры типа открытый массив.
- •6.5 Локальные переменные. Область видимости. Время жизни.
- •6.6 Рекурсия. Виды рекурсии. Опережающее описание подпрограмм.
- •6.7 Процедурные типы
- •7. Модули
- •7.1 Назначение. Синтаксис.
- •8. Файлы
- •8.1 Общий алгоритм работы с файлом.
- •8.2 Подпрограммы для открытия файла.
- •8.3 Типизированные файлы. Режимы доступа к файлу. Переменная Filemode.
- •8.4 Обработка ошибок ввода-вывода.
- •8.5 Нетипизированные файлы.
- •8.6 Текстовые файлы
- •9. Динамическая память и указатели.
- •9.1 Указатель. Синтаксис. Допустимые операции.
- •9.2 Типизированные и нетипизированные указатели.
- •9.3 Операция резадресации (разыменования) указателя. Операции взятия адреса. Пустой указатель.
- •10. Типы с управляемым временем жизни.
- •10.1 Длинные строки. Механизм подсчета ссылок.
- •12.2 Динамические массивы.
- •11. Динамические структуры данных. Связные списки. Вставка и удаление узлов.
- •11.1 Односвязные списки. Структура. Особенности обработки.
- •11.2 Двусвязные списки
- •11.3 Кольцевые списки.
- •12. Отладка программ.
- •12.1 Виды программных ошибок.
- •12.2 Отладка программ.
- •12.3 Принципы контрактного программирования.
- •12.4 Принципы модульного тестирования.
- •12.5 Трассировка. Точки контрольного останова
- •12.6 Ведение протокола программы.
- •12.8 Основные принципы оформления исходного кода программы.
- •13. Алгоритмы
- •13.1 Алгоритм последовательного поиска.
- •13.2 Алгоритм бинарного поиска.
- •13.3 Алгоритм интерполирующего поиска.
- •13.4 Алгоритм вставки элемента в отсортированный массив.
- •13.5 Алгоритм поиска минимального (максимального) элемента массива.
- •13.6 Алгоритм пузырьковой сортировки.
- •13.7 Алгоритм сортировки перемешиванием.
- •13.8 Алгоритм сортировки прочесыванием.
- •13.9 Алгоритм сортировки методом выбора.
- •13.10 Алгоритм сортировки методом вставок.
- •13.11 Алгоритм сортировки методом Шелла.
- •13.12 Алгоритм сортировки слиянием.
- •13.13 Алгорим быстрой сортировки (сортировка Хоара).
12.5 Трассировка. Точки контрольного останова
Трассировкой программы называется пошаговое выполнение программы. При трассировке остановка программы происходит после выполнения каждого оператора (строки). При этом управление получает отладчик, а в окне наблюдения отражается текущее значение наблюдаемых переменных. (вызывается командой Run(Ctrl+F9)).
Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прервет свою работу, и управление будет передано среде fp-IDE. Точка останова задается командой Debug ► Breakpont (CTRL+F8). Контрольная точка останова выделяется по умолчанию красным цветом, рисунок 14. Поставьте курсор в строку в которой хотите установить точку останова. Нажмите CTRL+F8. Запустите программу. Программа остановится на указанной вами строке.
12.6 Ведение протокола программы.
Для ведения протокола программы в fp-ide нет специальных средств, но их довольно легко изготовить самостоятельно. В приложении Б приведен текст модуля uLogger для ведения протокола программы. Он позволяет выводить сообщения на стандартное устройство ошибок с помощью процедуры Log. Типы сообщений выводимых в лог определяются с помощью переменной LogLevel (по умолчанию выводятся все типы сообщений). Пример программы использующей протокол, приведен ниже. Для того чтобы в финальной версии программы, можно было отключить ведение журнала код вывода в протокол, используется условная компиляция. Достаточно удалить переменную DEBUG, чтобы полностью отключить ведение журнала.
12.7 Процедура Assert. Назначение. Принципы использования.Процедура Assert осуществляет тест на логическую истину/ложь. При использовании этого оператора вы убеждаетесь, что логическое выражение истинно, если при выполнении выражение становится ложным, генерируется исключительная ситуация. Синтаксис использования процедуры таков:
procedure Assert(Expr:Boolean; Amsg:string);
Управлять генерацией кода для оператора Assert очень легко с помощью директивы компилятора. Для применения описанных возможностей используйте директиву ASSERTIONS ON или С+, а для отключения действия Assert – ASSERTIONS OFF или С-(при этом компилятор игнорирует процедуры Assert и код для них не генерируется).
12.8 Основные принципы оформления исходного кода программы.
Одним из важнейших факторов, влияющих на способность программы к развитию, является ее «понимаемость». Одним из существенных факторов «понимаемости» программы, в свою очередь, является информативность исходного текста. Если исходный текст не является хорошо читаемым, то есть написан без соблюдения определенного стиля и системы и представляет собой «мешанину» операторов и знаков препинания, то вносить изменения в него очень сложно даже автору. Такая программа, безусловно, не является информативной. Сложности модификации значительно возрастают по прошествии времени и при необходимости работать с чужой программой.
Все идентификаторы должны выбираться из соображений читаемости и максимальной семантической нагрузки.
Зарезервированные слова языка Object Pascal писать только маленькими буквами. Например: type, var, const, procedure, function, begin, end, if, then, else, repeat, until, case, while, and, not, or, unit, uses, interface, implementation.
Комментарии в теле программы следует писать на русском языке и по существу так, чтобы программист, не участвовавший в разработке программы, мог без особого труда разобраться в логике программы, и, при необходимости, сопровождать данный программный продукт.
Для каждой пользовательской подпрограммы (процедуры или функции) должна быть описана в виде комментария спецификация, содержащая следующую информацию:
•назначение подпрограммы;
•описание семантики параметров-значений (параметров, передаваемых по значению), если она неочевидна;
•описание семантики параметров-переменных (параметров, передаваемых по ссылке), если она неочевидна.
•для функции: описание семантики возвращаемого значения, если она неочевидна.
Программный файл или модуль (unit) должен начинаться со спецификации в виде комментария, содержащего следующую информацию:
•идентификация (имя) файла;
•фамилия и копирайт автора;
•дата написания файла;
•версия языка программирования и замечания по компиляции программы (модуля) в других версиях языка (если требуется);
•назначение программы (модуля);
«Лесенка» должна отражать структурную вложенность языковых конструкций. Рекомендуется отступ не менее одного и не более 8-ми пробелов. Принятого отступа нужно придерживаться во всем тексте программы.