
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Доступ к компонентам файла осуществляется с помощью следующих процедур:
Write(<ф.п.>,<список переменных или значений>);
Read(<ф.п.>,<список переменных>);
Переменные и значения в списках должны иметь тот же тип, что и компоненты файла.
Если список содержит несколько переменных, то указатель в файле будет смещаться на следующую после каждой операции ввода-вывода
Пример:
Var
F:file of byte;
X1,x2:byte;
Begin
Assign(f,’t.dat’);
Rewrite(f);
Write(f,x1,x2);
Close(f);
Reset(f);
Read(f,x1,x2);
Close(f);
В отличие от текстовых файлов информация хранится в виде, подобном машинному представлению, компоненты внутри файла не отделяют друг от друга. Е эти файлам не применяются процедуры writeln, readln, так как в этих файлах нет строк. Для определения конца файла возможно использовать функцию Eof(f) либо Filesize(f), возвращающую количество записей в файле. Процедура reset для типизированных файлов открывает файл одновременно как на запись так и на чтение.
Пример
Пусть требуется записать в типизированный файл 3 записи, содержащие фамилию и год рождения. после записи осуществить поиск и отображение фамилий тех. кто родился в 1990 году.
Type
T_rec=Record
Name:String[15];
Year:word;
end;
var
f:file of T_Rec;
rec: T_rec;
i:byte;
begin
Assign(f, ‘z.dat’);
***
Rewrite(f);
for i:=1 to 3 do
begin
Rec.Name:=‘’;
write(‘Фамилия:’);
readln(‘Rec.name’);
write(‘Год:’);
readln(’Rec.Year’);
write(f.rec);
end;
close(f);
reset(f);
while not eof(f) do
begin
read(f,rec);
if Rec.year=1990 then
begin
write(rec.name);
readkey;
end;
end;
close(f);
Добавление записи в типизированный файл
Рассмотрим алгоритм добавления
1)открыть исходный файл в режиме чтения и промежуточный в режиме записи
2)переписать все записи исходного файла в промежуточный
3)записать в промежуточный файл новую запись
4)закрыть оба файла
5а)переписать из промежуточного файла в исходный и удалить промежуточный файл.
5б)Удалить исходный файл, переименовать промежуточный файл в имя исходного.
Пример
var
f1,f2:file of byte;
I;byte;
begin
Assign(f1, ‘a.dat’);
assign(f2, ‘b.dat);
***
<запись>
***
Reset(f1);
Rewrite(f2);
while not eof9f10 do
begin
read(f1,i0;
write(f2,i);
end;
close(f1)
close(f2);
Erase(f1);
Rename(f2, ‘a.dat’);
end.
Удаление записи
Удаление записи производится аналогично записи, за исключением того, что в промежуточный файл пишутся только не удаляемые записи (используется конструкция i<>i1 then … во время выбора)
Прямой доступ к типизированному файлу.
Для установления прямого доступа использую процедуру:
Seek(<ф.п.>, <№ условной границы>); - устанавливает указатель в файле на границу, номер которой во втором параметре. Пример:
Seek(f,25);
Read(f,ch);
Пример
***
var
f:file of char;
ch:char;
begin
Assign(f, ‘a.dat’);
rewrite(f);
for ch:=‘a’ to ‘z’ do
write(f, ch);
close(f);
reset(f);
Seek(f,3);
read(f, ch);
Seek(f, 25);
read(f, ch);
seek(f, 26);
read(f, ch);
close(f);
лекиция №14
Файл ввода/вывода. Прямой доступ к типизированном файлу.