- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Массивы записей
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Операция включения и исключения одиночного элемента: реализуется с помощью .
а) Include («множество», «элемент»)
Второй параметр не может быть множеством.
б) Exclude («множество », «элемент ») – исключение Exclude(a,3);
5. Операция проверки на принадлежность элемента множеству: In
(x In A) not(x In A)
Пример: Ввести строку состоящую из не более чем 20 символов принадлежащие к множеству латинских букв и цифр, ввод прекращается по заполнению всей строки , либо по нажатию Enter.
Var
st : string [20];
ch: char;
I:byte;
m: set of char;
begin
:
:
M:=[’a’..’z’,’A’..’Z’,’0’..’9’];
st:=’’;
ch:=#0;
i:=1;
while (i<=20) and(ch<>13) do
begin
ch:=readkey;
if ch in m then
begin
st:=st+ch;
write(ch);
i:=i+1;
end;
end;
Сравнение множеств: к множествам применяются операции отношения : <> ,=, >=,<=.
*
+,-
=,<>,>=,<=, in
Достоинство и недостатки множеств:
Достоинство: 1. Компактность представления; 2. Удобство со множествами ;
Недостатки : 1. Невозможен прямой доступ к отдельным элементам ; 2. Ограниченность использование типов; 3. Существенно ограничен по количеству элементов .
Рассмотрим способ вывода множества : Для вывода необходимо просмотреть все элементы базового типа и если текущий рассматриваемый элемент содержится в множестве , вывести его
Var
m:set of byte;
i:byte;
:
.
m:= [1,10,100];
for i:=0 to 255 do
if I in m then
write(I, ‘ ‘);
……..
Записи
Лекция №2
Структурированные типы данных. Записи. Оператор присоединения. Совместимость. Записи со стартовыми значениями. Массивы записей, обращение. Варианты записей.
Запись - это строка с некоторым количеством компонентов , которые имеются в памяти. В отличие от массивов и множеств запись может состоять из не однотипных компонентов (численных , строковых , булевских …) . При этом доступ к полям осуществляется не по индексу, а по имени . Кроме того, в строке записи явным образом отображена идея иерархической подчиненности (см. вложенные записи ).
Синтаксис переменной типа - запись :
Var
«имя записи »:record;
«поле 1»: «тип 1»;
«поле 2»: «тип 2»;
…..
«поле n»: «тип n»;
End.
Запись можно конструировать двумя способами:
1 Способ : через определение соответствие типа
Type
TAdres=record
homeNum:word;
streetName:string[50];
flatNum:word;
end;
var
adres:TAdres;
2 Способ : в разделе описания переменных:
var
Adres=record
homeNum:word;
streetName:string[50];
flatNum:word;
end;
Оба способа одинаково приемлемы, однако 1 способ дает дополнительную гибкость при задание записи в качестве параметров подпрограмм. От того , где объявлены записи существенно зависит их совместимость (смотри обращение к записи как к единому объекту ). Размещение в памяти :в памяти поля записи размещаются в порядке их перечисления в объявление и располагаются от младшего к старшему .
Доступ к полям записи.
Над записями в целом допускаются только операции записи в файл . чтение из файла , операция присваивания (если записи совместимы по типу). В большинстве случаев при работе записей идет обращение к отдельным её полям .
Синтаксис обращения:
«Имя записи ».«имя поля» ;
Adres.homeNum:=200;
Adres.streetName:=100;
Adres.flatNum:=’Zelenay’;
