
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Вариантные записи .
Основная идея такой записи – находясь в рамках одной структуры определить в ней несколько альтернативных записей . В общем случае такая запись состоит из двух частей : фиксированной и вариантной .
Фиксированная часть – обычная совокупность полей , стр-ра постоянная . Вариантная часть не является постоянной при использовании , изменяется от значения особого поля – поле признака или поля tag . В зависимости от значения этого поля к фиксированной части может присоединяться один из имеющих вариантов полей вариантной части . Вариантная часть начинается case следует за фиксированной частью . В операторе case указывается имя переменной выбора переписывание варианта , в качестве которого выступает поле признака , указывается тип . После окончания вариантной записи , в записи не могут появляться другие поля . Запись закрывается словом end, которым одновременно закрывается блок case .
Синтаксис описание вариантной записи
Type
«имя типа »=record
Фиксированная часть
«поле 1 »: «тип 1»;«поле N»: «тип N»;
Вариантная часть
Case «имя переменной»: «тип» of«значение1» ( «Поле 1.1»: «тип 1.1»; «Поле 2.1»: «тип 2.1»;);
«значение2» ( «Поле 1.1»: «тип 1.1»; ….);
……………….
«значение K» ( «Поле 1.k»: «тип 1.k»; ………..);
End;
В круглых скобках в вариантной части происходит описание всех полей , относящихся к определенному значению поля признака. При таком объявлении могут быть указаны пустые скобки – пустой вариант для некоторого значения поля признака . Поле признака необходимо использовать со значениями , которые могут иметь место.
Пример:
Type
Priznak = (student,teacher);
Member = record
Name: string[40];
Age :byte;
Case st : priznak of
Student : (group: string[7]; kurs :byte );
Teacher : (chair : string [20]; post: string[20]);
End;
Var
Memb :member;
Begin
……
With memb do
Begin
Name:= ‘Петров’;
Age:=20;
St:=Student;
Group:=’АСУ’;
Kurs:=2;
Все поля вариантной части располагаются в одном и том же месте памяти при их хранении. Размер этой памяти определяется самым объемным из вариантов . В нашем случае этим вариантом является вариантTeacher, который занимает 42 байта . В целом запись будет занимать 85 байт .
Вариантные записи существенно экономят память , если бы наша запись была бы обычной записью , то имела бы структуру и занимала бы 93 байт.
Замечание :
Не рекомендуется работать одновременно с несколькими вариантами одной вариантной записи .
Поле признака следует определять одним из конкретных значений поскольку это значение информирует о том с каким вариантом эта работа производится ( хотя возможно обратится к различным вариантам и без определения поля признака , что не желательно ) . Следует считать что в любой момент времени доступными являются поля одного из вариантов . Продолжим пример :
Writeln ( memb.group ); ‘АСУ’
Writeln (memb.age ); 20
Memb.st:=teacher;
Writeln ( memb.post); ‘’
Writeln (memb.chair); ‘АСУ’
В следствие особого хранения полей вариантов возможно наложение полей одних вариантов на другие .
Продолжая пример , сделаем некоторые операции заполнения полей второго варианта , после чего обратимся к записям первого варианта:
With memb do
Begin
Post:=’доцент ’;
Chair:=’системотехника ’;
Writeln(chair);
Writeln (post);
St:=student;
Writeln(kurs); ‘т’ – #226(следует )226
Во избежание непредсказуемых результатов работы с вариантными записями программист сам должен заботится об этом .
Достоинство :Значительная экономия памяти под запись в целом .
Недостаток : строгий контроль за обращением к разным вариантам записи.
Процедуры и функции
Лекция №3
Подпрограммы. Процедуры. Определение процедур. Подпрограммы. Глобальные и локальные переменные. Формальные и фактические параметры подпрограмм. Параметры-значения, параметры-переменные, параметры-константы. Функции. Определение функций. Структурированные типы данных в качестве параметров подпрограмм.
При вызове процедур код программные увеличивается , кроме нескольких байт на вызов , при вызове процедуры присваивается ссылка на ту область памяти , в которой располагается процедура .
Процедуры .
Синтаксическое описание
Procedure «имя »(«список формальных параметров »);
Label
Const
Type
Var
Begin
«тело процедуры »;
End.