- •Обращение к полям записи
- •Оператор with
- •Записи с вариантами
- •Рекурсия
- •Вычислить n!
- •Вычисления чисел Фибоначчи
- •Вычисления значений формул
- •Быстрая сортировка
- •Процедуры и функции общие для всех типов файлов
- •Режимы работы файла
- •Опция компиляции
- •Процедуры и функции модуля system
- •Процедуры и функции для типизированных файлов
- •Как добиться прямого доступа??
- •Стандартная конструкция редактирования файла
- •Тектовые файлы
- •Процедуры и функции для текстовых файлов
- •Способы считывания
- •Бинарные файлы
- •Работа с динамической памятью
- •Pointer
- •Дерево Absolute
- •Типизированные ( переменные ) указатели
- •Процедуры работы с кучей
- •Динамические массивы
- •Связные списки
- •Упорядоченные списки
- •Деревья
Тектовые файлы
Текстовый файл – в паскале как совокупность строк переменной длины
Доступ к каждой строке возможен только последовательно, начиная с первой
Служебные символы:
#13 – cr(carragereturn)write(#13); {Переход на начало строки}
#10 – lf(linefit)write(#10) {переход на новую стоку}
#9 –Ht {Горизонтальная табуляция}
#26– EOF (end of line)
#32 –SP {Пробел}
Процедуры и функции для текстовых файлов
Procedure reset(var f) {ОТкрывает}
Procedure rewrite (var f) {пЕрезапись}
Procedure append (var f)
Var f:text;
Begin
Assigfile(f,’1.txt’);
Append(f);
Write(f,’.’);
Closedile(f);
End.
Procedure settextbuf (var f:text; var buf; [size:word {необязательно}]); {Позволяет установить буфер ввода вывода для текстового файла}
Var buffer:array[1..4096] of char;
F:text;
Filename:string;
Assignfile(f,filename);
Settextbuf(f,buffer,4096);
Reset(f);
{Использывать только тогда, когда фаил закрыт}
Procedure read(var f,v1);
Параметры считывания не могут быть переменные типа BooleanИ перечислемого типа
Если параметрами считывания являются символы, то при вызове процедуры readвыполняется чтение одного символа, и значение символа присваиваетсяv{}. Если указатель файла достиг конца очередной строки то результатом чтения будет символ с кодом 13, а если указатель достигнет конца файла то результатом чтения будет символ с кодом 26
Если считывание осуществляется с readln, то после считывания одного символа указатель переставляется за символEOL, тоесть на начало другой строки
При считывание переменных типа string[N] с позиции курсора считывается строка длинойN. При использовании процедурыread, признакEOLне позволит проитать дальше. Обязательно использование процедурыreadln;
Var f:text; str:string;
Begin
Assignfile(f,’1.txt’);
Reset(f);
While not eof(f) do begin
Read(f,str);{readln} writeln(str);
End;
Close(f);
End.
При считывании числовых данных, процедура readвыделяет подстроку которая может быть преобразована в число, вырезая из нее пробелы, символы табуляции, и тому подобное. Если при пропуске пробелов встретится символeof, то переменная получает значения ноль.
{Считывания массива данных. }
Const n=100;
Var f:text; I:integer;
Mas:array[1..n] of real;
Begin
Assignfile(f,1.txt,);
Reset(f); i:=1;
While not eof (f) and(i<=n) do begin
Read(f,mas[i]); inc(i);
End;
Closefile(f);
End.
Procedure write (var f, v1);
Var f:text; ch:char; st:string;
X:integer; r:real;
……………………………………..
Write(f,ch:10);
Write(f,st:100);
Write(f,x:5); write(f,r::8:2);
FunctionEOLN(varf:text):Boolean; {Возвращает ТРУ если указатель стоит на признаке конец строки}
FunctionseekEOF(varf:text):boolean; {Возвращает значение ТРУ если можно достичь конца файла минуя пробелы табуляции и признаки конца строки}
FunctionseekEOLN(varf:text):Boolean; {Возвращает тру если можно достичь конца строки минуя лишь пробелы и символы табуляции}
Способы считывания
Var f:text; n:integer;
Begin
Assignfile(f,’text.txt’);
Rewrite(f);
Writeln(f,’ 11 22 33 44 ‘);
Writeln(f,’ 55 66 77 88 ‘);
Close(f);
Способы:
способ
Reset(f);
While not eof(f) do begin
Read(f,n); write(n:4);
End;
Способ
While not seekEOF(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
Close(f);
Способ
Reset(f);
While not eoln(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
Closefile(f);
Reset(f);
While not seekeoln(f) do begin
Read(f,n); write(n:4);
Writeln;
Closefile;
Способ
Reset(f);
While not eof do begin
While not eoln(f) do begin
Read(f,n); write(n:4);
End;
End;
Closefile(f);
Способ
Reset(f);
While not seekeof do begin
While not seekeoln(f) do begin
Read(f,n); write(n:4);
End;
Writeln;
End;
Closefile(f);
Пример: какой то там пример я нифига не запсиал ибо у меян шаблоны сбились.