Автор: Пользователь скрыл имя, 02 Ноября 2011 в 19:32, курсовая работа
Прежде чем перейти к обработке текстовых файлов на языке Pascal следует разобраться с понятием файл. На языке Pascal файл представляет собой упорядоченную последовательность элементов. И в отличие от общепринятого понятия файлом на языке Pascal может быть не только информация хранящиеся на дисках но и внешние устройства (такие как: дисплей, клавиатура, принтер , любой порт ЭВМ и т.д.).
D:Word; {Дата рождения}
T:Text;
Begin
Assign(T,’my_file.txt’);
Rewrite(T);
F:=’Sharifov ‘;
D:=1987;
Write(T,F,’Rustam ‘);
Write(T,D);
Close(T);
End.
Процедура WriteLn([файловая
переменная],[список
вывода]);
Эта процедура полностью идентична процедуре WRITE за исключением того, что выводимая в текстовый файл строка символов завершается признаком конца строки EOLn.
WriteLn используется только для текстовых файлов. При вызове
WriteLn можно
опускать параметр список вывода, в этом
случае в файл передается признак конца
строки, что при выводе на экран приведет
к переводу курсора в начало следующей
строки.
Приведём
пример программы, использующей процедуру
Write:
Program Write_into_my_file;
Var F:String; {Фамилия}
D:Word; {Дата рождения}
T:Text;
Begin
Assign(T,’my_file.txt’);
Rewrite(T);
F:=’Sharifov ‘;
D:=1987;
WriteLn(T,F,’Rustam ‘);
WriteLn(T,D);
Close(T);
End.
Функция EOLn([файловая
переменная]);
Это
логическая функция, то есть возвращает
значения TRUE или FALSE. Возвращает значение
True, если на входном текстовом файле указатель
достиг маркера конца строки. Иначе принимает
значение False.
Если параметр [файловая переменная] опущен, функция проверяет стандартный файл Input.
Приведем пример программы использующей функцию EOLn:
Допустим нам дан входной текстовый файл In состоящий только из символьного типа данных Char. Нам надо записать в выходной текстовый файл Out только первую строку из входного файла.
Program End_Of_Line;
Var
In,Out:Text;
C:Char;
Begin
Assign(In,’indata.txt’);
Assign(Out,’outdata.txt’);
Reset(In);
Rewrite(Out);
Repeat
Read(In,C);
Write(Out,C);
Until EOLn; {Пока курсор не достигнет первого маркера конца строки будет производиться считывание и запись}
End.
Функция EOF([файловая
переменная]);
Проверяет является ли текущая позиция файла концом файла. EOF возвращает TRUE, если следующим считанным символом из файла или если файл пуст будет признак конца файла. В противном случае функция EOF возвращает FALSE.
Если параметр [файловая переменная] опущен то функция проверяет стандартный файл Input.
С
помощью этой функции можно с легкостью
считать всю информацию из файла.
Приведем пример программы
Допустим нам дан входной текстовый файл In состоящий только из символьного типа данных Char. Нам надо записать в выходной текстовый файл Out все символы из входного файла.
Program End_Of_Line;
Var
In,Out:Text;
C:Char;
Begin
Assign(In,’indata.txt’);
Assign(Out,’outdata.txt’);
Reset(In);
Rewrite(Out);
Repeat
Read(In,C);
Write(Out,C);
Until EOF; {Пока курсор не достигнет конца файла будет производиться считывание и запись}
End.
Функция SeekEOLn([файловая переменная]);
Пропускает
все пробелы и знаки табуляции
до маркера конца строки ЕОLn
или до первого значащего символа и возвращает
TRUE если маркер обнаружен. Т.е. функция
проверяет есть ли значащие символы
до конца строки и принимает значение
FALSE если они есть.
Если параметр [файловая переменная] опущен, функция проверяет стандартный файл INPUT.
Приведём пример программы использующей функцию EOLn:
Допустим нам дана строка во входном текстовом файле In:
‘1 2 3 4 5 ‘
(Без кавычек, после 5 стоят ненужные пробелы)
Program Seek_End_Of_line;
Var
s:array[1..5] of byte;
i:integer;
f:text;
Begin
assign(f,'temp.txt');
reset(f);
i:=0;
repeat
inc(i);
read(f,s[i]); {когда считается 5-ка цикл остановится так как нет значящих символов}
until seekeoln(f);
End.
Функция SeekEOF([файловая
переменная]);
Логическая функция. Пропускает все пробелы, знаки табуляции и маркеры конца строки EOLn до маркера конца файла или до первого значащего символа и возвращает TRUE,если маркер обнаружен. В противном случае FALSE. То есть с помощью этой функции можно проверить есть ли значащие символы до конца строки.
Если
параметр [файловая переменная] опущен,
функция проверяет стандартный файл
INPUT.
Процедура Flush([файловая
переменная]);
Сбрасывает
буфер текстового файла, связанного
с файловой переменной и открытого для
вывода процедурой Rewrite или Append. Это даёт
гарантию того , что вся информация, записываемая
в файл, будет сохранена во внешнем физическом
файле.
Процедура
не влияет на файлы открытые для
ввода.
Процедура SetTextBuf([файловая переменная],[новый размер буфера]);
Назначает
буфер ввода-вывода для текстового файла,
связанного с файловой переменной. [новый
размер буфера] – это переменная типа
Word.
Никогда
не применяется к открытым файлам,
поскольку в этом случае возможны
потери данных.
При обработке текстовых фалов на языке Pascal приходиться применять не только операторы работающие с файлами, но и другие возможности и структуры языка Pascal.
Ниже
будут приведены примеры
Program vosklicateliy_znak;
Var
C:Char;
Indata,Out:Text;
Begin
Assign(Indata,’indata.txt’);
Assign(Out,’outdata.txt’);
Reset(Indata); {Открываем}
Rewrite(Out); {файлы}
While not EOF(Indata) do
Begin
Read(Indata,C); {Считываем один символ}
If C=’.’ then C:=’!’; {Если символ точка, то присваиваем символьной переменной значение ‘!’ то есть восклицательный знак}
Write(Out,C); {Записываем символ в выходной файл}
End;
Close(Out);
End.
3 3
1 2 3
4 5 6
7 8 9
В выходной файл Out следует записать транспонированную матрицу A.
Program Transpor_A;
Var
A:Array[1..25,1..25] of integer;
Temp:Integer; {Переменная для обмена элементов матрицы}
n,m,i,j:byte;
Indata,Out:Text;
Begin
Assign(Indata,’indata.txt’);
Assign(Out,’outdata.txt’);
Reset(Indata); {Открываем}
Rewrite(Out); {файлы}
Read(In,n,m);
ReadLn(In); {Следующее считывание будет происходить с новой строки}
For i:=1 to n do
Begin
For j:=1 to m do
Read(Indata,a[i,j]); {Считывание данных}
ReadLn(Indata);
End;
For i:=1 to n do
For j:=i+1 to m do
Begin
Temp:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=Temp;
End;
For i:=1 to m do
Begin
For j:=1 to n do
Write(Out,a[i,j],’ ‘);
WriteLn(Out);
End;
Close(Out);
End.
Использованная литература:
Информация о работе Обработка текстовых файлов на языке Паскаль