
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Множественный тип данных
Лекция №1
Структурированные типы данных. Множества. Объявление множеств. Построение множеств. Операции над множествами. Приоритеты множественных операций. Примеры. Записи. Объявление записей. Вложенные записи.
В языке программирования множество представляет собой ограниченную своеобразную представленную в памяти ( по сравнению с другими типами данных ) совокупность элементов одного и того же базового типа , который выступает в качестве универсального множества (универсума) . В качестве базового типа может выступать : 1) Целочисленный тип : Byte; 2) Символьный тип : char; 3) Перечислимый пользователем тип данных .
В множестве могут присутствовать элементы , порядковые значения которые не выходят за диапазон 0..255. Разрешено объявлять множества , состоящие не более чем из 256 элементов . Нумерация элементов во множестве идет от 0 до 255 . В отличие от других типов данных один элемент множества занимает в памяти 1 бит . Исходя из этого для хранения полного множества из 256 элементов , достаточно 32 байта . Такая двоичная форма хранения информации позволяет эффективно реализовывать представление множества и операций над ними . Для обозначения используются квадратные скобки: [ ].
Объявление множеств :
Исполняется ключевым словом set (набор ) .
Синтаксическое объявление :
Var «Имя переменной »:set of «базовый тип » ;
Примеры:
Type
Charset= set of char;
Var
m_ch1,m_ch2:charset;
m_arr : array [1..5] of charset;
m_b: set of byte;
Описывая множество, бывает удобно сразу указать какие элементы, оно может содержать. Это можно осуществить двумя способами: 1.Перечислить все возможные значения (множественно-перечислимый тип); 2. Указать пары граничащих значений (используется чаще ).
Примеры :
Type
Digits=setoff 0..9;
Charset=set of ‘A’..’Z’;
Var
M1:set of 0..6; (Объем памяти =1 байт)
M2:digits; (Объем памяти =2 байта)
M3:charset;
M4:set of 0..4;
M5:set of( black, white ,grey);
M6:set of 7..16; (объем памяти =3 байта , в первый байт входит 7,в третий 16)
Number1,number2:0..9;
Определение памяти требуется для множеств:
M:set of N1…N2; N2>N1.
Поскольку параметры N1и N2 , определяющим диапазон значений множества соответствует N1ый и N2ой биты блока памяти , выделенного под множество , то объем памяти будет определяться исходя из того в какие байты эти биты попадут , причем множеству будут доступны целиком байты . в которые попадают N1ый и N2ой биты и находящиеся между ними . Совокупность доступных байт определяет объем множества .
В общем случае использованное множеств не предполагает значение их машинного представления .Эти знания могут быть необходимы при обращении к множеству напрямую , например, через указатель . Размер , занимаемый множеством можно определить с помощью функции size of():
I:= Size of(m6);
Построение множеств :
На этом этапе решается задача с заполнением множеств . способы заполнения множеств:
1.
1)
m1:=[0,1,4];
2) m1:=[1,4,0];
3) m5:=[gray , white];
4) m3:=[‘K’..’P’]; аналогично m3:=[‘K’ ,’L’ , ‘M’ , ‘N’, ‘O’,’P’ ];
5) m2:=[9,4..7]
2. Задание стартового значения в разделе Const:
Const
M7:set of char=[‘a’..’e’];
3 . Заполнение множеств , использую множественные операции (объединение , пересечение , вычитание , исключение смотри ниже ).
Обнуление множества :m6:=[];
При задание множества можно использовать переменные в соответствии с базисным типом:
Number1:=1; Number2:=2;
M2:=[number1 , number2 , 6 ];
Правило : при заполнение множеств возможно указывать любые значения базисного типа . Однако в множестве будут помещаться лишь значения , попадающие в допустимые байты множества проиллюстрируем заполнение множества :
M1:=[1,4,6];
M1:=[1,3,6,8,7,10];
M1:=[1,3,6,7];
M
6:=[1,2,7,8,16,20,29];
M6:=1,2,7,8,16,20];
Массив множеств.
Type charset=set of char;
Var
M_arr :array [1..3] of charset;
M_arr=([…] , […] , […]);
M_arr[1]:=[‘A’,’B’];
M_arr=([‘A’,’B’], [ ],[ ] );
Операция со множествами .
Объединение : + А=В u C
Var
a,b,c: set of byte;
:
:
a:=[1,2,3];
b:=[3,4,5];
c:=a + b;
c=[1..5].
Пересечение: * A=B*C
c:=a*b;
c:=[3];
Вычитание: - A=B/c
c:=b-a;
c=[4,5];
Манипулируя основными операциями возможно добавлять и удалять элементы :
a :=[1,2];
a:=a+[3];
a:=a+[3,4,5];
a:=a-[3,4];
a:=a-[10];