
- •1.Концепция типов данных.
- •3.Множества. Операции над множествами.
- •Множество имеет зарезервированное слово set of.
- •Сравнение множеств
- •Проверка включения
- •4.Записи. Записи с вариантами.
- •2.Структурированные типы данных
- •5.Файлы. Виды файлов. Доступ к файлам. Описание файлового типа. Файловая переменная. Общая схема работы с файлами.
- •30. Файлы
- •6.Текстовые файлы. Процедуры и функции для работы с текстовыми файлами.
- •Способы обмена с текстовыми файлами
- •II Операции записи в файл
- •III Логическая функция Eoln
- •IV Процедура открытия файла для дополнения
- •7.Процедуры и функции модуля dos для работы с файлами.
- •8.Типизированные файлы. Процедуры и функции для типизированных файлов.
- •Процедуры и функции для работы с типизированными файлами
- •Функция ioResult
- •9.Нетипизированные файлы. Процедуры и функции для нетипизированных файлов.
- •11.Модульное программирование: понятие, принципы.
- •12.Модуль crt: процедуры и функции управления экраном, работа с окнами, задержка выполнения программы.
- •Процедуры работы с экраном
- •13.Модуль graph: общ.Сведения, перекл. В граф. Режим и обратно, вывод текста в граф. Реж., система координат граф. Экрана.
- •15.Динамические структуры данных. Распределение памяти для программы и её данных.
- •16.Динамически формируемые массивы и строки.
- •18.Линейные списки.
- •19.Нелинейные списки. Создание и удаление динамических переменных.
- •23.Объектно – ориентированное программирование (ооп): понятие, принципы
- •24.Технология программирования
- •25.Этапы решения задач на эвм
- •26.Жизненный цикл программы
- •17.Структуры данных на основе указателей.
- •20.Связанные списки: общие сведения. Действия со списками.
- •21.Двоичные поисковые деревья: общие сведения, индексы, пример построения двоичного поискового дерева.
- •22.Внешние и внутренние сортировки.
- •14.Модуль dos: работа с системной датой и временем, функции для обработки параметров командной строки.
15.Динамические структуры данных. Распределение памяти для программы и её данных.
Структурированные типы данных, такие, как массивы, множества, записи, представляют собой статические структуры, так как их размеры неизменны в течение всего времени выполнения программы.
Часто требуется чтобы структуры данных меняли свои размеры в ходе решения задачи. Такие структуры данных называются динамическими, к ним относятся стеки, очереди, списки, деревья другие. Описание динамических структур с помощью массивов, записей и файлов приводит к неэкономному использованию памяти ЭВМ и увеличивает время решения за- дач.
Каждая компонента любой динамической структуры представляет собой запись, содержащую по крайней мере два поля: одно поле типа указатель, а второе - для размещения данных. В общем случае
запись может содержать не один, а несколько укзателей и несколько полей данных. Поле данных может
быть переменной, массивом, множеством или записью.
Для дальнейшего рассмотрения представим отдельную компоненту в виде:
где поле р - указатель; поле D - данные.
16.Динамически формируемые массивы и строки.
Если до начала работы программы неизвестно, сколько в массиве элементов, в программе используют динамические массивы. Память под них выделяется с помощью оператора new во время выполнения программы. Адрес начала массива хранится в переменной, называемой указателем. Например: int n=20; int *a = new int[n];
Здесь описан указатель a на целую величину, которому присваивается адрес начала непрерывной области ДП, выделенной с помощью оператора new. Выделяется столько памяти, сколько необходимо для хранения n величин типа int. Величина n может быть переменной.
Примечание: Обнуление памяти при ее выделении не происходит. Инициализировать динамический массив нельзя.
Обращение к элементу динамического массива осуществляется также, как и к элементам обычного массива. Например: a[0], a[1], …, a[9].
Можно обратиться к элементу массива другим способом: *(a+9), *(a+i), т.к. в переменной – указателе a хранится адрес начала массива. Для получения адреса, например, 9 – го его элемента к этому адресу прибавляется 9 sizeof(int) (9 умножить на длину элемента типа int), т.е. к начальному адресу a прибавляется смещение 9. Затем с помощью операции *(разадресации) выполняется выборка значения из указанной области памяти.
После использования массива выделенная динамическая память освобождается с помощью оператора: delete [ ] имя массива. Так например, для одномерного массива a:
delete [ ] a; .
Время "жизни" динамического массива определяется с момента выделения динамической памяти до момента ее освобождения.
18.Линейные списки.
В стеки или очереди компоненты можно добавлять только в какой - либо один конец структуры данных, это относится и к извлечению компонент.
Связный (линейный) список является структурой данных, в произвольно выбранное место которого могут включаться данные, а также изыматься оттуда.
Каждая компонента списка определяется ключом. Обычно ключ - либо число, либо строка символов. Ключ располагается в поле данных компоненты, он может занимать как отдельное поле записи, так и быть частью поля записи.
Осн. отличия связного списка от стека и очереди следующие:
• для чтения доступна любая компонента списка;
• новые компоненты можно добавлять в любое место списка;
• при чтении компонента не удаляется из списка.
Над списками выполняются следующие операции:
• начальное формирование списка;
• добавление компоненты в конец списка;
• чтение компоненты с заданным ключом;
• вставка компоненты в заданное место списка (обычно после компоненты с заданным ключом);
• исключение компоненты с заданным ключом из списка.
Для форм. списка и работы с ним необходимо иметь пять переем. типа указатель, первая из которых опр. начало списка, вторая - конец списка, остальные- вспомогательные. Описание компоненты списка и перем. типа указатель дадим след. образом:
Type PComp= ^Comp; Comp= record D:T;
pNext:PComp end;
var pBegin, pEnd, pCKey, pPreComp, pAux: PComp;
где pBegin - указатель начала списка, pEnd - указатель конца списка, pCKey, pPreComp, pAux -вспомогательные указатели.