- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Ближний вызов.
Ближний вызов устанавливается :
По умолчанию , когда не указанна директива Far и {$F+}
Является явной отметкой и ближнем вызове подпрограмм директивы Near
Синтаксис записи
Procedure p (k:char );near ;
Begin
…….
End;
Или
{$F+}
…..
Ближняя модель вызова предала , что подпрограмма будет вызываться только в пределах одного сегмента кода , который выделяется основной программой и каждому используемому модулю . в этом случае с подпрограммой связан лишь адрес смещения относительно сегмента . Ближняя модель экономит память и некоторое время при вызове подпрограммы . Экономия памяти наблюдается при отсутствии ключей компиляции
Подпрограмма с не типизированными параметрами .
В качестве не типизированных параметров выступает параметры – переменных , поскольку они в отличии от параметров – значения передаются в подпрограммах по ссылке . При описании указывается только имя параметров . данные параметры используются в случае , когда тип передаваемых данных не известен . Если нормальные параметры являются не типизированными параметрами переменных то соответствующие ему фактический параметр может представлять собой любую ссылку на переменную независимую от ее типа . Не типизированный параметр является несовместимым с переменный каких – либо типов до тех пор , пока ему не будет присвоен определенный тип , то есть в обращение к такому параметру внутри подпрограммы выполняется функция приведенных типов .
Синтаксис записи
Procedure p (var x,y,z :word );
P
rocedure
P1 ( m, c: char );
Определен не верно , так как это параметр –значения .
Обычно не типизированные параметры используются при работе с областями памяти.
Примеры использования : процедуры сравнения областей памяти разного размера .
Type
Vector = array [1..5]of integer;
Point= record
X,y:integer ;
End;
Const
Vec1 :vector = (1,2,3,4,5);
Vec2 :vector = (1,2,3,1,2);
P:point = (x:1;y:1);
Var
N:integer ;
{$R-}
Function egual (var s,d,size :word):Boolean;
Type
Integers = array [0..1] of integer ;
Var
N:integer ;
Begin
N:=0 ;
While (n<> size ) and (integers(d)[n]=integers (s)[d]) do
Inc (n);
Egual=n=size ;
End;
Begin
N:=10;
Writeln(egual (vec1,vec2,size of (vector)));
Writeln (egual (vec1,vec2,3));
Writeln(egual (vec1,vec2, size of (integer)*n));
Writeln(egual (vec1,vec2[4],2));
Writeln(egual (vec1,p,2));
End.
Пример : Инициализации переменных , при этом вместе со значением в качестве параметра передается функция
Type
Type = (tbyte ,tword,tchar);
Procedure init (var x,t:type ; v:word);
Begin
Case t of
Tbyte :byte (x):=v;
Tword:word(x):=v;
Tchar:char (x):=v;
End;
Часто не типизированный параметр используется при работ со стандартными процедурами , например :
Move
BlockWrite
BlockRead
FillChar
FillChar (var V ,nbyte:word ;z:byte [char]);
Данная процедура заполняет участок памяти , на первый элемент который указывает параметр V , размер передается второму параметру . Третий параметр указывает значение , которое будет помещено в память .
Пример .
Var
S:string[7];
….
Fillchar(s, size of (s), ‘a’);
S[]|___________________________________
Множества и перечислимые типы не рекомендованы, передача через не типизированные параметры, так как они имеют особое машинное представление .
