Работа с текстовыми файлами. Физические файлы и файловые переменные. Подпрограммы открытия и обработки файлов, страница 3

Создать текст можно “собственными руками”, набирая его строки на клавиатуре в ответ на приглашение при выполнении такой программы:

program creatext ( input, output );

var f : text; s : string;

begin

assign (f, ‘myfile.txt’);

rewrite(f);

writeln ( ‘Наберите символы строки и нажмите [Enter]: ‘);

while not eof ( input ) do begin

readln(s);

writeln (f, s) ;

writeln ( ‘Наберите символы строки и нажмите [Enter]: ‘);

end;

close (f)

end.

Для задания конца текста на клавиатуре нужно вместо набора очередной строки нажать клавиши [Ctrl+Z]. И не забыть про [Inter].

Отметим, что при закрытии текста с помощью процедуры close к нему добавляется символ конца файла chr (26).

4. Чтение числовых констант из текста.

Для чтения числовых констант удобно воспользоваться процедурой READее выполнение в случае чтения текстов полностью отличается от чтения типизированных файлов. Ее вызов, как и для чтения типизированных файлов, имеет вид:

read(f, список_имен_переменных)

где f – имя текста, а переменные имеют числовые типы. Для безошибочного выполнения вызова файл должен содержать последовательность констант, типы которых соответствуют типам переменных списка.

Целая константа – это последовательность цифр, возможно, со знаком “+” или “-“ в начале, которая задает целое число соответствующего типа, причем между знаком и первой цифрой в тексте не может быть пробелов. Действительная константа – это последовательность цифр и других символов со структурой констант языка Turbo Pascal, например 1.1, 2., 0.99, le-3, -2.73Е+02. Каждая целая константа также может рассматриваться как действительная.

Числовые константы в текстах отделяются произвольным количеством пробелов. Символы табуляции и конца строки также будем называть пробелами.

Вызов read(f, X), где X — имя целой или действительной переменной, выполняется следующим образом. Из текста читаются пробелы, а после них – символы константы до ближайшего пробела. Доступным после чтения константы будет следующий за ней пробел. Если символы в самом деле образуют константу соответствующего типа, то по ним вычисляется значение и присваивается переменной. При действительной переменной X в тексте может быть и целая константа – по ней вычисляется действительное значение. Например, по целой константе 99 – действительное значение 99.0.

Символы могут не образовывать константу соответствующего типа – тогда возникает ошибочная ситуация и выполнение программы аварийно завершается. Например, ошибочными являются последовательности символов “- 2” (здесь стоит пробел между знаком и цифрой), “12345m”, “123-“ (присутствуют нецифровые символы там, где их быть не должно), или “13.” (если читается значение целой переменной).

Отметим, что системы программирования обеспечивают средства обработки ошибочных ситуаций и предотвращения аварийного завершения. Но здесь мы это не рассматриваем.

Система программирования Turbo Pascal  имеет следующую особенность. Если доступен конец файла, то попытка прочитать число не завершается аварийно, а соответствующая переменная получает значение 0!

Чтение констант базовых типов с помощью процедуры READLN аналогично чтению с помощью процедуры read. Отличие ее в том, что после чтения последней константы все символы текста, которые остались до ближайшего слова eol, пропускаются вместе с ним. Доступным становится первый символ следующей строки текста. Список имен переменных может быть пустым; в таком случае вызов readln (f) задает пропуск, т.е. чтение без сохранения, текущей строки текста.

5. Особенности чтения символов и строк из текста.