Файловая переменная
This presentation is the property of its rightful owner.
Sponsored Links
1 / 25

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


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


6214694

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


6214694

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

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

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

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

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


6214694

Файл в Турбо - Паскале

представляетсобой последовательность элементоводноготипа.

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


6214694

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

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

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

Программа

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

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


6214694

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

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

Файлы

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

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

Var F : text;

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

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

Type FileRec=record

… end;

Var F:file of FileRec;

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

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

Var F : file;

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


6214694

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

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

Const

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

Var f:text;

Begin … assign(f,name);


6214694

Инициацияфайла

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

Файл можно инициировать для

  • чтения,

  • записи,

  • дозаписи.

    Инициация файла для чтения -

    RESET(<файл. пер.>);

    Инициация файла для записи-

    WRITE(<файл. пер.>,<сп. вывода>);

    REWRITE(<файл. пер>);

    Инициация файла для дозаписи -APPEND(<файл. пер.>); - только текстовый файл!


6214694

Проверка связи с файлом

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

Пример:

Var f:text;

St:String;

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

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

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

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

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


6214694

If IOResult = 0 then begin

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

Close(f); end

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

END.

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


6214694

Закрытиефайла

процедура

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


6214694

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

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

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

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


6214694

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


6214694

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

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

Решение: program tekct;

uses crt;

var

i:integer;

st: string[20];

g,f:text;


6214694

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.


6214694

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

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');


6214694

{$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.


6214694

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

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

Файловая переменная inputсвязана с клавиатурой, а файловая переменная output– с экраном дисплея.

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


6214694

{$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.


6214694

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

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

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

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

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

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

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

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


6214694

ПРИМЕРЫ

1.

Считать файл и найти сумму цифр, встречающихся в нём.

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

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


6214694

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

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

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

program my_file;

Var

F:text;

Ch:char:

begin assign(input,'d:\programs\in.pas');

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

If Ioresult <>0 then

Begin write(‘нет файла’); exit;

while not eof do begin

read(ch);

Write(ch);

end;

close(input);

end.

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


6214694

Пример1.

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

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

program prim1;

uses crt;

Var I,k:integer;

begin clrscr;

assign(input,'d:\programs\in.pas');

reset(input);

k:=0;

while not eof do begin

read(i);

inc(k);end;

close(input);

write('k=',k);

readkey

end.


6214694

program prim2;

uses crt;

Vari,j,k:integer;

begin clrscr;

assign(input,'d:\classes\in.pas');

reset(input);k:=0;

repeat

j:=0;

repeat

inc(k);inc(j);

read(i);write(i,' ');

until eoln;

writeln('j=',j)

until eof;

close(input); write('k=',k);

readkeyend.

Пример 2

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

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


6214694

Program prim3;

uses crt;

Varp,k,i,mf,ms:integer;

begin clrscr;

assign(input,'ff1.txt');

reset(input);

mf:=-32768;k:=0;

repeat

ms:=-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

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

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


6214694

Задача


  • Login