Главная

Язык программирования Pascal

Что такое Паскаль

Запись числовых констант, переменных и выражений.

Типы данных. Операции и функции над данными разных типов.

Структура программы

Операторы присваивания, ввода и вывода

Простейшие программы

Условный оператор

Операторы цикла.

Массивы

Процедуры и функции.

Строки.

Множества

Записи

Файлы

Файлы.

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

< имя > = File Of < тип > ;
< имя > = Text ;
Первые называются типизированными файлами, а вторые -текстовыми.

В Турбо-Паскале описанные выше файлы называются логическими (кроме того, в системе Турбо-Паскаль есть логические файлы третьего вида - не типизированные). Основное назначение логического файла - обеспечить программе средства для обмена данными с периферийными устройствами компьютера. В связи с этом вводится понятие физического файла, как совокупности данных во внешней памяти (дискета, жесткий диск, магнитная лента и др.) Кроме того, в качестве физического файла могут использоваться и сами периферийные устройства, например, принтер).
Средством установления связи между логическими и физическими файлами в Турбо-Паскале является процедура Assign.

Assign (< ф.п. >, < имя файла >);
< ф.п. > - файловая переменная (переменная файлового типа), описанная в программе (имя логического файла).
< имя файла > - текстовое выражение, значением которого является записанное по правилам операционной системы MS DOS имя файла (имя физического файла). Типы компонент логического и физического файла должны совпадать. Затем необходимо инициализировать файл, указав для него направление передачи данных, т.е. открыть файл для записи или чтения.
Для чтения файл открывается стандартной процедурой
Reset (< ф.п. >); при этом специальная переменная-указатель устанавливается на начало файла.
Стандартная процедура
Rewrite (< ф.п. >) открывает файл для записи, при этом файл всегда создается заново, с потерей информации в данном физическом файле, если она была туда ранее записана.
Стандартная процедура
Append(< ф.п. >) открывает для записи существующий текстовой файл с целью его расширения, при этом переменная-указатель ставится в конец файла.
Чтение и запись происходят при помощи уже знакомых нам процедур ввода-вывода Read и Write, с тем лишь отличием, что в них необходимо указать в качестве первого параметра файловую переменную. После каждой операции переменная-указатель перемещается на одну компоненту.
После завершения в программе операций по обмену данными с файлом его необходимо закрыть стандартной процедурой.
Close(< ф.п. >).
При работе с файлами используется функция
Eof(< ф.п. >), которая возвращает значение True, если переменная-указатель стоит в конце файла, и False - в противном случае.

Пример 13.
Дан файл f компоненты которого являются целыми числами. Получить в файле g все четные компоненты файла f, а в файле h все нечетные.

Program Dfile;
Var f,h,g: File Of Integer;
    i: Integer;
Begin {Установка связи между файловыми переменными и соответствующими именами файлов}
    Assign( f ,’Data.dat’);
    Assign(g , ‘Chet.dat’);
    Assign(h , ‘Nechet.dat’);
    {Открытие файлов для чтения и записи}
    Reset(f); Rewrite(h); Rewrite(g);
    While Not(Eof(f)) Do
        Begin
            Read( f, i); {чтение из файла f}
            If Odd(i)
                Then Write(h,i) {запись в файл h}
                Else Write(g, i) {запись в файл g}
        End; {Закрытие файлов}
Close(f); Close(g); Close(h);
End.

Пример 14.
Дан текстовой файл. Получить копию файла.

Program CopyFile;
Var f,g: Text;
    s: String;
Begin
    {установка связи файловых переменных с именами файлов}
    Assign(f, ‘data1.txt’);
    Assign(g, ‘data2.txt’);
    {открытие файлов для чтения и записи}
    Reset(f); Rewrite(g);
    While Not(Eof(f)) Do
        Begin
            Readln(f,s); {чтение из файла в строку}
            Writeln(g,s) {запись в файл из строки}
        End;
    {закрытие файлов}
    Close(f); Close(g)
End.
 
 

 

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

Обращение

Действие

Append(f)

Открывает файл для добавления в конец файла

Read(f, СписокВвода)

Считывает из файла одно или более значений в одну или более переменных

ReadLn(f, СписокВвода)

То же с переходом к следующей строке файла

Write(f, СписокВывода)

Записывает одно или несколько значений в файл, заранее открытый для вывода

WriteLn(f, СписокВывода)

То же с выводом маркера – признака конца строки

SetTextBuf(f, Буфер [, Размер])

Назначает буфер ввода/вывода для файла (по умолчанию размер буфера – 128 байт)

Flash(f)

Выталкивает буфер файла вывода

Eoln(f)

Возвращает признак конца строки

SeekEoln(f)

Возвращает признак конца строки, предварительно пропустив все пробелы и символы табуляции

SeekEof(f)

Возвращает признак конца файла, предварительно пропустив все пробелы, символы табуляции и признаки конца строки

Сайт управляется системой uCoz