- •24. Тип файл
- •3. Структурная организация
- •0. Определение типа
- •1. Множество значений
- •2. Множество операций
- •Физические и логические файлы
- •Виды файлов
- •Общие правила работы с файлами
- •24.4. Организация работы с файлами прямого доступа
- •Алгоритм сортировки файла прямого доступа Сортировка файла методом пузырька (обменная сортировка) Спецификация подпрограммы
- •Метод решения
- •Информационная модель
- •Программная модель
- •24.5. Организация работы с последовательными файлами
- •24.6. Разработка комплекса программ субд
- •Разработка подпрограммы для проверки существования файла Спецификация
- •Метод решения
- •Информационная модель
- •Информационная модель
- •Программная модель
- •Реализация функции просмотра бд Постановка задачи
- •Метод решения
- •Информационная модель
- •Программная модель
- •Реализация функции сортировки бд Постановка задачи
- •Метод решения
- •Информационная модель
- •Программная модель
- •Реализация функции выборки из бд Постановка задачи
- •Метод решения
- •Информационная модель
- •Программная модель
- •Текст файла с общими описаниями
- •24.7. Организация работы с текстовыми файлами
- •Процедура записи в текстовый файл write
- •Правила выполнения обращения к процедуре write
- •Правила преобразования последовательности символов при записи в файл
- •Вариант 1: второй параметр любого целого типа
- •Вариант 2: второй параметр любого вещественного типа
- •Вариант 3: второй параметр типа char
- •Процедура чтения из текстового файла read
- •Правила выполнения процедуры read
- •Вариант 1: второй параметр числового типа (любого целого, либо любого вещественного)
- •Вариант 2: второй параметр литерного типа char
- •Вариант 3: второй параметр любого строкового типа
- •Процедура пропуска очередного признака конец строки readln
- •Пример чтения из текстового файла
- •Функции проверки местонахождения буфера
- •Процедура записи содержимого буфера в файл
- •24.8. Стандартные текстовые файлы input,output
- •24.9. Обработка компилятором обращений к процедурам чтения и записи
- •24.10. Общие процедуры работы с файлами и каталогами
Метод решения
В основу метода решения положено условие выполнения процедуры открытия существующего файла для работы reset(<илф>). Если физический файл соответствующий заданному логическому существует, то файл открывается для работы, если отсутствует, то возникает ошибка ввода-вывода. Поэтому метод решения следующий:
связываем физический и логический файлы assign(f, name), где f – имя логического нетипизированного файла. Нетипизированный файл позволяет сделать подпрограмму независимой от вида файла (но с таким файлом нельзя выполнять стандартные операции чтения и записи);
отключаем систему прерываний по ошибкам ввода-вывода {$I-};
выполняем вызов процедуры reset(f);
включаем систему прерываний по ошибкам ввода-вывода {$I+};
анализируем наличие ошибки при выполнении последней операции ввода-вывода. Это может быть только одна ошибка – перед выполнением процедуры reset физический файл, соответствующий логическому отсутствует. Если ошибка есть, то формируем результат функции false. Если ошибки нет, то формируем результат функции true и демонополизируем файл
Информационная модель
Таблица 24.4. Информационная модель
Назначение |
Имя |
Тип |
Имя логического файла |
f |
file |
Текст подпрограммы
function fs(name:string):boolean;
var f:file;
begin
assign(f,name);
{$I-}
reset(f);
{$I+}
if ioresult<>0 then
fs:=false
else
begin
fs:=true;
close(f)
end
end;
Реализация функции создания БД
Постановка задачи
Создать файл прямого доступа с информацией об учащихся. Имя создаваемого физического файла определяет пользователь. Компоненты файла представляют собой записи типа tinfstud.
Метод решения
получить от пользователя имя физического файла (namebd) для хранения базы данных;
если файл с таким именем существует, то сообщить об этом пользователю и прекратить выполнение программы
связать логический и физический файлы assign(fbd,namebd);
открыть файл прямого доступа в режиме создания нового файла rewrite(fbd);
повторять до ответа пользователя не продолжать создание файла:
a) ввод информации об очередном студенте (ввод записи r);
b) запись информации в файл write(fbd,r);
c) получение ответа на запрос – продолжать создание базы данных?[Y/N]
закрыть файл для работы close(fbd).
Предложенный метод можно использовать и для создания последовательных файлов, так как никаких особенностей файлов прямого доступа не используется.
Информационная модель
Таблица 24.5. Информационная модель
Статус |
Назначение |
Имя |
Тип |
Вход |
имя физического файла с БД |
namebd |
string |
Пром |
имя логического файла с БД |
fbd |
tfileinfstud |
Пром |
информация об очередном учащемся |
r |
tinfstud |
Вход |
ответ на запрос(Y – продолжать, N – нет) |
otvet |
char |
Программная модель
{программа создания базы данных (файл Z1.pas)}
program z1;
{$I FILE0.PAS}
var otvet:char;
begin
writeln('Введите имя создаваемого файла с базой данных');
readln(namebd);
if fs(namebd) then
begin
writeln('ОШИБКА!!! Файл с именем ',namebd,' уже существует');
halt
end;
assign(fbd,namebd);
rewrite(fbd);
repeat
writeln('Введите информацию об очередном студенте?');
with r do
begin
writeln('Фамилия?');
readln(fam);
writeln('День, месяц, год рождения, год поступления, средний балл ',
'для студента ',fam);
readln(dr.d, dr.m, dr.g, gp, sb);
write(fbd,r)
end;
writeln('Продолжать?[y/n/]');
readln(otvet)
until (upcase(otvet)='N') or (otvet='т') or (otvet='Т');
close(fbd)
end.