1 / 25

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

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

Télécharger la présentation

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

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

  4. Файлы и файловые переменные Входной файл (например, vhod.pas) Для доступа к файлу описывается специальная файловая переменная, которая считается представителем файлов в паскаль-программе. Программа Выходной файл (например, vihod.pas)

  5. Type<имя_типа>=<тип_компонентов>; Var <имя_файловой_переменной> : file of <имя_типа>; Файлы Текстовый файл можно рассматривать как последовательность символов, разбитую на строки длиной от 0 до 256 символов Var F : text; Типизированные файлы файлы определенного типа. Чаще всего это файлы, состоящие из записей. Они используются для создания различных баз данных Type FileRec=record … end; Var F:file of FileRec; Нетипизированные файлы не имеют строго определенного типа, рассматривается в Паскале как совокупность символов или байтов. Var F : file; Описание файлового типа

  6. Связь файла с файловой переменной ASSIGN(<файловая переменная>,<имя файла>); Const name=‘c:\dir\subdir\out.txt’; Var f:text; Begin … assign(f,name);

  7. Инициацияфайла Инициировать файл - указать для него направление передачи данных. Файл можно инициировать для • чтения, • записи, • дозаписи. Инициация файла для чтения - RESET(<файл. пер.>); Инициация файла для записи- WRITE(<файл. пер.>,<сп. вывода>); REWRITE(<файл. пер>); Инициация файла для дозаписи -APPEND(<файл. пер.>); - только текстовый файл!

  8. Проверка связи с файлом Для того, чтобы проверить, установлена ли связь файла с файловой переменной, необходимо использовать специальную функцию IOResult. Пример: Var f:text; St:String; BEGIN Write(‘Введите имя файла: ’); Readln(St);Assign(f,St); {$I-} {Отключить контроль ввода-вывода} Reset(f); {Открыть файл} {$I+} {Включить контроль ввода-вывода }

  9. If IOResult = 0 then begin Writeln(‘Файл существует и нормально открыт’); Close(f); end Else Writeln(‘Файла с именем’+St+’ на диске нет’); END. После корректного выполнения операции ввода-вывода функцияIOResult возвращает значение, равное нулю, в остальных случаях функция возвращает соответствующий код ошибки.

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

  11. Текстовый файл • Текст делится на строки. При определении длины строки необходимо учитывать формат листа или размер монитора; • Текст может содержать много строк; • Каждая строка заканчивается символами: #13 –возврат каретки, #10 – перевод строки.

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

  13. Создание текстового файла Задача. Дан текстовый файл f. Используя файловую переменную, записать содержимое этого файла в другой файл. Решение: program tekct; uses crt; var i:integer; st: string[20]; g,f:text;

  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.

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

  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.

  17. Стандартные файлы ввода/вывода В программах на языке Турбо Паскаль можно использовать стандартные обозначения файла вводаinputи файла вывода output . Файловая переменная inputсвязана с клавиатурой, а файловая переменная output– с экраном дисплея. Эти файлы всегда считаются открытыми.

  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.

  19. Текстовыефайлы,содержащиечисла • Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READили WRITE, могут быть не только типа CHAR или STRING, но и других простых типов: • целых, вещественных типов при вводе; • целых, вещественных и логических типов при выводе. • Эти процедуры могут также работать и с ASCII-строками. • Имеется две стандартные файловые переменные для текстовых файлов, которые автоматически открываются при запуске программы и автоматически закрываются после работы: • INPUT – по умолчанию связанная с клавиатурой; • OUTPUT - по умолчанию связанная с экраном дисплея.

  20. ПРИМЕРЫ 1. Считать файл и найти сумму цифр, встречающихся в нём. Чтобы определить численное значение элемента текстового файла, т.е. значение цифры, можно воспользоваться тем, что символы являются упорядоченным типом. Коды ASCII-цифр следует читать один за другим, и значение любой цифры может быть получено как k:=ORD( c ) - ORD(‘0’);

  21. Стандартные файловые переменные: 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

  22. Пример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.

  23. 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 Дан текстовый файл, содержащий целые числа. Найти количество чисел в файле и в каждой строке.

  24. 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 Дан текстовый файл, содержащий целые числа. Найти максимальный элемент в файле и его номер в файле, а также максимальный элемент в каждой строке.

  25. Задача

More Related