unit op;
Interface
Type
// структура данных «Дата работ»
tDateWork= record // запись из 3-х полей
day: 1..31; // день
month: 1..12; // месяц
year: 1900..2020 // год
end;
// структура данных «сведения о ЛЭП»
tLEP= record //запись из 5-и полей
сode: string [8]; // шифр
voltage: word; // напряжение
space: word; // протяженность
year: 1900..2010; // год ввод
data: tDateWork // дата последних работ
end;
// структура данных файл «Список ЛЭП»
tFileLEP= file of tLEP; // файл записей типа tLEP
Implementation
End.
Модуль 2.
unit obrabotka;
Interface
uses op;
procedure vvod(var fLEP: tFileLEP);
procedure spravka(var fLEP: tFileLEP);
function MinProt(var fLEP: tFileLEP): word;
Implementation
procedure vvod(var fLEP: tFileLEP);
Var
LEP: tLEP; // буферная переменная для работы с файлом
ch: char; // ответ на вопрос
Begin
// внесем данные в файл
ch:=’y’;
while ch in [’y’, ’д’] do begin // пока ответ ’Да ’
with LEP do begin // заполняем буферную переменную
Write(’Введите шифр ЛЭП’);
ReadLn(code);
Write(’Введите напряжение ЛЭП’);
ReadLn(voltage);
Write(’Введите протяженность ЛЭП’);
ReadLn(space);
Write(’Введите год ввода в действие ЛЭП’);
ReadLn(year);
Write(’Введите дату последних линейных работ на ЛЭП’);
with data do begin
Write(’День ’); ReadLn(day);
Write(’Месяц ’); ReadLn(month);
Write(’Год ’); ReadLn(year);
end;
Write(fLEP, LEP); // запись данных в файл
// запрос о продолжении ввода
WriteLn(’Будете еще вводить данные? (y/д)’);
ReadLn(ch)
end;
// закроем файл
Close(fLEP);
end;
procedure spravka(var fLEP: tFileLEP);
Var
LEP: tLEP;
Begin
ReSet(fLEP); // откроем файл
// вывод сведений о ЛЭП
WriteLn(’Cправкa о ЛЭП, введенных в действие более 10-ти лет назад ’);
while not EOF(fLEP) do begin
Read(fLEP, LEP); // чтение сведений о ЛЭП из файла
with LEP do
if (2013–year)>10 then // больше 10 лет
WriteLn(code:12, voltage:6, space:6, year:6);
end;
Close(f LEP); // закроем файл
end;
function MinProt(var fLEP: tFileLEP): word;
Var
min: word; // протяженность самой короткой ЛЭП
LEP: tLEP; // буфер для работы с файлом
Begin
ReSet(fLEP);
Read(fLEP, LEP); // счbтали из файла сведения о первой ЛЭП
min:=LEP.space; // длину первой ЛЭП принимаем за минимальную
while not EOF(fLEP) do begin
Read(fLEP, LEP); // чтение записи о следующей ЛЭП
if LEP.space<min then // если её длина меньше ранее полученной
min:= LEP.space; // запомним наименьшую длину
end;
Close(fLEP);
// вернем наименьшую длину ЛЭП
MinProt:=min
end;
procedure spravka(var fLEP: tFileLEP);
Var
LEP: tLEP;
Begin
ReSet(fLEP); // откроем файл
WriteLn(’Сведения о ЛЭП, имеющую минимальную протяженность’);
while not EOF(fLEP) do begin
Read(fLEP, LEP); // чтение сведений о ЛЭП из файла
if LEP.space=min then // длина равна минимальной
WriteLn(code:12, voltage:6, space:6, year:6);
end;
Close(f LEP); // закроем файл
end;
End.
Основная программа.
Uses
op, obrabotka;
Var
min: word; // длина самой короткой ЛЭП
fLEP: tFileLEP;
FileName: string;
Begin
Write(’Введите имя файла для хранения сведений о ЛЭП: ’);
ReadLn(FileName);
Assign(fLEP, FileName); // связались с файлом
vvod(fLEP); // ввели сведения
spravka(fLEP); // выписали справку
min:=MinProt(fLEP); // нашли протяженность самой короткой ЛЭП
LstMin(fLEP, min); // вывели сведения о ЛЭП с минимальной протяженостью
End.
Задания для самостоятельного решения.
Для задач своего варианта лабораторной работы № 9 написать программы с использованием структуры данных файл (типизированный файл).
Контрольные вопросы:
1. Какими свойствами обладает структура данных файл?
2. Назовите функцию изменения позиции указателя файла.
3. Файлом называется….
варианты ответов:
1) специальная область оперативной памяти
2) совокупность данных объемом не меньше байта
3) совокупность данных, для размещения которой во внешней памяти выделяется именованная область памяти
4) ячейка памяти
4. Функция записи данных в файл
варианты ответов:
1) assiqn(f, ‘путь’)
2) reset (f)
3) close(f)
4) read(f, <список>)
5) write(f, <список>)
6) seek(f, n)
5. Назовите главную отличительную черту структуры данных файл от других статических структур данных.
6. Какие из типов файлов являются файлами последовательного доступа, а какие прямого доступа?
Перечислите типы файлов (с точки зрения языка программирования Turbo Pascal).
7. Для чего служит указатель на файловую переменную?
8. Какие стороны файла определяет указатель на файловую переменную?
9. Перечислите установочные и завершающие операции над файлом.
10. В чем особенность обработки текстового файла?
11. Назовите режимы работы с типизированными файлами.
12. Назовите режимы работы с текстовыми файлами.
13. Что такое файловая переменная?
14. Типизированный файл является файлом прямого и последовательного доступа?
15. Дайте определение понятию файл.