
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Линейные динамические списки.
Линейные однонаправленные список представляет собой последовательность элементов, каждый из которых состоит как минимум из двух частей:
1) информационная часть (в ней содержится данные которые несут различного рода информацию(содержание элементов)
2) порядковая или адресная часть в ней находиться данные информирующие о расположении следующего узла списка.
В линейных списках каждый узел кроме последнего указывает только на один узел списка, последний узел ни на что не указывает (в адресной части значениеNIl) исходя из этого структура однонаправленного списка следующая:
Кроме списка такой структуры могут быть организованы циклические динамические списки:
Двунаправленные списки
Деревья
Определение элемента однонаправленного линейного списка.
Для определения узла списка используется запись состоящая из двух полей информационного и адресного, при этом предварительно делается описание указательного типа на запись.
Пример построения линейного списка:
Type
Pn=^node;
Node=record
Info:byte;
Next:pn;
End;
Var
C:pn;
.
.
New(c); адрес нового элемента записан в С.
Существуют два основных типа организации списков
1)организации списка типа fifo;(очередь)
2) организации списка типа lifo;(стек или магазин).
При добавление в список типа стек каждый новый узел добавляется в его начало.
А при добавление в список типа очередь новый элемент добавляется в конец.
Организация динамических списков и операции над ними.
Организация списков представляет собой размещение их узлов в динамической памяти и установки между ними связи.
1.Организация списка типа стек.
Поскольку каждый вновь добавленный элемент размещается в начале списка то указатель на начало списка всегда будет связан с вновь добавляемым элементом.
Пример: Организация стека из трех элементов:
Type
Pn=^node;
Node=record
Info:byte;
Next:pn;
End;
Var
B,c:pn;
I:byte;
.
.
B:=nil;{1}
For I:=1 to 3 do
Begin
New(c);{2}
C^.next:=b;{3}
c^.info:=I;{4}
b:=c;{5}
End;
Комментарии
1-указатель на вершину списка устанавливается в nil (вершина списка неопределенна).
2-в динамической памяти выделяется место под очередной создаваемый элемент адрес которого записывается в С.
3- формируется поле next узла куда заноситься адрес предыдущего узла списка или значение nil если создаваемый узел первый (в списке он будет последним).
4-формируеться значение информационной части узла.
5-формируеться значение указателя В созданный узел становиться первым.
Схема
формирования списка.
2.Формирование списка типа очередь(fifo).
В этом случае добавляемый элемент присоединяется в конец списка. В отличие от предыдущего способа организации стека указатель на начало списка всегда в процессе его создания будет на первый элемент.
Используемые указатели
В-указатель на начало списка.
С-указатель, который в начале каждой итерации будет указывать на предыдущий элемент относительно созданного элемента.
Е-указатель, связанный с создаваемым узлом списка.
Пример: Формирование списка.
.
.
Var
B,c,e:pn;
I:byte;
Begin
B:=nil;
C:=nil;
{1}
For i:=1 to 3 do
Begin
New(E);{2}
E^.next:=nil;{3}
E^.info:=I;{4}
Fi c=nil then b:=E{5a} else c^.next:=E;{5b}
C:=E;[6]
End;
Комментарии
1-указатели В и С устанавливаются неопределенными т.е. списка нет.
2-формируеться узел списка адрес, которого записывается в указатель Е.
3-формируеться адресное поле нового узла, куда записывается значение nil поскольку каждый новый узел считается последним.
4-формируеться информационная часть узла.
5а-если созданный узел первый (С=nil) то указатель на начало связывается с этим узлом.
5б-если созданный узел не является первым то устанавливается связь предыдущего узла с созданным.
6- указатель С связывается с созданным узлом чтобы на следующей итерации он указывал на предыдущий узел.
Чтобы список стал циклическим надо E^.next:=В;
СХЕМА формировании списка.
Операции со списками.
К основным операциям работы со списками относят: 1)добавление элемента в список;2)просмотр списка;3) вставка элемента;4) удаление элемента; 5) удаление всего списка.