- •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.2 Отладка программ.
Отладка – этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Для определения места возникновения ошибки необходимо иметь возможность:
•знать текущие значения переменных;
•знать, путь (граф) выполнения программы.
Существуют два способа отладки.
•Использование отладчиков – программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
•Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода – на экран, или в файл. Вывод отладочных сведений в файл называется журналированием.
Следует отметить, что первый способ отладки применим не всегда, т. к. пошаговая отладка может быть невозможной, например для систем реального времени.
•Отладчик – программный инструмент, позволяющий наблюдать за выполнением исследуемой программы, останавливать и перезапускать её, прогонять в замедленном темпе, изменять значения в памяти и даже, в некоторых случаях, возвращать назад по времени.
•Профилировщик – программный инструмент позволяющий определить сколько времени выполняется тот или иной участок кода, а анализ покрытия позволяет выявить неисполняемые участки кода.
•API логгеры – программный иструмент позволяющий отслеживать взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
•Дизассемблер – программный инструмент позволяющий просмотреть ассемблерный код исполняемого файла.
•Сниффер – программа для просмотра сетевого трафика генерируемого программой.
•Логи системы.
Отладка может занимать очень много времени, поэтому, желательно, максимально уменьшить число мест в которых она может потребоваться. Для этого есть несколько подходов.
•Контрактное программирование.
•Модульное тестирование.
•Статический анализ кода
•Высокая культура программирования (правильное форматирование кода) использование правильных методик программирования.
12.3 Принципы контрактного программирования.
Контрактное программирование – метод проектирования программного обеспечения. Он предполагает, что проектировщик должен определить формальные, точные и верифицируемые спецификации интерфейсов для компонентов системы. При этом, кроме обычного определения абстрактных типов данных, также используются предусловия, постусловия и инварианты (непротиворечивость внутреннего состояния объекта). Данные спецификации называются контрактами.
При использовании контрактов сам код не обязан проверять их выполнение. Обычно в таких случаях в коде делают жёсткое падение (незамедлительное прекращение выполнения программы с выводом сообщения об ошибке), с помощью оператора Assert. В окончательном варианте кода это поведение может быть сохранено, либо проверки могут быть убраны чтобы повысить производительность.
12.4 Принципы модульного тестирования.
Модульное тестирование – процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы.
Идея состоит в том, чтобы писать тесты для каждой нетривиальной функции или метода. Это позволяет достаточно быстро проверить, не привело ли очередное изменение кода к регрессии, то есть к появлению ошибок в уже оттестированных местах программы, а также облегчает обнаружение и устранение таких ошибок.
