Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория кратко.docx
Скачиваний:
8
Добавлен:
27.02.2021
Размер:
44.82 Кб
Скачать
    1. Текстовые файлы

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу Text. Предназначены для хранения текстовой информации (исходные тексты программ). Компоненты (записи) текстового файла могут иметь переменную длину.

Текстовый файл – совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. В конце каждой строки ставится специальный признак EOLN (конец строки), а в конце всего файла EOF(конец файла).

Для доступа к записям применяются процедуры Read, ReadLn, Write, WriteLn.

Ввод массива данных.

Const

N=100;

Var

f:text;

m:array [1..N] of real;

i:integer;

begin

assign(f,’prog.dat’);

reset(f);

i:=1;

while not EOF(f) and (i<=N) do

begin

reaf(f,m[i]);

inc(i)

enf;

close(f);

end.

    1. Типизированные файлы

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

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

Процедуры: Read, Write.

Seek(<файловая переменная>, <номер компонента>) – смещает указатель файла к требуемому компоненту.

    1. Нетипизированные файлы

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

При инициации нетипизированного файла процедурами Reset или Rewrite можно указать длину записи нетипизированного файла в байтах (максимальная длина - 65535).

Var

F:file;

Begin

Assign(F,’file.dat’);

Reset(F,512);

End.

При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и Write, которые заменяются соответственно высокоскоростными процедурами BlockRead и BlockWrite.

BlockRead(<файловая переменная>, <буфер>, <D>[,<NN>])

BlockWrite(<файловая переменная>, <буфер>, <D>[,<NN>])

Буфер – имя переменной, которая будет участвовать в обмене данными с дисками.

D – количество записей, которые должны быть прочитаны или записаны за одно обращение к диску.

  1. МОДУЛИ

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

Структура:

Unit <имя модуля>;

Interfase <интерфейсная часть>

Implementation <исполняемая часть>

Begin <инициирующая часть>

End.

Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается с помощью ключевого слова

Uses <список модулей> с которыми устанавливается связь

Если Uses используется, то оно должно открывать раздел описаний основной программы.

Uses CTR, Craph, Clobal;

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

Unit Cmplx;

Interface

Type

Complex=record

re,im:real;

end;

Procedure Add(x,y:complex; var z:complex);

Чтобы основной программе стал доступен тип Complex и процедура из модуля Cmplx, следует написать

Uses Cmplx;

Исполняемая часть содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и др., если они используются в инициирующей части.

Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных переменных (тип результата для функции), т.к. они описаны в интерфейсной части.

Unit Cmplx;

Interface

Type

Complex=record

re,im:real;

end;

Procedure Add(x,y:complex; var z:complex);

Implementation

Procedure Add;

Begin

z.re:=x.re+y.re;

z.im:=x.im+y.im;

End;

End.

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

После объявления Uses программе станут доступны все объекты объявленные в интерфейсной части модуля Cmplx.

Uses Cmplx;

Var

a,b,c:complex;

begin

a.re:=1; b.re:=1; a.im:=1; b.re:=1;

Add(a,b,c);

WriteLn(‘Сложение’, c.re,c.im);

End.