
- •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 Алгорим быстрой сортировки (сортировка Хоара).
5. Структурные типы данных.
Делятся на: массивы, множества, записи, файлы.
5.1 Множества – это наборы однотипных логически связанных друг с другом объектов. Количество элементов, входящих в множество, может изменяться от 0 до 256. Два множества называются эквивалентными если все их элементы одинаковы, причем порядок следования элементов в множестве безразличен. Если все элементы одного множества входят также и в другое, то говорят о включении первого множества во второе. Пустое множество включается в любое другое. Синтаксис описания типа множества имеет вид
<имя типа> = set of <базовый тип>; -любой ПОРЯДКОВЫЙ тип
* |
Пересечение множеств |
+ |
Объединение множеств |
- |
Разность множеств |
= |
Проверка эквивалентности, возвращает true если множества эквивалентны |
<> |
Проверка не эквивалентности |
<= |
Проверка вхождения, возвращает true, если первое множество включено во второе |
>= |
Проверка вхождения, возвращает true, если второе множество включено в первое |
in |
Проверка принадлежности, возвращает true, если элемент принадлежит множеству. |
5.2 Массив – набор однотипных компонентов (элементов), расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу (индексам). Массив является структурой с произвольным доступом.
<имя типа>=array [<список индексов>] of <тип элемента>;
Здесь<имя типа> – правильный идентификатор;
array, of – зарезервированные слова;
<список индексов> – список из одного или нескольких индексных типов;
<тип элемента> – тип элементов массива.
В качестве индексного типа может использоваться любой порядковый тип. Обычно в качестве индексного типа используется тип-диапазон в котором задаются границы изменения индексов.
function Length(X):Integer |
Возвращает число элементов массива |
function High(X):Integer |
Возвращает максимальный индекс массива |
function Low(X):Integer |
Возвращает минимальный индекс массива |
program InOut; - пример программы для вводы и вывода массива.
{$APPTYPE CONSOLE}
const n=5; //длина массива
var a:array [1..n] of real;
i:Integer;
begin
//Ввод одномерного массива
for i:=Low(a) to High(a) do begin
write('a[', i, ']=');
readln(a[i]);
end;
{Здесь происходит обработка данных массива}
//Вывод элементов одномерного массива на экран
for i:=Low(a) to High(a) do
writeln('a[', i, ']=', a[i]:6:2);
readln;
end.
program InOut2; - пример программы для ввода и вывода 2-мерного массива.
{$APPTYPE CONSOLE}
const n=5; //число строк матрицы
m=2; //число столбцов
var a:array [1..n, 1..m] of real;
i, j:Integer;
begin
//Ввод массива
for i:=1 to n do
for j:=1 to m do begin
write('a[', i, ',', j, ']=');
readln(a[i, j]);
end;{for j}
{Здесь происходит обработка данных массива}
//Вывод элементов массива на экран
for i:=1 to n do begin
for j:=1 to m do
write(' a[', i, ',', j, ']=', a[i, j]:6:2);
writeln;
end;{for i}
readln;
end.
Вставка элемента в массив Рассмотрим алгоритм вставки элемента в массив. Для простоты будем рассматривать только одномерные массивы. Массив состоит из некоторого количества элементов nmax (емкость массива). Текущее количество элементов массива находится в переменной n.Перед вставкой очередного элемента проверяем, что текущее количество элементов массива меньше, чем его емкость.
Далее проверяем, вставляется ли элемент в конец массива или нет. Если элемент вставляется в конец массива, то увеличиваем n на единицу и добавляем элемент. Иначе сдвигаем элементы массива индекс которых больше или равен индексу вставляемого элемента.
Удаление элемента происходит аналогично. Сначала проверяется, что индекс элемента не выходит за диапазон допустимых значений, а затем сдвигаются элементы таким образом, чтобы закрыть удаляемый элемент.