Стандартные процедуры и функции для работы с файлами. Имя и параметры Типы параметров Тип результата Действие Процедуры Assign(f,name) f – файловая переменная name -

Имя и параметры Типы параметров Тип результата Действие
Процедуры
Assign(f,name) f – файловая переменная name - string   связывает файловую переменную f с файлом с именем name
Reset(f) f - файловая переменная   Открывает файл, связанный с файловой переменной f. Текстовые - только на чтение, типизированные - на чтение и запись
Rewrite(f) f - переменная файлового типа   создает и открывает новый файл, связанный с файловой переменной f. Если файл с указанным именем уже существует, то он удаляется, и вместо него создается новый файл. Текстовые -только на запись, типизированные - на чтение и запись
Append(f) f - типа Text   открывает текстовый файл на запись для добавления. Файловый указатель устанавливается в конец файла.
Close(f) f - файловая переменная   закрывает файл
Read(f,a,b,...) f - файловая переменная, a,b - переменные простого типа, string или указатели   считывает значения из файла f в переменные a, b...Для типизированного переменные a, b … - базового типа, а их значения считываются из файла в двоичном виде. Для текстового файла, переменные a, b... могут иметь различные типы, а их значения храниться в текстовом формате
Write(f,a,b,...) f - переменная файлового типа, a,b - выражения простого типа, string или указатели   записывает значения a, b... в файл f. Для типизированного - типы значений a, b... – базовые. Для текстового- значения a, b... выводятся в текстовом виде, при этом могут быть использованы форматы вывода
Readln(f,a,b,...) f - переменная типа Text, a,b - переменные простого типа, типа string или указатели   считывает значения из текстового файла f в переменные a, b..., после чего пропускает символы до конца строки. Вызов readln(f) просто пропускает символы до конца строки
Writeln(f,a,b,...) f - переменная типа Text, a,b - выражения простого типа, типа string или указатели   записывает значения a, b... в текстовый файл f, после чего записывает в него символ конца строки. Вызов writeln(f) просто записывает в файл символ конца строки
Seek(f,n) f - переменная типа file n-integer   перемещает файловый указатель в типизированном файле на n-ый элемент (нумерация начинается с нуля)
Truncate(f) f - переменная типа file   удаляет все элементы типизированного файла с текущей позиции файлового указателя до конца файла
Rename(f,name) f - файловая переменная, name - string   переименовывает файл, связанный с файловой переменной f. Файл должен быть закрыт
Erase(f) f - переменная файлового типа   удаляет файл, связанный с файловой переменной f. Файл должен быть закрыт
Функции
FileExists(name) name - string boolean возвращает True, если на диске имеется файл с именем name, в противном случае возвращает False
CanCreateFile(name) name - string boolean возвращает True, если можно создать файл с именем name, в противном случае возвращает False
Eof(f) f - переменная файлового типа boolean возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
Eoln(f) f - переменная типа Text boolean возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
SeekEof(f) f - переменная типа Text boolean пропускает пробелы, символы табуляции и перехода на новую строку, после чего возвращает True, если файловый указатель стоит на конце файла, и False в противном случае
SeekEoln(f) f - переменная типа Text boolean пропускает пробелы, символы табуляции, после чего возвращает True, если файловый указатель стоит на конце строки, и False в противном случае
FileSize(f) f - переменная типа file integer возвращает количество элементов в типизированном файле
FilePos(f) f - переменная типа file integer возвращает позицию файлового указателя в типизированном файле

Пример 1: Текстовый файл представляет собой фрагмент программы на языке Pascal. Определить количество строк в которых есть служебное слово «begin».

Program file1;

Var f:text; S,name:string; n,k:byte;

Begin

Writeln(‘введите путь и имя файла’); Readln(name);

Assign(f, name);

Rewrite(f); {открыть файл для записи}

Repeat

Readln(s);

Writeln(f,s); {запись строки в файл}

Until s=’’; {пока не пустая строка.}

Close(f); {закрыть файл}

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

n:=0;

While not(eof(f)) do {пока не конец файла}

Begin

Readln(f,s); {читать строку из файла}

S:=LowerCase(s); {преобразует строку к нижнему регистру}

K:=pos(‘begin’,s);

If k<>0 then n:=n+1;

end;

close(f);

if n=0 then writeln(‘нет строк со словом begin’)

else writeln(‘кол-во строк=’,n)

end.

Результат решения задачи

введите путь и имя файла

e:\a.txt

BegiN

end.

кол-во строк=1

Пример 2: Создать файл, содержащий информацию о студентах: фамилия, гражданство. Вывести фамилии иностранных граждан.

Program file2; Type ved=record fam:string[20]; gr:string[15] end; Var f1:file of ved; z:ved; i,n:integer; l:boolean; begin assign(f1,'e:\a.dat'); rewrite(f1); writeln('введите количество студентов'); readln(n); for i:=1 to n do begin readln(z.fam); readln(z.gr); write(f1,z) end; close(f1); reset(f1); l:=true; repeat read(f1,z); if z.gr<>'Россия' then begin writeln(z.fam,' - ',z.gr); l:=false; end Until eof(f1); close(f1); if l then write('все граждане России') end.   Результаты решения задачи: введите количество студентов Иванов А.Р. Россия Бортко П.О. Украина Смирнова К.Р. Россия Сванидзе А.О. Грузия Бортко П.О. - Украина Сванидзе А.О. - Грузия

Write(f1,z))

Тема 2.11 Динамические структуры данных

Динамическая память- это оперативная память компьютера, предоcтавляемая программе при ее работе, за вычетом сегмента статических данных (64 Кб), стека(обычно 16 Кб) и собственно тела программы. Динамическая память в Turbo Pascale рассматривается как сплошной массив байтов, который называется кучей. Физически куча располагается в старших адресах сразу за областью памяти, которую занимает тело программы. Начало кучи хранится в стандартной переменной HeapOrg, конец – в переменной HeapEnd. Текущую границу незанятой области данамической памяти указывает указатель HeapPtr.

Переменные, которые создаются и уничтожаются в процессе выполнения программы называются динамическими или динамически размещаемыми. Доступ к таким переменным осуществляется с помощью указателей. Указатель (ссылочная переменная) – это переменная, которая в качестве своего значения содержит адрес первого байта памяти, по которому хранятся данные. Указатель занимает в памяти 4 байта, а данные на которые он указывает могут занимать десятки и более килобайт. Чтобы обратится к содержимому ячейки, на которую указывает указатель, требуется после его идентификатора поставить символ ^. Эта операция называется операцией разыменования.

Указатели бывают:

- типизированные;

- нетипизированные.

Для объявления типизированного указателя используется символ ^, который размещается непосредственно перед соответствующим типом данных, например:

Type Ptr = ^ integer; VarP1: ^integer; P2,P3: Ptr;


Типизированные указатели могут ссылаться на еще необъявленный тип данных

Например: Type tt= ^ Zap;

Zap = record

Info: real;

Next: tt

End;

Var a: Zap;

p, q, begl, endl: tt;

Поскольку нетипизированные указатели не связаны с конкретным типом данных, их чрезвычайно удобно использовать для динамического размещения данных, структура и тип которых меняется в ходе выполнения программы. Для объявления нетипизированных указателей используется стандартный тип POINTER.

Var имя перем: рointer;

Указательная переменная может находиться в трех состояниях:

- содержать адрес какой-либо переменной, память под которую уже выделена;

- содержать специальный пустой адрес nil;

- находится в неопределенном состоянии.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: