Лабораторная работа № 9. Программирование с использованием файлов — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Лабораторная работа № 9. Программирование с использованием файлов

2017-09-30 535
Лабораторная работа № 9. Программирование с использованием файлов 0.00 из 5.00 0 оценок
Заказать работу

Цель работы: изучение приемов и средств, обеспечивающих хранение данных на дисках и их обработку

Объем работы: 2 часа

Теоретическая часть

Различают файлы трех типов: текстовые, типизированные и нетипизированные.

Текстовый файл – это файл, компонентами которого являются символьные строки переменной длины, заканчивающиеся специальным маркером конца строки (рис. 1).

Рис. 1. Структура текстового файла

 

Типизированный файл – это файл, все компоненты которого одного типа, заданного при объявлении файловой переменной (рис. 2). Компоненты файла хранятся на диске во внутреннем (двоичном) формате и нумеруются с 0. Если посмотреть такой файл любым текстовым редактором, то можно распознать только символьную информацию, на месте же чисел в файле будут располагаться пробелы или символы псевдографики.

Рис. 2. Типизированный файл

Текстовые файлы используют для хранения и обработки текстовой информации: символов, строк, символьных массивов. Логические и числовые данные при записи в текстовые файлы должны преобразовываться в символьные строки. При выполнении операций ввода-вывода с текстовыми файлами используют процедуры:

Процедура Read[Ln]([Var f:text;]v1,v2,...vn) – обеспечивает ввод из файла символов, строк и чисел. Список ввода представляет собой последовательность из одной или более переменных типа CHAR, STRING, а также любого целого и вещественного типа. при отсутствии файловой переменной ввод осуществляется из стандартного файла INPUT. Процедура ReadLn – также обеспечивает ввод символов, строк и чисел, но после чтения последней переменной оставшаяся часть строки до маркера конца строки пропускается, так что следующее обращение к ReadLn или Read начнется с первого символа новой строки. Процедура может быть вызвана без указания списка ввода, что приведет к пропуску всех символов текущей строки до маркера конца строки.

Процедура Write[Ln]([Var f;]v1,v2,...,vn) – обеспечивает вывод данных в текстовый файл или передачу их на логическое устройство. Список вывода – последовательность из одного или более выражений типа CHAR, STRING, BOOLEAN, а также целого или вещественного типов. При выводе числовых значений последние преобразуются в символьное представление. Процедура WriteLn при вызове обеспечивает запись маркера «конец строки».

Пример 1. Разработать программу, которая формирует текстовый файл из 26 строк, содержащих случайное количество соответствующих прописных букв латинского алфавита, например:

 

ААААА

BBBBB

C

DDDDDDDDDDDDDDDDDDDDD

EEEEEEEEEEEEEE и т.д.

 

Program form_text_file;

{$APPTYPE CONSOLE}

Uses SysUtils;

Var f:text; {файловая переменная для текстового файла}

a:char; n,i:integer; fname,st:string[30];

Begin

WriteLn('Введите имя файла');

ReadLn(fname);

AssignFile(f,fname); {инициализируем файловую

переменную}

ReWrite(f); {открываем файл для записи}

Randomize; {инициализируем датчик случайных чисел}

for a:='A' to 'Z' do {формируем строки}

Begin

st:='';

n:=random(30)+1;

for i:=1 to n do st:=st+a;

WriteLn(f,st); {записываем строку в текстовый

файл}

WriteLn(st); {а также – выводим ее на экран}

end;

CloseFile(f); {закрываем файл}

End.

Для работы с типизированными файлами используют специальные процедуры и функции:

1. Процедура Read(Var f;c1,c2,...,cn) – осуществляет чтение очередных компонентов типизированного файла. Список переменных ввода содержит одну или несколько переменных того же типа, что и компоненты файла, разделенных запятыми. Если файл исчерпан, обращение к процедуре вызывает ошибку ввода-вывода.

2. Процедура Write(Var f;c1,c2,...,cn) – осуществляет запись данных в типизированный файл. Список вывода содержит одно или более выражений того же типа, что и компоненты файла, разделенных запятыми.

Пример 2. Разработать программу, которая создает типизированный файл, содержащий список фамилий и даты рождения. Осуществить поиск в этом файле даты рождения по заданной фамилии.

 

Program ex;

{$APPTYPE CONSOLE}

Uses SysUtils;

Type fam=record {тип запись «сведения о сотрудниках»}

ff:string[20]; {фамилия}

year:word; {год рождения}

month:1..12; {месяц рождения}

day:1..31 {день рождения}

end;

Var f:file of fam; {файловая переменная «файл

сотрудников»}

fb:fam;

n,i:integer;

fff:string;

key:boolean;

Begin

AssignFile(f,'a.dat'); {связываем файловую

переменную с файлом}

ReWrite(f); {открываем файл для записи}

WriteLn('Enter data or CTRL-Z');

while not EOF do {цикл, пока не введено CTRL-Z}

Begin

ReadLn(fb.ff,fb.year,fb.month, fb.day);

{вводим данные по полям, фамилию вводим в

отдельной строке, так как ввод строки завершается

нажатием клавиши Enter}

Write(f,fb); {заносим запись в файл как один

компонент}

end;

CloseFile(f); {закрываем файл}

WriteLn('Enter family');

Readln(fff);

key:=false; {устанавливаем признак «запись не

найдена»}

ReSet(f); {открываем файл для чтения}

while (not EOF(f)) and (not key) do {пока не

обнаружен конец файла и не найдена запись}

Begin

Read(f,fb); {читаем запись из файла}

if fb.ff=fff then {если фамилии совпадают, то}

begin {выводим данные}


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.015 с.