Файлы (Turbo Pascal 7.0)

Лекции по предмету «Программирование»
Информация о работе
  • Тема: Файлы (Turbo Pascal 7.0)
  • Количество скачиваний: 1
  • Тип: Лекции
  • Предмет: Программирование
  • Количество страниц: 4
  • Язык работы: Русский язык
  • Дата загрузки: 2014-05-19 20:19:28
  • Размер файла: 21.2 кб
Помогла работа? Поделись ссылкой
Информация о документе

Документ предоставляется как есть, мы не несем ответственности, за правильность представленной в нём информации. Используя информацию для подготовки своей работы необходимо помнить, что текст работы может быть устаревшим, работа может не пройти проверку на заимствования.

Если Вы являетесь автором текста представленного на данной странице и не хотите чтобы он был размешён на нашем сайте напишите об этом перейдя по ссылке: «Правообладателям»

Можно ли скачать документ с работой

Да, скачать документ можно бесплатно, без регистрации перейдя по ссылке:

Файлы

Для хранения информации полученной в результате работы программ, используют различные внешние запоминающие устройства: гибкие магнитные диски, винчестера, магнитные ленты и другие носители. Использование внешних запоминающих устройств для хранение информации является наиболее надёжным и удобным способом хранения информации.
Физический файл.
Организация хранения информации зависит от конкретного носителя информации, и подробно рассматриваться нами не будет. В общем случае хранение информации организовано в виде именованных областей внешней памяти, называемых файлами. Файл в таком понимании называют физическим файлом.
Логический файл.
Для организации работы с физическими файлами в языках программирования предусмотрены специальные структуры данных - тип данных файл. Файл в таком понимании называют логическим файлом, так как в этом случае он представляет собой лишь логическую модель хранения информации не зависящую от организации конкретного физического файла.
Тип данных - файл.
Файл, - это потенциально бесконечная последовательность компонент одного и того же типа. Количество компонент в файле заранее не оговаривается. Объявляется тип данных файл в разделе объявления типов с помощью служебного слова file, после которого указывается тип компонент файла (базовый тип). Базовым типом может быть любой тип, кроме типа file.
Type
f = file of integer;
Переменные типа f будут файлами с целочисленными компонентами.
Файловые переменные.
Объявить файловую переменную можно используя объявленный в разделе объявления типов файловый тип, например
Var
as12: f;
В таком случае вы сможете применять эту переменную как параметр процедур или функций. Можно также обявить файловую переменную непосредственно в разделе объявления переменных, но тогда подпрограммы для неё недоступны
Var
as: file of byte;
Работа с файлами.
Для простоты и наглядности файловую переменную можно изобразить как последовательность однотипных компонент хранящуюся на магнитной ленте. В самом начале записывается имя файла, после него компоненты файла, а в самом конце признак конца файла. Считывание или запись информации из файла осуществляется с помощью воображаемой магнитной головки, которую мы в дальнейшем будем называть текущим указателем.
Файл может находится в различных состояниях:
1. файл закрыт;
2. файл открыт для записи;
3. файл открыт для чтения.
Assign(var f; name: string);
Процедура Assign предназначена для связывания файловой переменной (логического файла) с конкретным файлом на диске (физическим файлом). f - имя файловой переменной (идентификатор);
name - строка содержащая имя физического файла в операционной системе MS-DOS. Имя файла может содержать путь к файлу (path), например
c: urbolinkstd.dat
При отсутствии пути к имени файла подразумевается файл находящийся в текущем катлоге.
Процедура Assign(ff,bank.dat) связывает файловую переменную (логический файл) ff с физическим файлом на диске bank.dat. После выполнения этой процедуры файловая переменная ff будет представителем в программе физического файла на диске bank.dat.
Reset(var f);
Процедура Reset предназначена для подготовки к чтению или к записи существующего физического файла, связанного с файловой переменной f. Файл должен обязательно существовать. Если файл не пуст, текущий указатель перемещается к первой компоненте файла.
В противном случае текущий указатель перемещается к концу файла.

Файл становится открытым для чтения и записи.
Rewrite(var f);
Процедура Rewrite предназначена для создания нового файла, или для подготовки к записи с начала существующего файла (к перезаписи). Текущий указатель перемещается к началу файла. Если файл существует, то его предыдущее содержимое уничтожается. Если файла нет, то он будет создан.
Файл становится открытым для записи и закрытым для чтения.
Close(var f);
Закрывает открытый файл. Файл становится закрытым для чтения и закрытым для записи. Ни в коем случае не следует пренебрегать этой операцией. Оставшийся открытым файл, как правило, может вызвать аварийную ситуацию.
Операции ввода-вывода.
Read(f,v1[,v2,...,vn]);
Процедура Read предназначена для чтения значений из файла в программу. f - файловая переменная. Остальные параметры - переменные в которые будет помещаться информация из компонент файла. Тип этих переменных должен совпадать с базовым типом файла. При прочтении компоненты из файла текущий указатель перемещается к следующей компоненте.
Write((f,v1[,v2,..,vn]);
Процедура Write предназначена для записи информации в файл. f - файловая переменная. Остальные параметры - переменные, содержимое которых будет помещено в файл.
Перемещения по файлу.
Все компоненты типизированных файлов проиндексированы начиная с нуля, что позволяет организовать произвольное перемещение по файлу и доступ к любой компоненте такого файла в любой момент времени.
Seek(var f; n: longint);
Перемещает текущий указатель в файле f на позицию номер n.
Truncate(var f);
Усекает файл (обрезает его) на текущей позиции.
FileSize(var f): longint;
Возвращает текущий размер файла (номер последней компоненты).
FilePos(var f): longint;
Возвращает положение текущего указателя в файле.
EoF(var f): boolean;
Функция определения конца файла. Возвращает значение true, если текущий указатель находится за последней компонентой файла, false в противном случае.
Пример программы.
Задача. Организовать файл целых чисел из N компонент. Определить и вывести на экран среднее арифметическое компонент файла. Вывести содержимое файла на экран.
PROGRAM EX_30_1;

Uses Crt;

Type
ff=file of integer; {декларация типа файл целых чисел}

VAR
log_f: ff; {декларация логического файла}

procedure zapolnenie (var f: ff); {заполнение файла}
var
N: integer; {количество компонент}
i: integer; {параметр цикла}
komp: integer; {компонента файла}
begin
Write(Введите количество компонент в файле: );
Readln(N);
Rewrite(f); {открытие фала для записи}
Writeln(Введите компоненты файла: );
for i:=1 to N do
begin
Read(komp); {ввод компоненты с клавиатуры}
Write(f, komp); {и запись её в файл}
end;
Close(f); {закрытие файла!!!}
end;

procedure vyvod (var f: ff); {вывод файла на экран}
var
komp: integer; {компонента файла}
begin
Reset(f); {открытие файла для чтения}
while not eof(f) do {пока не конец файла делать}
begin
Read(f,komp); {чтение следующей компоненты файла}
Write(komp, ); {и вывод её на экран}
end;
Close(f); {закрытие файла!!!}
Writeln;
end;

function sr_ar (var f: ff): real; {определение среднего ар.}
var
komp: integer; {компонента файла}
sum: real; {сумма компонент (счётчик)}
begin
Reset(f); {открыть файл для чтения}
sum:=0; {обнуление счётчика}
while not eof(f) do {пока не конец файла делать}
begin
Read(f,komp); {чтение следующей компоненты файла }
sum:=sum+komp; {увеличение счётчика суммы}
end;
sr_ar:=sum/FileSize(f); {а вот и результат}
Close(f); {закрытие файла!!!}
end;

BEGIN
Assign(log_f,data.dat); {файл log_f на диске имеет имя data.dat}
ClrScr;
zapolnenie(log_f);
Writeln(Содержимое файла: );
vyvod(log_f);
Writeln(Среднее арифметическое компонент файла = ,sr_ar(log_f));
Repeat Until Keypressed;
END.
Контрольные вопросы
1. Что называют физическим файлом?
2. Что называют логическим файлом?
3. Как связывается логический файл с физическим файлом?
4. Для чего и как открываются файлы?
5. Как закрыть файл?
6. Что называют текущим указателем?
7. Опишите операции ввода-вывода для файлов.
8. Опишите перемещение в среде типизированных файлов.
Текстовые файлы
Кроме описанных выше файлов в Turbo Pascal 7.0 применяется специальный вид файлов предназначенный в основном для работы с текстовой информацией. Этот тип файлов объявляется с помощью служебного слова text, например
Var
t: text;

Работа с текстовыми файлами немного отличается от работы с обычными файлами. Информация в таких файлах хранится построчно. Компонентами текстовых файлов являются строки различной длины, разделённых между собой специальным признаком конца строки. Компоненты текстовых файлов не индексируются, поэтому произвольный доступ к ним невозможен.
Процедуры и функции для работы с текстовыми файлами
Append(var F: Text);
Открывает существующий текстовый файл для добавления в конец информации.
Readln(var F: Text; V1, [V2, V3,... Vn]);
Читает информацию из текстового файла. V1, V2,... Vn - переменные целого, вещественного или строкового типа в которые помещается прочитанная информация.
Writeln(var F: Text; V1, [V2, V3,... Vn]);
Записывает информацию в текстовый файл и вводит в файл признак конца строки. V1, V2,... Vn - переменные целого, вещественного или строкового типа, содержащие информацию помещаемую в файл.
Процедуры Readln и Writeln осуществляют те же действия, что и процедуры Write и Readln, но после операций чтения и записи производят переход к следующей строке текстового файла. Процедура Read переходит к следующей строке только в случае исчерпания текущей строки. Процедура Readln позволяет совершить этот переход не дожидаясь конца строки.
Eoln(var F: Text);
Функция определения конца строки. Возвращает значение true, если текущий укаатель находится за последней компонентой строки, false в противном случае.
SeekEoln(var F: Text): bolean;
Производит поис конца текущей строки файла. Перемещает указатель к следующему значению в строке. Если достигнут конец строки возвращается true.
SeekEof(var F: Text): boolean;
Производит поиск конца файла. Перемещает указатель к следующему значению. Если достигнут конец файла возвращается true.