Вход

Текстовые файлы

Реферат по информатике и информационным технологиям
Дата добавления: 17 ноября 2007
Язык реферата: Русский
Word, rtf, 156 кб (архив zip, 20 кб)
Реферат можно скачать бесплатно
Скачать
Данная работа не подходит - план Б:
Создаете заказ
Выбираете исполнителя
Готовый результат
Исполнители предлагают свои условия
Автор работает
Заказать
Не подходит данная работа?
Вы можете заказать написание любой учебной работы на любую тему.
Заказать новую работу











Реферат

на тему

«Текстовые файлы».





Выполнили:

Ученицы**класса «А»

средней школы №**

*** и

***.



Содержание.



  • Введение………………………………………….-3-

  • Процедура READ…………………………………-3- - -5-

  • Процедура WRITE……………………………….-5- - -6-

  • Процедура WRITELN…………………………….-6-

  • Логическая функция EOLN………………………..-6- - -7-

  • Логическая функция SEEKEOLN…………………-7-

  • Логическая функция SEEKEOF…………………..-7- - -8-

  • Логическая функция FILEPOS……………………-8-

  • Список литературы………………………………-9-



Введение.



Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу text. Текстовые файлы предназначены для хранения тек­стовой информации. Именно в такого типа файлах хранятся, например, ис­ходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними.

Текстовый файл трактуется в Турбо Паскале как совокупность строк пере­менной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак eoln {End Of LiNe — конец стро­ки), а в конце всего файла — признак eof {End Of File — конец файла). Эти признаки можно протестировать одноименными логическими функциями (см. ниже). При формировании текстовых файлов используются следующие системные соглашения:

? eoln — последовательность кодов ASCII #13 (CR) и #10 (LF);

? eof — код #26 стандарта ASCII.

Для доступа к записям применяются процедуры read, readln, write, writeln. Они отличаются возможностью обращения к ним с переменным количеством фактических параметров, в качестве которых могут использоваться символы, строки и числа. Первым параметром в любой из перечисленных процедур может стоять файловая переменная. В этом случае осуществляется обращение к дисковому файлу или логическому устройству, связанному с переменной процедурой assign. Если файловая переменная не указана, происходит обра­щение к стандартным устройствам input и output.


Процедура read.



Обеспечивает ввод символов, строк и чисел. Формат обра­щения:

READ (<ф>,<сп>) или READ (<сп>)

Здесь <сп> — список ввода: последовательность из одной или более переменных типа char, string, а также любого целого или вещественного типа.

При вводе переменных типа char выполняется чтение одного символа из файла и присваивание считанного значения переменной. Если перед вы­полнением чтения указатель файла достиг конца очередной строки, то ре­зультатом чтения будет символ cr (ASCII код #13), а если достигнут конец файла, то — символ eof (код #26). При вводе с клавиатуры символ cr вво­дится при нажатии на клавишу , а символ eof — при одновремен­ном нажатии клавиш + .

При вводе переменных типа string количество считанных процедурой и поме­щенных в строку символов равно максимальной длине строки, если только рань­ше не встретились символы cr или eof. В этом случае сами символы cr и eof в строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, "лишние" символы до конца строки отбра­сываются, а новое обращение к read возвращает пустую строку. Таким образом, процедура read не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода по­следовательности строк нужно использовать процедуру readln (cm. ниже).

При вводе числовых переменных процедура read вначале выделяет подстро­ку во входном потоке по следующему правилу: все ведущие пробелы, сим­волы табуляции и маркеры конца строк eoln пропускаются; после выделе­ния первого значащего символа, наоборот, любой из перечисленных символов или символ eof служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представ­ление числовой константы соответствующего типа и преобразуется во внут­реннее представление, а полученное значение присваивается переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода/вывода. Если при пропуске ведущих пробелов встретился символ eof, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант.

При использовании процедуры read применительно к стандартному устрой­ству input, т. е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу . Это позволяет редактировать данные при их вводе. Для редактирова­ния используются следующие клавиши:

? , +, <<-> — стирают символ слева от курсора;

? <->> — восстанавливает символ за символом предыдущую строку ввода;

? +, — завершает ввод по процедуре read; оставшиеся "лишние" символьные параметры принимают значение chr (26), строки возвращаются пустыми, а численные переменные остаются без изменения.

Максимальная длина буфера ввода при работе с клавиатурой составляет 127 символов. Ввод с клавиатуры по процедуре read сопровождается эхо-повтором вводимых символов на экране ПК.

Процедура read прекрасно приспособлена к вводу чисел. При обращении к ней за вводом очередного целого или вещественного числа процедура "перескакивает" маркеры конца строк, т. е. фактически весь файл рассмат­ривается ею как одна длинная строка, содержащая текстовое представление чисел. В сочетании с проверкой конца файла функцией eof процедура read позволяет организовать простой ввод массивов данных, например, так:

const

N = 1000; {Максимальная длина ввода} var

f : text;

m : array [1..N] of real; i : Integer; begin

assign(f, 'prog.dat') ; reset(f); i := 1;

while not EOF(f) and (i <= N) do begin

read(f,m[i]); inc(i) end; close(f);

помещен в начало следующей строки, в то время как в процедуре read эхо-повтором клавиши является символ cr и курсор помещается в на­чало текущей строки.


Процедура write.



Обеспечивает вывод информации в текстовый файл или передачу ее на логическое устройство. Формат обращения:

WRITE (<ф>, <сп>) или WRITE (<сп>)

Здесь <сп> — список вывода: последовательность из одного или бо­лее выражений типа char, string, boolean, а также любого целого или ве­щественного типа.

Файловая переменная <ф>, если она указана, должна быть предваритель­но описана как переменная типа text и связана с именем файла или логи­ческим устройством процедурой assign. Если файловая переменная отсут­ствует, подразумевается вывод в стандартное устройство output, которое обычно связано с экраном ПК.

Любой элемент списка вывода может иметь форму

OutExpr [ : MinWidth [ : DecPlaces ] ]

Здесь:

? outexpr — выводимое выражение;

? minwidth, decplaces — выражения типа word (квадратные скобки озна­чают возможность отсутствия заключенных в них параметров).

Подпараметр minwidth, если он присутствует, указывает минимальную ширину поля, в которое будет записываться символьное представление зна­чения outexpr. Если символьное представление имеет меньшую длину, чем minwidth, оно будет дополнено слева пробелами, если — большую дли­ну, то подпараметр minwidth игнорируется и выводится необходимое число символов.

Подпараметр decplaces задает количество десятичных знаков в дробной части вещественного числа. Он может использоваться только совместно с minwidth и только по отношению к выводимому выражению одного из ве­щественных типов.

Если ширина поля вывода не указана, соответствующий параметр выводится вслед за предыдущим без какого-либо их разделения.

Символы и строки передаются выводному файлу без изменений, но снаб­жаются ведущими пробелами, если задана ширина поля вывода и эта шири­на больше требуемой для вывода.

При выводе логических выражений в зависимости от их значения выводятся

строки true или false. (Ввод логических констант процедурами read или readln не предусмотрен).

Вещественные числа выводятся в экспоненциальном формате, если не ука­зан подпараметр decplaces, в противном случае выбирается формат пред­ставления числа с фиксированной точкой. Экспоненциальный формат пред­ставляет вещественное число в виде _s#.##############e*####, где:

О _ — пробел;

? s — пробел для положительного и знак "—" для отрицательного чисел;

? # — десятичная цифра;

? е — символ десятичного основания;

? * — знак "+" или "—" в зависимости от знака десятичного порядка числа.

Если подпараметр minwidth опущен, принимается его значение по умолча­нию (23). Если minwidth меньше 10, считается, что он равен 10.

Если подпараметр decplaces равен нулю, ни дробная часть числа, ни деся­тичная точка не выводятся. При отрицательном значении decplaces этот параметр игнорируется и число выводится в экспоненциальном формате с учетом minwidth. Если значение decplaces больше 18, принимается значе­ние 18. Следует учесть, что при указании подпараметра decplaces вещест­венное число всегда будет выводиться в формате с фиксированной точкой и требуемым количеством знаков в дробной части, даже если значение подпа­раметра minwidth окажется недостаточным для размещения целой части, в этом случае значение minwidth автоматически увеличивается.

При выводе на экран в случае, когда длина выводимой последовательности символов превышает ширину экрана или созданного на нем окна, "лишние" символы переносятся на следующую экранную строку. При заполнении эк­рана или окна его содержимое сдвигается вверх на одну строку.


Процедура writeln.



Эта процедура полностью идентична процедуре write за исключением того, что выводимая строка символов завершается кодами cr и lf. При вызове writeln можно опускать параметр <сп.выводах В этом случае в файл передается маркер eoln, что при выводе на экран приведет к переводу курсора в начало следующей строки.


Логическая функция eoln.



Возвращает true, если во входном текстовом файле достигнут маркер конца строки. Формат обращения:

EOLN (<ф>)

Если параметр <ф> опущен, функция проверяет стандартное устройство

INPUT.

Существует некоторое отличие в работе функций eoln и eof с дисковыми файлами и логическими устройствами. Дело в том, что для логического уст­ройства невозможно предвидеть, каким будет результат чтения очередного символа. Поэтому при работе с логическим устройством функция eoln воз­вращает true, если последним считанным с устройства символом был eoln или eof, в то время как при чтении с диска true возвращается в случае, ес­ли следующим считываемым символом будет eoln или eof. Аналогичное раз­личие наблюдается и в функции eof: для логического устройства true воз­вращается в случае, если последним символом был eof, а при чтении с диска — если следующим считываемым символом будет eof. Иными слова­ми, функции тестируют соответствующие признаки для логического устрой­ства после очередного чтения, а для файла — перед чтением.


Логическая функция seekeoln.



Пропускает все пробелы и знаки табуляции до маркера конца строки eoln или до первого значащего символа и возвра­щает true, если маркер обнаружен. Формат обращения:

SEEKEOLN (<ф>)

Если параметр <ф> опущен, функция проверяет стандартный файл input.


Логическая функция seekeof.



Пропускает все пробелы, знаки табуляции и маркеры конца строки eoln до маркера конца файла или до первого знача­щего символа и возвращает true, если маркер обнаружен. Формат обращения:

SEEKEOF (<ф>)

Если параметр <ф> опущен, функция проверяет стандартный файл input.

В следующем примере, иллюстрирующем работу с текстовым файлом, под-считывается общее количество символов в файле, и результат делится на 40 000 — таким способом можно оценить объем рукописи в так называемых учетно-издательских листах:

var

f: text; s: String; const

Sum: Longlnt = 0; {Здесь будет количество символов} begin

Write('Имя файла: '); {Запрашиваем...} Readln(s); {и вводим имя файла}

assign(f,s);

Reset(f); {Открываем файл}

while not EOF(f) do {Подсчитываем...} begin {количество...}

ReadLn(f,s); {символов...}

inc(Sum, Length(s)) {в файле} end; Close(f); {Закрываем файл}

WriteLn('Объем = ',Sum/40000:6:2,' уч.изд.л.') end.

Функцию нельзя использовать для текстовых файлов. Чтобы переместить указатель в конец типизированного файла, можно написать:

seek (FileVar, FileSize(FileVar));

где filevar — файловая переменная.


Функция filepos.



Возвращает значение типа longint, содержащее порядко­вый номер компонента файла, который будет обрабатываться следующей операцией ввода/вывода. Формат обращения:

FILEPOS (<ф>)

Функцию нельзя использовать для текстовых файлов. Первый компонент файла имеет порядковый номер 0.



Список литературы.



  • Фаронов В.В. Turbo Pascal. – СПб.:БХВ – Петербург, 2004. – С.143-148.

  • Enternet.

10



© Рефератбанк, 2002 - 2017