
- •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 Алгорим быстрой сортировки (сортировка Хоара).
13.9 Алгоритм сортировки методом выбора.
Начиная с первого элемента массива осуществляется поиск минимального элемента массива
и обмен его местами с первым элементом. Далее начиная со второго элемента осуществляется поиск минимального элемента массива и обмен его местами со вторым элементом. Процесс продолжается до тех пор, пока весь массив не будет отсортирован. Этот алгоритм дает такое же число сравнений O(n²), но число перестановок всего O(n).
13.10 Алгоритм сортировки методом вставок.
На каждом шаге алгоритма мы выбираем один из элементов входных данных и вставляем его на нужную позицию в уже отсортированном массиве, до тех пор, пока набор входных данных не будет исчерпан. Метод выбора очередного элемента из исходного массива произволен. Временная сложность алгоритма при худшем варианте входных данных – O(n²).
13.11 Алгоритм сортировки методом Шелла.
Сортировка Шелла – алгоритм сортировки, являющийся усовершенствованным вариантом сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами – это сортировка вставками с предварительными «грубыми» проходами. Аналогичный метод усовершенствования пузырьковой сортировки называется сортировка прочесыванием, рассмотренная выше.
При сортировке Шелла сначала сравниваются и сортируются между собой значения, отстоящие один от другого на некотором расстоянии d. После этого процедура повторяется для некоторых меньших значений d, а завершается сортировка Шелла упорядочиванием элементов при d=1 (то есть обычной сортировкой вставками).
Среднее время работы алгоритма зависит от длин промежутков – d, на которых будут находиться сортируемые элементы исходного массива ёмкостью N на каждом шаге алгоритма. Существует несколько подходов к выбору этих значений, например:
•первоначально используемая Шеллом последовательность длин промежутков: d1=N/2, di=di−1/2, dk=1 в худшем случае, сложность алгоритма составит O(n²);
•предложенная Седжвиком последовательность: di={9⋅2i−9⋅2i/2+1,еслинечетн8⋅2i−6⋅2(i+1)/2+1,есличетн При использовании таких приращений средняя сложность алгоритма составляет: O(n7/6), а в худшем случае порядка O(n4/3).
13.12 Алгоритм сортировки слиянием.
Сортировка слиянием построена на использования принципа «разделяй и властвуй». Сначала задача разбивается на несколько подзадач меньшего размера. Затем эти задачи решаются с помощью рекурсивного вызова или непосредственно, если их размер достаточно мал. Наконец, их решения комбинируются, для получения решения исходной задачи.
Сортировка слиянием состоит из трёх этапов:
•массив разбивается на две части одинакового размера (пополам);
•каждая из получившихся частей сортируется отдельно, например – тем же самым алгоритмом;
•два упорядоченных массива половинного размера соединяются в один.
Рекурсивное разбиение задачи на меньшие происходит до тех пор, пока размер массива не достигнет единицы (любой массив длины 1 можно считать упорядоченным).
Для сортировки слиянием нужен вспомогательный массив равный по размеру исходному, но можно обойтись и буфером половинного размера. Для этого перед слиянием нужно скопировать первую половину массива во вспомогательный буфер, а затем выполнить слияние второй части массива и содержимого вспомогательного буфера в исходный массив. При этом нет риска перезаписать ни один из элементов второго подмассива, поскольку точно известно что всё содержимое вспомогательного буфера может поместиться в свободную половину исходного массива.