Файловая переменная

25
Файловая переменная

description

Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное имя , что дает возможность программе работать одновременно с несколькими файлами; - PowerPoint PPT Presentation

Transcript of Файловая переменная

Page 1: Файловая переменная

Файловая переменная

Page 2: Файловая переменная

Файл – совокупность данных, записанная во внешней памяти под определенным именем.

Любой файл имеет три характерные особенности:

уникальное имя, что дает возможность программе работать одновременно с несколькими файлами;

он содержит компоненты одного типа, кроме файлового;

длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только ёмкостью устройств внешней памяти.

Page 3: Файловая переменная

Файл в Турбо - Паскалепредставляет собой последовательность

элементов одного типа.

В отличие от массива длина файла (кол - во элементов) не задается, место элемента не задается индексом и каждый элемент становится доступным после перебора всех предыдущих элементов (последовательный доступ).

Page 4: Файловая переменная

Файлы и файловые переменные

Для доступа к файлу описывается специальная файловая переменная, которая считается представителем файлов в паскаль-программе.

Входной файл (например,

vhod.pas)

Выходной файл

(например, vihod.pas)

Программа

Page 5: Файловая переменная

Описание файлового типа

Файлы

Type <имя_типа>=<тип_компонентов>;

Var <имя_файловой_переменной> : file of <имя_типа>;

Текстовый файл

можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов

Var F : text;

Типизированные файлы

файлы определенного типа. Чаще всего это файлы, состоящие из записей. Они используются для создания различных баз данных

Type FileRec=record

… end;

Var F:file of FileRec;

Нетипизированные файлы

не имеют строго определенного типа, рассматривается в Паскале как совокупность символов или байтов.

Var F : file;

Page 6: Файловая переменная

Связь файла с файловой переменной

ASSIGN(<файловая переменная>,<имя файла>);

Const

name=‘c:\dir\subdir\out.txt’;

Var f:text;

Begin … assign(f,name);

Page 7: Файловая переменная

Инициация файлаИнициировать файл - указать для него

направление передачи данных.Файл можно инициировать для

чтения, записи, дозаписи.

Инициация файла для чтения -RESET(<файл. пер.>);Инициация файла для записи -WRITE(<файл. пер.>,<сп. вывода>);REWRITE(<файл. пер>);Инициация файла для дозаписи -

APPEND(<файл. пер.>); - только текстовый файл!

Page 8: Файловая переменная

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

Пример:

Var f :text;

St:String;

BEGIN Write(‘Введите имя файла: ’);

Readln(St); Assign(f,St);

{$I-} {Отключить контроль ввода-вывода}

Reset(f); {Открыть файл}

{$I+} {Включить контроль ввода-вывода }

Page 9: Файловая переменная

If IOResult = 0 then begin

Writeln(‘Файл существует и нормально открыт’);

Close(f); end

Else Writeln(‘Файла с именем’+St+’ на диске нет’);

END.

После корректного выполнения операции ввода-вывода функция IOResult возвращает значение, равное нулю, в остальных случаях функция возвращает соответствующий код ошибки.

Page 10: Файловая переменная

Закрытие файла процедура Close(<имя_файловой переменной>);

Page 11: Файловая переменная

Текстовый файлТекст делится на строки. При определении длины строки необходимо учитывать формат листа или размер монитора;

Текст может содержать много строк;

Каждая строка заканчивается символами: #13 –возврат каретки, #10 – перевод строки.

Page 12: Файловая переменная

Процедуры и функции для текстовых файлов

Page 13: Файловая переменная

Создание текстового файла

Задача. Дан текстовый файл f. Используя файловую переменную, записать содержимое этого файла в другой файл.

Решение: program tekct; uses crt; var i:integer; st: string[20]; g,f:text;

Page 14: Файловая переменная

BEGIN clrscr;

assign(f,‘d:\k11a_2007\in1.txt'); assign(g,'d:\k11a_2007\out.txt');

{$I-} reset(f); rewrite (g){$I+}

if ioresult<>0 then begin

writeln('no file'); halt end;

i:=1;

repeat readln(f,st);

writeln(i,' ',st); writeln(g,st); inc(i) until eof(f); close(f); close(g);

End.

Page 15: Файловая переменная

Задача. Дан текст. Напечатать номер строки с максимальным

количеством символов.program tekct1; uses crt; var k,i,p,max:integer; st: string[20]; f:text; label 1; BEGIN clrscr;assign(f,'d:\classes\class11x\in1.txt');

Page 16: Файловая переменная

{$I-} reset(f);{$I+}

if ioresult<>0 then begin

writeln('no file'); goto 1 end;

i:=1; p:=0;

repeat readln(f,st);

writeln(i,' ',st); k:=ord(st[0]);

if k>max then begin max:=k;

p:=i end; inc(i) until eof(f) ;

writeln('p=',p); close(f);

1:; end.

Page 17: Файловая переменная

Стандартные файлы ввода/вывода

В программах на языке Турбо Паскаль можно

использовать стандартные обозначения файла ввода

input и файла вывода output .

Файловая переменная input связана с клавиатурой, а

файловая переменная output – с экраном дисплея.

Эти файлы всегда считаются открытыми.

Page 18: Файловая переменная

{$I-} reset(f); {$I+}

if ioresult<>0 then begin

writeln('no file'); goto 1 end;

i:=1; p:=0;max:=0;

repeat readln(f,st);

writeln(i,' ',st); k:=ord(st[0]);

if k>max then begin max:=k;

p:=i end; inc(i) until eof(f) ;

writeln('p=',p); close(f);

1: end.

Page 19: Файловая переменная

Текстовые файлы, содержащие числа

Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не только типа CHAR или STRING, но и других простых типов:

целых, вещественных типов при вводе;

целых, вещественных и логических типов при выводе.

Эти процедуры могут также работать и с ASCII-строками.

Имеется две стандартные файловые переменные для текстовых файлов, которые автоматически открываются при запуске программы и автоматически закрываются после работы:

INPUT – по умолчанию связанная с клавиатурой;

OUTPUT - по умолчанию связанная с экраном дисплея.

Page 20: Файловая переменная

ПРИМЕРЫ1. Считать файл и найти сумму цифр, встречающихся в нём.

Чтобы определить численное значение элемента текстового файла, т.е. значение цифры, можно воспользоваться тем, что символы являются упорядоченным типом. Коды ASCII-цифр следует читать один за другим, и значение любой цифры может быть получено как

k:=ORD( c ) - ORD(‘0’);

Page 21: Файловая переменная

Стандартные файловые переменные:

INPUT – для чтения данных с клавиатуры

OUTPUT – для вывода данных на экран

program my_file;VarF:text;Ch:char:begin assign(input,'d:\programs\in.pas');{$I-}reset(input); {$I+}If Ioresult <>0 thenBegin write(‘нет файла’); exit;while not eof do beginread(ch);Write(ch);end; close(input); end.

Пример переопределения стандартного ввода с клавиатуры на ввод из файла на диске. Файловую переменную в этом случае можно не записывать в операторах READ и WRITE

Page 22: Файловая переменная

program prim1;uses crt;Var I,k:integer;begin clrscr;assign(input,'d:\programs\in.pas');reset(input);k:=0;while not eof do beginread(i);inc(k); end; close(input); write('k=',k); readkey end.

Пример1.

Дан текстовый файл, содержащий целые числа.

Найти количество чисел в файле.

Page 23: Файловая переменная

program prim2;uses crt;Var i,j,k:integer;begin clrscr;assign(input,'d:\classes\in.pas');

reset(input); k:=0;repeatj:=0;

repeatinc(k);inc(j);read(i);write(i,' ');until eoln;

writeln('j=',j)until eof; close(input); write('k=',k); readkey end.

Пример 2

Дан текстовый файл, содержащий целые числа.

Найти количество чисел в файле и в каждой строке.

Page 24: Файловая переменная

Program prim3;uses crt;Var p,k,i,mf,ms:integer;begin clrscr;assign(input,'ff1.txt'); reset(input);mf:=-32768;k:=0;repeatms:=-32768; repeat read(i);write(i,' '); inc(k); if i>ms then ms:=i; if i>mf then begin mf:=i;p:=k end until eoln;writeln('ms=',ms);until eof; close(input); write('mf=',mf,'p=',p); readkey end.

Пример 3

Дан текстовый файл, содержащий целые числа.

Найти максимальный элемент в файле и его номер в файле, а также максимальный элемент в каждой строке.

Page 25: Файловая переменная

Задача