Обработка текстовых файлов на языке Паскаль

Автор: Пользователь скрыл имя, 08 Декабря 2010 в 13:18, курсовая работа

Описание работы

ОБРАБОТКА ТЕКСТОВЫХ ФАЙЛОВ. Процедура Assign. Процедура Reset. Процедура Rewrite. Процедура Append. Процедура Close. Процедура Erase.

Работа содержит 1 файл

обработка текстовых файлов.docx

— 48.70 Кб (Скачать)

Var F:String; {Фамилия}

       D:Word;  {Дата рождения}

       T:Text;

Begin

       Assign(T,’my_file.txt’);

       Rewrite(T);

       F:=’Sharifov      ‘;

       D:=1987;

       Write(T,F,’Rustam        ‘);

       Write(T,D);

       Close(T);

End.

    

  Процедура WriteLn([файловая переменная],[список вывода]); 

      Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая в текстовый файл строка символов завершается признаком конца строки EOLn.

       

     WriteLn используется только для текстовых файлов. При вызове

WriteLn можно опускать параметр список вывода, в этом случае в файл передается  признак конца строки, что при выводе на экран приведет к переводу курсора в начало следующей строки. 

   Приведём пример программы, использующей процедуру Write: 

Program Write_into_my_file;

Var F:String; {Фамилия}

       D:Word;  {Дата рождения}

       T:Text;

Begin

       Assign(T,’my_file.txt’);

       Rewrite(T);

       F:=’Sharifov      ‘;

       D:=1987;

       WriteLn(T,F,’Rustam        ‘);

       WriteLn(T,D);

       Close(T);

End. 

                      Функция EOLn([файловая переменная]); 

      Это логическая функция, то есть возвращает значения TRUE или FALSE. Возвращает значение True, если на входном текстовом файле указатель достиг маркера конца строки. Иначе принимает значение False. 

   Если параметр [файловая переменная] опущен, функция проверяет стандартный файл Input.

       

      Приведем  пример программы использующей функцию EOLn:

Допустим  нам дан входной текстовый файл In состоящий только из символьного типа данных Char. Нам надо записать в выходной текстовый файл Out только первую строку из входного файла.    

Program End_Of_Line;

Var

    In,Out:Text;

    C:Char;

Begin

     Assign(In,’indata.txt’);

     Assign(Out,’outdata.txt’);

     Reset(In);

     Rewrite(Out);

     Repeat

       Read(In,C);

       Write(Out,C);

     Until EOLn; {Пока курсор не достигнет первого маркера конца строки будет производиться считывание и запись}

End. 
 

                         Функция EOF([файловая переменная]); 

      Проверяет является ли текущая позиция файла концом файла. EOF возвращает TRUE, если следующим считанным символом из файла или если файл пуст будет признак конца файла. В противном случае функция EOF возвращает FALSE.

       Если параметр [файловая переменная] опущен то функция проверяет стандартный файл Input.

   

     С помощью этой функции можно с  легкостью считать всю информацию из файла. 

       Приведем пример программы использующей функцию EOF:

Допустим  нам дан входной текстовый файл In состоящий только из символьного типа данных Char. Нам надо записать в выходной текстовый файл Out все символы из входного файла.    

Program End_Of_Line;

Var

    In,Out:Text;

    C:Char;

Begin

     Assign(In,’indata.txt’);

     Assign(Out,’outdata.txt’);

     Reset(In);

     Rewrite(Out);

     Repeat

       Read(In,C);

       Write(Out,C);

     Until EOF; {Пока курсор не достигнет конца файла будет производиться считывание и запись}

End. 
 

                Функция SeekEOLn([файловая переменная]);

  

      Пропускает  все пробелы и знаки табуляции  до маркера  конца строки ЕОLn  или до первого значащего символа и возвращает TRUE  если маркер обнаружен. Т.е. функция проверяет есть ли  значащие символы до конца строки и принимает значение FALSE если они есть. 

  Если параметр [файловая переменная] опущен, функция проверяет стандартный файл  INPUT.

      

      Приведём  пример программы использующей функцию EOLn:

Допустим  нам дана строка во входном текстовом файле In:

‘1 2 3 4 5         ‘ 

(Без кавычек, после 5 стоят ненужные пробелы)      

Program Seek_End_Of_line;

 Var

  s:array[1..5] of byte;

  i:integer;

  f:text;

Begin

   assign(f,'temp.txt');

   reset(f);

   i:=0;

   repeat

     inc(i);

     read(f,s[i]);        {когда считается 5-ка цикл остановится так как нет значящих символов}

   until seekeoln(f);

End.

                    

               Функция SeekEOF([файловая переменная]); 

      Логическая  функция. Пропускает все пробелы, знаки  табуляции и маркеры конца  строки EOLn до маркера конца файла или до первого значащего символа и возвращает TRUE,если маркер обнаружен. В противном случае FALSE. То есть с помощью этой функции можно проверить есть ли  значащие символы до конца строки.

      Если  параметр [файловая переменная] опущен, функция проверяет стандартный файл  INPUT. 

        Процедура Flush([файловая переменная]); 

      Сбрасывает  буфер текстового файла, связанного с файловой переменной и открытого  для вывода процедурой Rewrite или Append. Это даёт гарантию того , что вся информация, записываемая в файл, будет сохранена во внешнем физическом файле. 

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

Процедура SetTextBuf([файловая переменная],[новый размер буфера]);

  Назначает буфер ввода-вывода для текстового файла, связанного с файловой переменной. [новый размер буфера] – это переменная типа Word.  

      Никогда не применяется к открытым файлам, поскольку в этом случае возможны потери данных. 
 
 

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

 

      Ниже  будут приведены примеры программ обрабатывающих текстовый файл.

 

    1. Дан входной файл In состоящий из текста на русском языке. В тексте точки встречаются только в конце предложения. Нужно перевести все повествовательные предложения оканчивающиеся точкой в восклицательные. Результат записать в выходной файл.

  

Program vosklicateliy_znak;

Var

   C:Char;

   Indata,Out:Text;

Begin

   Assign(Indata,’indata.txt’);          {Связываем }

   Assign(Out,’outdata.txt’);       { файлы}

   Reset(Indata);              {Открываем}

   Rewrite(Out);            {файлы}        

   While not EOF(Indata) do

     Begin

     Read(Indata,C);  {Считываем один символ}

     If C=’.’ then C:=’!’;  {Если символ точка, то присваиваем символьной переменной значение ‘!’ то есть восклицательный знак}

     Write(Out,C); {Записываем символ в выходной файл}

     End;

   Close(Out);

End.  

    1. Дан входной  файл In который содержит параметры матрицы A в первой строке а на следующих строках саму матрицу. Параметры n<=25 и m<=25. n- количество строк матрицы, m- количество столбцов. Пример файла In:

      3 3

      1 2 3

      4 5 6

      7 8 9 

      В выходной файл Out следует записать транспонированную матрицу A.

             

Program Transpor_A;

Var

  A:Array[1..25,1..25] of integer;

  Temp:Integer; {Переменная для обмена элементов матрицы}

  n,m,i,j:byte;

  Indata,Out:Text;

Begin

  Assign(Indata,’indata.txt’);          {Связываем }

  Assign(Out,’outdata.txt’);       { файлы}

  Reset(Indata);              {Открываем}

  Rewrite(Out);            {файлы}        

  Read(In,n,m);

  ReadLn(In); {Следующее считывание будет происходить с новой строки}  

  For i:=1 to n do

   Begin

     For j:=1 to m do

       Read(Indata,a[i,j]); {Считывание данных}

     ReadLn(Indata);

   End;

  For i:=1 to n do

    For j:=i+1 to m do

      Begin

       Temp:=a[i,j];

       a[i,j]:=a[j,i];

       a[j,i]:=Temp;

      End;

  For i:=1 to m do

    Begin

     For j:=1 to n do

       Write(Out,a[i,j],’ ‘);

     WriteLn(Out);

    End;

  Close(Out);

End.

 

                                  

   

Использованная  литература:

  1. “Turbo Pascal 7.0 . Начальный курс” Фаронов В.В.
  2. “Turbo Pascal. Программирование на языке высокого уровня” Немнюгин С.А.
  3. “Лекции по программированию на Паскале” www.pascal.dax.ru
  4. “Руководство по языку B.Pascal 7 &amp; Objects/LR, Глава 14, Ввод и вывод” www.citforum.ru

 

Информация о работе Обработка текстовых файлов на языке Паскаль