
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Массивы записей
Возможно определить массив или массивы , элементами которого будут записи.
Пример : Массив . каждый элемент которого несет информацию о точке (место положение цвет ):
Type
Tpoint=record
x,y:byte;
color:byte;
end;
var
mas_point : array [1..10] of Tpoint;
{Пусть требуется заполнить следующие элементы этого массива:}
Randomize;
For I:=1 to 10 do
Begin
Mas_point[i].x:=Random(79)+1;
Mas_point[i].y:=random(25)+1;
Mac_point[i].color:=random(16);
End;
Записи со стартовыми значениями .
Стартовые значения устанавливаются в разделе определения констант.
Синтаксис: … =(«Имя поля1»: «значение1»; «Имя поля2»: «значение2»;).
Примеры:
Type
Tpoint=record
x,y,color:byte;
end;
const
point:Tpoint=(x:10;y:10;color:2;);
mas_point :array[1..3] of Tpoin =((x:2;y:3;color:5;), (x:12;y:6;color:10;), (x:25;y:30;color:10;));
var
i:byte;
begin
clrscr;
for i:=1 to 3 do
begin
gotoxy(mas_point[i].x,mas_point[i].y);
TextColor(mas_point[i].color);
Write(‘*’);
end;
Вложенные записи
Записи могут иметь вложенную структуру . такую которую одна запись выступает составной частью другой , находясь при этом на более низком уровне подчиненности.
Пример:
Type
Name_rec=record
First: string;
last: sting;
End;
Adres=record
Name:name_rec;
Homenum:byte;
streetName:string[20];
End;
Var
S:adres;
В
этом случае запись name-
вложение в запись s
, находясь на более низком уровне
иерархии.
Для обращения к вложенной записи указывается вся цепь имен начиная с наивысшего и до конкретного поля , в которое не обходимо обратиться . Между именами цепочки перечисления ставятся точки . символизирующие уровня вложенности .
Readln (s.first); Readln (s.homeum);
Вложенные записи можно строить и в разделе описания переменных .
Var
S:record
Name:record
First: string;
last: sting;
End;
homeNum:byte;
streetName:string[20];
end;
Оператор присоединения.
Для осуществления более компактной записи программы и сокращения работы по описанию имен или цепочек имен записи, предусмотрен оператор присоединения With.
Синтаксис записи данного оператора :
With «префикс » do
«оператор»;
Оператор может быть простым и составным . Префикс представляет собой обозначение одного или нескольких уровней записей, то есть он указывает полное имя записи. Указанный в операторе with префикс будет автоматически присоединять ко всем именам полей записи соответствующих префиксу и присутствующих в теле оператора with .
Пример :
Type
Trec=record
I:integer;
F:real;
End;
Var
Rec1,Rec2:Trec;
:
Rec1.i:=2;
Rec1.f:=5,5;
Или
With Rec1 do
Begin
I:=2;
F:=5,5;
End;
При использование with для доступа к вложенным записям префикс-список имен записей , разделенных запятыми или точками , при этом порядок перечисление имен должен соответствовать уровню вложенности .
Перечисление имен через запятую является мене строгим поскольку
Внутри оператора with возможно обращаться к полям всех уровней в соответствии с перечислением. Перечисление через точку позволяет обратиться только к одному уровню соответствующему перечислению (нижнему уровню иерархии ) .
With S,name do
Begin
First:=’Петров’;
last:=’Петр’;
HomeName:=255;
End;
With S.name do
Begin
First:=’Петров’;
last:=’Петр’;
HomeName:=255;
End;
При перечислении имен записей через запятую возможно такая ситуация , когда записи разных уровней имеют одноименные поля .
Пример:
Var
Rec1:record
I,j:byte;
Rec2:record
I,k:byte;
End;
End;
…..
With Rec1,Rec2 do
Begin
I:=20;
J:=5;
K:=5
End;
При обращении к одноименным полям записи различных уровней вложенности в теле оператора with при указание имен через запятую приоритет выше у более низкого уровня .
Согласованность имен полей записи с именами переменных программы .
Имена полей одной или нескольких записей могут совпадать с именами других записей или именами переменных основной программы отсюда следует , что при использование оператора with работа с такими одноименными данными может привести к не определенностям . Присваивание z1:=z2 не выполнится в случае отсутствия совместимости :
Если одна из переменных типа записи определена через тип , а другая в разделе var
Если каждая переменная , описана в разделе Var отдельным объявлением , даже если точно идентичные поля
Пример :
Var
z1:record
…..
End;
z2:record
…..
End;
….
z1:=z2;