double arrow

Модуль 1. // структура данных «Дата работ»


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 LEPdo 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 LEPdo

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. Дайте определение понятию файл.



Сейчас читают про: