Имя и параметры | Типы параметров | Тип результата | Действие |
Процедуры | |||
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;
- находится в неопределенном состоянии.