МБОУ "Лицей №57"

Адрес: г.Прокопьевск, ул.Институтская, 41


E-mail: lyceum57@mail.ru

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

Текстовые файлы предназначены для хранения текстовой информации. Именно в таких файлах хранятся, например, исходные тексты программ. Компоненты текстовых файлов могут иметь переменную длину, что существенно влияет на характер работы с ними. Доступ к каждой строке текстового файла Паскаля возможен лишь последовательно, начиная с первой. К текстовым файлам применимы процедуры assign, reset, rewrite, read, write и функция eof. При создании текстового файла в конце каждой записи (строки) ставится специальный признак EOLN(end of line – конец строки). Для определения достижения конца строки существует одноименная логическая функция EOLN(<имя_ф_переменной>), которая принимает значение true, если конец строки достигнут.

Кроме процедур read и write при работе с текстовыми файлами используются их разновидности readln и writeln. Отличие заключается в том, что процедура writeln после записи заданного списка записывает в файл специальный маркер конца строки. Этот признак воспринимается как переход к новой строке. Процедура readln после считывания заданного списка ищет в файле следующий признак конца строки и подготавливается к чтению с начала следующей строки.

Пример решения задачи с файлами

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

Решение: нам понадобятся две файловые переменные f1 и f2, поскольку оба файла текстовые, то тип переменных будет text. Задача разбивается на два этапа: первый – формирование первого файла; второй – чтение первого файла и формирование второго, затем вывод на экран содержимого второго файла.

Program primer;

 Var f1,f2:text;

     I,n: integer;

     S: string;

 Begin

 {формируем первый файл}

     Assign(f1, ‘file1.txt’); {устанавливаем связь файловой переменной с физическим файлом на диске}

     Rewrite(f1);  {открываем файл для записи}

     Readln(n) {определим количество вводимых строк}

     for i:=1 to n do

     begin

         readln(s); {вводим с клавиатуры строки}

         writeln(f1,s); {записываем последовательно строки в файл}

     end;

     close(f1); {заканчиваем работу с первым файлом, теперь на диске существует файл с именем file1.txt, содержащий введенные нами строки. На этом программу можно закончить, работу с файлом можно продолжить в другой программе, в другое время, но мы продолжим}

   {часть вторая: чтение из первого файла и формирование второго}

     Reset(f1); {открываем первый файл для чтения}

     Assign(f2, ‘file2.txt’); {устанавливаем связь второй файловой переменной с физическим файлом}

     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,f2); {заканчиваем работу с файлами}

  {часть третья: выводим на экран второй файл}

     Writeln;

     Writeln(‘Второй файл содержит строки:’);

     Reset(f2); {открываем второй файл для чтения}

     While not eof(f2) do {пока не конец второго файла}

     Begin

         Readln(f2,s);{считываем очередную строку из второго файла}

         Writeln(s); {выводим строку на экран}

     End;

 End.

Задача 1: Дан текстовый файл. Посчитать количество строк в файле.         

Составим алгоритм решения задачи (Создать текстовый файл данных – input.pas до начала решения задачи):

  1. Связать логический файл f с физическим файлом input.pas;
  2. Открыть файл для чтения;
  3. Организовать считывание данных из файла построчно (readln(f,s), где s-переменная типа string), насчитывая на каждом шаге считывания значение переменной-счетчика k;
  4. Вывести на экран значение переменной-счетчика;
  5. Закрыть файл.

program z1;

var k:integer;

s:string;

f:text;

begin 

assign(f,'input.pas');

reset(f);

k:=0;

while not eof(f) do begin

readln(f,s); k:=k+1;end;

writeln('k=',k);

close(f); 

end.

Задача 2: Дан текстовый файл. Напечатать все его строки, начинающиеся с символа «Т».          

Составим алгоритм решения задачи (Создать текстовый файл данных – input.pas до начала решения задачи):

  1. Связать логический файл f с физическим файлом input.pas;
  2. Открыть файл для чтения;
  3. Организовать считывание данных из файла построчно (readln(f,s), где s-переменная типа string), проверяя на каждом шаге, удовлетворяет ли строка условию: первый символ равен «Т», и если да, то вывести эту строку на экран;
  4. Закрыть файл.

program z2;

var k:integer;

s:string;

f:text;

begin 

assign(f,'input.pas');

reset(f);

while not eof(f) do begin

readln(f,s);

if s[1]=’T’ then writeln(s);

end;

close(f); 

end.

Задача 3: Дан текстовый файл. Напечатать все его строки, содержащие более 30 символов.

Составим алгоритм решения задачи (Создать текстовый файл данных – input.pas до начала решения задачи):

  1. Связать логический файл f с физическим файлом input.pas;
  2. Открыть файл для чтения;
  3. Организовать считывание данных из файла построчно (readln(f,s), где s-переменная типа string), проверяя на каждом шаге, удовлетворяет ли строка условию: длина строки больше 30, и если да, то вывести эту строку на экран;
  4. Закрыть файл.

program z3;

var k:integer;

s:string;

f:text;

begin 

assign(f,'input.pas');

reset(f);

while not eof(f) do begin

readln(f,s);

if length(s)>=30 then writeln(s);

end;

close(f); 

end.

Задача 4: Дан текстовый файл. Напечатать все его строки, содержащие в качестве фрагмента заданный текст. 

Составим алгоритм решения задачи (Создать текстовый файл данных – input.pas до начала решения задачи):

  1. Связать логический файл f с физическим файлом input.pas;
  2. Открыть файл для чтения;
  3. Задать фрагмент текста для поиска (s1);
  4. Организовать считывание данных из файла построчно (readln(f,s), где s-переменная типа string), проверяя на каждом шаге, удовлетворяет ли строка условию: в ней содержится в качестве фрагмента заданный текст (s1), и если да, то вывести эту строку на экран;
  5. Закрыть файл.

program z4;

var k:integer;

s1,s:string;

f:text;

begin 

writeln(‘введи фрагмент текста’);

readln(s1);

assign(f,'input.pas');

reset(f);

while not eof(f) do begin

readln(f,s);

if pos(s1,s)<>0 then writeln(s);

end;

close(f); 

end.

Задача 5: Дан текстовый файл. Напечатать 5 строку в новый текстовый файл, а остальные на экран.   

Составим алгоритм решения задачи (Создать текстовый файл данных – input.pas до начала решения задачи):

  1. Связать логический файл f с физическим файлом input.pas, а логический файл g с физическим файлом output.pas;
  2. Открыть файл для чтения;
  3. Организовать считывание данных из файла построчно (readln(f,s), где s-переменная типа string), насчитывая на каждом шаге считывания значение переменной-счетчика k,  и, проверяя на каждом шаге, равно ли значение счетчика 5, и если да, то вывести эту строку в файл g, иначе вывести на экран;
  4. Закрыть файл.

program z5;

var k:integer;

s:string;

f,g:text;

begin 

assign(f,'input.pas');

reset(f);

assign(g,'output.pas');

rewrite(g);

k:=0;

while not eof(f) do begin

readln(f,s);k:=k+1;

if k=5 then writeln(g,s);

end;

close(f); close(f);

end.

Обратная связь

Имя отправителя *:
E-mail отправителя *:
Тема письма:
Текст сообщения *:
Код безопасности *:

Задачи для самостоятельной работы:

1)        Дан текстовый файл. Найти самую длинную строку.

2)        Дан текстовый файл. Напечатать символы с n-го по   k-ый  l-ой строки.

3)        Дан текстовый файл. Получить слово, образованное вторыми символами каждой строки. Поместить его в новый файл.

4)        Дан текстовый файл. Получить последовательность символов, образованную p-ми символами каждой строки. Дописать ее в этот же файл.

5)       Дан текстовый файл. Подсчитать количество слов и символов в файле. Вывести полученные числа в этот же файл, заменяя его. Переименовать файл.

Бесплатный хостинг uCoz