Файлы в Паскале
Оценка 4.6

Файлы в Паскале

Оценка 4.6
Лекции
doc
информатика
7 кл—9 кл
13.02.2018
Файлы в Паскале
Файл – последовательность однотипных компонент (элементов) на внешнем носителе, имеющая имя. Обмен данными между памятью и внешним устройством осуществляется при помощи файлов. С файлами связано два понятия: • физический файл • логический файл. Физический файл находится на внешнем устройстве и имеет имя. Если файл находится на магнитном диске, то имя задается полной спецификацией файла: {логическое имя МД:}{\путь к файлу по каталогам\}имя файла{.расширение} Например: 'W:\info\paskal\p1.pas' Если файл находится на другом внешнем устройстве, то имя файла задается логическим именем устройства: ‘CON’ – консоль (при вводе – клавиатура, при выводе – экран монитора) ‘LPn’, где n – 1,2, и т.д. – параллельный порт ввода-вывода ‘COMn’, где n – 1,2, и т.д. – последовательный порт ввода-вывода ‘LPT’ – принтер ‘NUL’ – фиктивное устройство. Логический файл – это файловая переменная, связанная с типом файла при его описании. Файловую переменную можно задать любым идентификатором. При работе с файлом сначала устанавливается соответствие между физическим и логическим именем файла (при помощи процедуры Assign), далее в программе используется только файловая переменная. Например: Var f:text; {текстовый файл описывается через файловую переменную f } Begin assign(f, ‘w:\info\kl10\a.txt’); {устанавливается соответствие между файловой переменной f и физическим файлом с именем ‘w:\info\kl10\a.txt’} Reset(f); {открытие файла для чтения} { обработка файла} Close(f); {закрытие файла} End. Существуют стандартные файловые переменные: INPUT – для ввода с клавиатуры, OUTPUT – для вывода на экран монитора. Они могут быть переопределены пользователем, т.е. могут быть связаны с другими устройствами ввода-вывода. В Паскале существует три типа файлов: • текстовый • типизированный • бестиповый. Текстовые файлы Текстовый файл – это стандартный тип файла, у которого два типа компонент (элементов) – символ (char) и строка (string). Описание текстового файла: Var f:text; Ch:char; S:string; где f – файловая переменная, ch, s – компоненты файла. Идентификаторы могут быть любые (по правилам написания идентификаторов). Структура текстового файла - линейная: #13 #10 #13 #10 #13 #10 #26 строка строка строка где #13 и #10 – признак (маркер) конца строки, а #26 – признак (маркер) конца файла. Так как строки в текстовом файле могут быть разной длины, то в конце каждой строки ставится признак (маркер) конца строки, а в конце файла ставится маркер конца файла. Доступ к компонентам текстового файла только последовательный, т.е. компоненты файла читаются или записываются только последовательно друг за другом. Текстовые файлы работают со всеми внешними устройствами.
Конспект по теме_ «Файлы в Паскале».doc
____________________________________________________________________________________ _ Файл – последовательность однотипных компонент (элементов) на внешнем носителе,  имеющая имя. Файлы в Паскале Обмен данными между памятью и внешним устройством осуществляется при помощи файлов. ЭВМ    ОЗУ Данные и программы Внешнее устройство Файлы Данные и программы С файлами связано два понятия:  физический файл  логический файл. Физический файл находится на внешнем устройстве и имеет имя. Если файл находится на магнитном диске, то имя задается полной спецификацией файла: {логическое имя МД:}{\путь к файлу по каталогам\}имя файла{.расширение} Например: 'W:\info\paskal\p1.pas' Если файл находится на другом внешнем устройстве, то имя файла задается логическим именем  устройства: ‘CON’ – консоль (при вводе – клавиатура, при выводе – экран монитора) ‘LPn’, где n – 1,2, и т.д. – параллельный порт ввода­вывода ‘COMn’, где n – 1,2, и т.д. – последовательный порт ввода­вывода ‘LPT’ – принтер ‘NUL’ – фиктивное устройство. Логический файл – это файловая переменная, связанная с типом файла при его описании.  Файловую переменную можно задать любым идентификатором. При работе с файлом сначала устанавливается соответствие между физическим и логическим  именем файла (при помощи процедуры Assign), далее в программе используется только файловая  переменная. Например: Var f:text;   {текстовый файл описывается через файловую переменную f } Begin assign(f, ‘w:\info\kl10\a.txt’);   {устанавливается соответствие между файловой переменной f и физическим файлом с именем ‘w:\info\kl10\a.txt’} 1 ____________________________________________________________________________________ _              Reset(f);           {открытие файла для чтения}              { обработка файла}              Close(f);            {закрытие файла}   End. Существуют стандартные файловые переменные: INPUT – для ввода с клавиатуры, OUTPUT – для  вывода на экран монитора. Они могут быть переопределены пользователем, т.е. могут быть связаны с другими устройствами ввода­вывода. В Паскале существует три типа файлов:    текстовый типизированный бестиповый. Текстовые файлы Текстовый файл – это стандартный тип файла, у которого два типа компонент (элементов)  – символ (char) и строка (string). Описание текстового файла: Var f:text;                Ch:char;         S:string; где f – файловая переменная, ch, s – компоненты файла. Идентификаторы могут быть любые (по  правилам написания идентификаторов). Структура текстового файла ­ линейная: #13 #10 #13 #10 #13 #10 #26           строка                                        строка                                               строка где #13 и #10 – признак (маркер) конца строки, а #26 – признак (маркер) конца файла. Так как строки в текстовом файле могут быть разной длины, то в конце каждой строки ставится  признак (маркер) конца строки, а в конце файла ставится маркер конца файла. Доступ к компонентам текстового файла только последовательный, т.е. компоненты файла  читаются или записываются только последовательно друг за другом. Текстовые файлы работают со всеми внешними устройствами. Процедуры и функции, определенные над текстовым файлом 1. Assign(var  f:text; filename:string); – устанавливает соответствие между физическим и  логическим именами файла.  Наличие этой процедуры обязательно. Примеры:  Assign(f, ‘w:\info\kl10\a.txt’); 2 ____________________________________________________________________________________ _ Assign(f,’PRN’); Writeln(‘input filename’);  {ввод физического имени файла через переменную filename} Readln(filename); Assign(f,filename); 2. Reset(var f:text); ­ открытие файла для чтения.             Указатель файловой переменной устанавливается перед первой компонентой. Файл готов      для чтения. Если файла с таким именем нет, то выдается сообщение об ошибке.              Reset(f); 3. Rewrite(var f:text); ­ открытие файла для записи.             Если такого файла нет, то создается метка файла и указатель файловой переменной  устанавливается перед первой компонентой. Если файл с таким именем есть, то указатель также  устанавливается перед первой компонентой. Содержимое файла при записи будет стерто. За этим  должен следить программист. 4. Append(var f:text); ­ открытие текстового файла для дозаписи в конец.       Указатель файловой переменной устанавливается перед маркером конца файла.             Append(f); Если файла с таким именем нет, то выдается сообщение об ошибке. Eof(var f:text): boolean; ­ определяется конец файла. Функция возвращает значение true, Eoln(var f:text):boolean; ­ определяет конец строки. Функция возвращает значение true,  Read(var f:text; ch:char); ­ чтение компоненты типа char из файла. Readln(var f:text); ­ перевод на новую строку. Используется при чтении файла  5. если встретился маркер конца файла (#26). 6. если встретился маркер конца строки (#13,#10). 7. 8. посимвольно. Например:       While not eof(f) do           Begin while not eoln(f) do                                Read(f,ch);                       Readln(f)           End; 9. Readln(var f:text; s:string); ­ чтение компоненты типа string из файла и перевод на новую  строку.             While not eof(f) do Readln(f,s);       10. Write(var f:text; ch:char); ­ запись компоненты типа char в файл. Write(f,ch); 11. Writeln(var f:text); ­ устанавливается признак конца строки (#13, #10) и переход на новую  строку. Writeln(f); 12. Writeln(var f:text; s:string); ­ запись компоненты типа string в файл, установка признака  конца строки и переход на новую строку. Writeln(f,s); 13. Close(var f:text); ­ закрытие файла для чтения или записи. Устанавливается маркер конца  файла (#26). По окончании работы с файлом он должен быть обязательно закрыт, иначе к  нему не будет доступа. Close(f); 3 ____________________________________________________________________________________ _ 14. Seekeof(var f:text):boolean; ­ возвращает значение true, если перед маркером конца файла  (#26) стоят только пробелы или коды табуляции. 15. Seekeofln(var f:text):Boolean; ­ возвращает значение true, если перед маркером конца строки (#13, #10) стоят только пробелы или коды табуляции. 16. Rename(var f:text; newname:string); ­ переименование файла. Применима лишь к закрытым файлам. 17. Erase(var f:text); ­ удаляет файл. Применима лишь к закрытым файлам. Особенности текстового файла 1. Это стандартный тип файла. 2. Два типа копонент: символ (char) и строка (string). 3. Только последовательный доступ к компонентам файла. 4. Файл может быть открыт или для чтения (reset(f);) или для записи (rewrite(f);). 5. Возможна дозапись компонент только в конец файла (append(f);).  6. Текстовые файлы работают со всеми внешними устройствами. 1. Установить соответствие между физическим и логическим именами файлов при помощи  процедуры Assign(f,filename). Алгоритм работы с файлом 2. Открыть файл для чтения (reset(f);) или для записи (rewrite(f);). 3. Чтение или запись компонент. 4. Закрыть файл (Close(f)). Замечание: Одновременно могут быть открыты несколько файлов. Примеры программ 1. Создание текстового файла на диске. Program example_1;  Var f:text;      i, n: integer;      S: string;  Begin                      Assign(f, ‘w:\info\pascal\file1.txt’); {устанавливаем связь файловой переменной               с физическим файлом на диске}      Rewrite(f);     {открываем файл для записи}      Readln(n);         {определим количество вводимых строк}      for i:=1 to n do      begin          readln(s);      {вводим с клавиатуры строки}          writeln(f,s); {записываем последовательно строки в файл}      end;      close(f);           {закрываем файл}  end. 2. Вывести содержимое текстового файла на экран монитора. Program example_2; 4 ____________________________________________________________________________________ _ Var f:text;        S,filename:string; Begin writeln(‘input filename’);            Readln(filename);            Assign(f,filename);             {Связываем  файловую  переменную с файлом  на  диске}            Reset(f);                              {Открываем файл для чтения}             While not eof(f) do             {Пока  не достигнут  конец  файла}                  Begin readln(f,s);           {Считываем очередную строку}                            Writeln(s);           {Выводим строку на экран}                  End;            Close(f);                               {Закрываем файл}     End. 3. В текстовом файле подсчитать  и вывести на экран количество символов в каждой строке. Program   еxample_3;  Var  f:   Text; x,  k:  Integer;  c:char; Begin   Assign (f, 'w:\info\pascal\pr.txt');           {Связываем  файловую  переменную с файлом  на  диске}   Reset (f);         {Открываем файл для чтения}    x:=0;                {Обнуляем счетчик строк}   While  Not  Eof(f)   Do   {Пока  не достигнут  конец  файла}    Begin     k:=0;                 {Обнуляем счетчик    элементов   строки}     inc(x);               {Увеличиваем счетчик строк}       While  Not Eoln(f) Do {Пока   не достигнут  конец  строки}         Begin           Read(f, c) ;      {Считываем очередной символ}           Write(c,'  ');    {Выводим его на экран}           Inc(k);              {Увеличиваем счетчик символов}         End;     Writeln( ' В  ',x, ' строке ', k, ' элементов') ;      Readln(f);             {Переходим к следующей строке файла}    End;   Close(f);     {Закрываем файл}       Readln;  End. 4. Переписать из входного файла в выходной только те строки, которые начинаются с буквы  «А» или «а». Program еxample_4;   Var f1,f2:text;      i, n: integer;  5 ____________________________________________________________________________________ _     s, filename: string;  Begin writeln(‘input filename1’);                          Readln(filename);                        {вводится имя входного файла}            Assign(f1,filename);                     {устанавливаем связь первой файловой  переменной с физическим файлом}                        Reset(f1);                                        {открываем первый файл для чтения}                  writeln(‘input filename2’);                 Readln(filename);                          {вводится имя выходного файла}                       Assign(f2,  filename);                     {устанавливаем связь  второй файловой  переменной с физическим файлом}         Rewrite(f2);                                   {открываем второй файл для записи}                {Дальше необходимо последовательно считывать строки из первого файла, проверять  выполнение условия и записывать нужные строки во второй файл. Для чтения из  текстового файла рекомендуется использовать цикл по условию «пока не конец  файла»}      While not eof(f1) do      Begin          Readln(f1,s);                                  {считываем очередную строку из первого файла}          If (s[1]=’A’) or (s[1]=’a’) then          Writeln(f2,s);                                 {записываем во второй  файл строки,  удовлетворяющие условию}      End;      Close(f1);                                            {заканчиваем работу с первым файлом}                        Close(f2);                                            {заканчиваем работу со вторым файлом}                 End.    Домашнее задание Написать и отладить следующие программы: 1. Подсчитать в текстовом файле количество строк. 2. Подсчитать в текстовом файле количество слов. 3. Найти в текстовом файле слово максимальной длины. 4. Создать новый текстовый файл из исходного, записывая  в  него только  те  строки, в  которых есть слово  'Procedure'. Типизированные файлы Типизированный файл – это файл произвольного типа, у которого тип компонент может  быть любым, кроме файлового. Описание типизированного файла: Type  tf=file of <тип компонент>; Var f:tf;        g:file of <тип компонент>; 6 ____________________________________________________________________________________ _ Например: Type tf=file of real;          tm=array[1..50] of integer; Var f:tf;        g:file of char;        fm: file of tm;        x:real;          c:char;        m:tm; Структура т  ипизированного       файла ­ линейная: 0     1     2     3    4     и т. д. #26 Так как все компоненты одного типа, то между ними нет никаких маркеров. Ставится только  маркер конца файла (#26).  Компоненты типизированного файла нумеруются с нуля. Для типизированного файла реализовано два способа доступа к компонентам:   последовательный (компоненты файла читаются и записываются одна за другим  последовательно) прямой (можно установить указатель перед любой компонентой и прочитать или записать  ее. Указатель устанавливается при помощи процедуры seek) . Типизированные файлы работают только с магнитными носителями. Процедуры и функции, определенные над типизированными файлами Assign(var  f:tf; filename:string); – устанавливает соответствие между физическим и              1. логическим именами файла.  Наличие этой процедуры обязательно.  Примеры:  Assign(f, ‘w:\info\kl10\a.dat’);  в качестве расширения у типизированного файла указывается ‘dat’. Writeln(‘input filename’);  {ввод физического имени файла через переменную filename} Readln(filename); Assign(f,filename); 2. Указатель файловой переменной устанавливается перед первой компонентой. Файл готов               для чтения. Если файла с таким именем нет, то выдается сообщение об ошибке.  Reset(f); Reset(var f:tf); ­ открытие файла для чтения. Rewrite(var f:tf); ­ открытие файла для записи. 3. Если такого файла нет, то создается метка файла и указатель файловой переменной  устанавливается перед первой компонентой. Если файл с таким именем есть, то указатель также  7 Eof(var f:tf): boolean; ­ определяется конец файла. Функция возвращает значение true, если  ____________________________________________________________________________________ _ устанавливается перед первой компонентой. Содержимое файла при записи будет стерто. За этим  должен следить программист. 4. встретился маркер конца файла (#26). 5. Close(var f:tf); ­ закрытие файла для чтения или записи. Устанавливается маркер конца  файла (#26). По окончании работы  файл должен быть обязательно закрыт, иначе к нему не  будет доступа. Close(f); 6. 7. Read(var f:tf; k:<тип компонента>); ­ чтение компоненты из файла в переменную k. Write(var f:tf; k:<тип компонента>);  ­ запись из переменной k в компоненту файла.                   k                   После чтения/записи компоненты, указатель перемещается к следующей компоненте. FileSize(var F) : LongInt; ­ возвращает количество компонент типизированного файла.  FilePos(var F) : LongInt; ­ возвращает номер позиции указателя файловой переменной. Seek(var F; N: LongInt); ­ устанавливает указатель перед компонентой N.  8. 9. 10. Например: seek(f,0); ­ устанавливает указатель перед нулевой компонентой.                     seek(f,5); ­ устанавливает указатель перед пятой компонентой. 11. Truncate(var F); ­ удаляется часть файла, начиная с текущей позиции указателя и до его  конца. Например: seek(f,15);                      truncate(f); ­ удаляются все компоненты, начиная с 15­й и до конца файла. Так как типизированные файлы работают только с магнитными носителями, то ввод и вывод  компонент файла осуществляется опосредованно через текстовый файл.  Особенности типизированного файла 1. Это произвольный тип файла. 2. Один тип компонент (любой, кроме файлового). 3. Доступ к компонентам файла прямой и последовательный. 4. Файл открывается процедурами reset и rewrite и для чтения и для записи. 5. Типизированный файл работает только с магнитными носителями. 1. Создание типизированного файла. (Типизированный файл нельзя создать при помощи  Примеры программ текстового редактора.) Var f:file of real;        k:real;        fname:string;        n,i:integer; begin writeln(‘input fname’); 8 ____________________________________________________________________________________ _           readln(fname);           assign(f,fname);           rewrite(f);           writeln(‘input n’);           readln(n);           for i:=1 to n do               begin readln(k);                         write(f,k);                end;            close(f); end. 2. Подсчитать сумму всех компонент целочисленного типизированного файла.  (Последовательный доступ.) Var f:file of integer;        fname:string;        k, sum:integer; begin writeln(‘input fname’);           readln(fname);           assign(f,fname);           reset(f);           sum:=0;           while not eof(f) do               begin read(f,k);                          sum:=sum+k;               end;            close(f);            writeln(‘sum=’,sum); end. 3. В типизированном файле вещественного типа поменять местами первую и последнюю  компоненты. (Прямой доступ.) Var f:file of real;        x,y:real;        fname:string;      begin writeln(‘input fname’);           readln(fname);           assign(f,fname);           reset(f);           read(f,x);           seek(f,filesize(f)­1);           read(f,y);           seek(f,0);           write(f,y);           seek(f,filesize(f)­1); 9 ____________________________________________________________________________________ _           write(f,x);           close(f); end. Домашнее задание Написать и отладить следующие программы: 1. Дан   файл   f,   состоящий   из   действительных   чисел.   Найти   сумму   наибольшего   и наименьшего из его компонент. 2. Дан целочисленный типизированный файл f. Все отрицательные элементы заменить нулями. 3. Дан типизированный файл символьного типа. В конец файла дописать символы ‘e’,’n’,’d’. 4. Дан целочисленный файл. Последний и центральный элементы поменять местами.            10

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале

Файлы в Паскале
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
13.02.2018