русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Т Е К С Т О В Ы Е Ф А Й Л Ы


Дата добавления: 2014-11-27; просмотров: 517; Нарушение авторских прав


 

Текстовые файлы трактуются в Турбо Паскале как совокупность строк переменной длины. К каждой строке возможен лишь последовательный доступ, начиная с первой строки. В конце каждой строки ставится специальный признак (маркер) eol (end of line), а в конце файла - признак (маркер) eof (end of file).

При формировании текстового файла с клавиатуры признак eol генерируется при нажатии клавиши Enter, признак eof - при нажатии клавиш Ctrl+Z. Признак eol - это два последовательных байта с кодами по таблице ASCII #13 и #10. Признак eof - байт с кодом #26. Код #13 обычно обозначают CR (Carrige return - Возврат каретки), код #10 - LF (Line feed - Перевод строки), код #26 - Sub (Замена).

 

Для выполнения операций ввода-вывода в текстовых файлах используются процедуры Read, Readln, Write, Writeln.

 

Процедура Read(F,x1,x2,...,xn) эквивалентна следующей последовательности процедур:

Read(F,x1); Read(F,x2); ...; Read(F,xn).

Для Readln(F,x1,x2,...,xn) имеем аналогично:

Read(F,x1); Read(F,x2); ...; Read(F,xn); Readln(F).

Процедура Readln(F) производит поиск в файле F ближайшего маркера eol и устанавливает указатель файла на следующую после eol позицию, т.е. при этом производится переход на следующую строку текстового файла..

 

Процедура Write(F,x1,x2,...,xn) эквивалентна следующему:

Write(F,x1); Write(F,x2); ...; Write(F,xn).

Для Writeln(F,x1,x2,...,xn) имеем аналогично:

Write(F,x1); Write(F,x2); ...; Write(F,xn); Writeln(F).

Процедура Writeln(F) записывает в текущую позицию файла F маркер eol.

 

Если из текстового файла читаются переменные типа char, то в этом случае читается все содержимое файла, в том числе коды #13, #10, #26 и др. Ввод переменных типа stringосуществляется по текущей длине строк файла, если она не превышает объявленную длину строковой переменной; в противном случае читается количество символов, соответствующее длине этой переменной. В общем случае при вводе строк целесообразно использовать процедуру Readln, при вводе чисел - процедуру Read.



При вводе очередного числа процедура Read вначале производит его выделение из строки файла, а затем преобразование в числовой формат аналогично тому, как это делает процедура Val.

 

Для текстовых файлов могут использоваться три предописанные функции, неприменимые для файлов другого типа: Eoln, SeekEoln и SeekEof.

Функция Eoln(F):boolean возвращает значение true, если во входном потоке достигнут маркер конца строки eol.

Функция SeekEoln(F):boolean пропускает все пробелы и знаки табуляции до маркера конца строки eol или до первого значащего символа и возвращает значение true, если такой маркер обнаружен.

Функция SeekEof(F):boolean пропускает все пробелы, знаки табуляции и маркеры конца строки вплоть до маркера конца файла eof или до первого значащего символа и возвращает значение true, если такой маркер обнаружен.

 

Ввод из текстового файла рекомендуется организовывать с использованием функций Eof или SeekEof.

 

Пример. Ввести из текстового файла числовой массив, количество элементов которого заранее неизвестно.

 

Program InNum1;

ConstNmax = 1000;

TypeAr = array[1..Nmax] of real;

Varn : integer; { кол-во элементов в массиве }

X : Ar;

F : text;

Begin

Assign(F,'F.dat'); Reset(F);

n:=0;

While not eof(F) do

Begin

Inc(n); Read(F,X[n]);

End;

Close(F);

End.

 

Программа InNum1, используемая для ввода числовых данных, имеет один недостаток. Если в файле между последним числом и маркером eof имеется хотя бы один пробел, то это вызовет ввод и соответственно включение в массив X дополнительного элемента, равного нулю, что может в дальнейшем исказить результаты обработки массива X. Этот недостаток можно устранить, если при вводе числовых данных вместо функции Eof использовать функцию SeekEof. Тогда соответствующий фрагмент программы InNum1 будет иметь вид:

 

While notSeekEof(F) do

Begin

Inc(n); Read(F,X[n]);

End;

 

При вводе последовательности строк нужно использовать функцию Eof, поскольку функция SeekEof игнорирует пробелы в файле, несмотря на то, что эти пробелы могут входить в состав вводимых строк.

Если при вводе строк вместо процедуры Readln использовать процедуру Read, то после исчерпания строки файла будет непрерывно читаться пустая строка, следствием чего является зацикливание программы:

While noteof(F) do

Begin

Read(F,S);

Обработка строки S

End;

 

 



<== предыдущая лекция | следующая лекция ==>
ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ ФАЙЛОВ ЛЮБОГО ТИПА | Т И П И З И Р О В А Н Н Ы Е Ф А Й Л Ы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.