Вход

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

Реферат* по информатике и информационным технологиям
Дата добавления: 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 - 2024