Реферат на тему «Текстовые файлы». Выполнили: Ученицы**класса «А» средней школы №** *** и ***. Содержание. • Введение… 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 вво¬дится при нажатии на клавишу <
Enter>, а символ EOF — при одновремен¬ном нажатии клавиш <Ctrl>+<Z> . При вводе переменных типа STRING количество считанных процедурой и поме¬щенных в строку символов равно максимальной длине строки, если только рань¬ше не встретились символы CR или EOF. В этом случае сами символы CR и EOF В строку не помещаются. Если количество символов во входном потоке данных больше максимальной длины строки, "лишние"
символы до конца строки отбра¬сываются, а новое обращение к READ возвращает пустую строку. Таким образом, процедура READ не в состоянии прочесть последовательность строк: первая строка будет прочитана нормально, а все последующие окажутся пустыми. Для ввода по¬следовательности строк нужно использовать процедуру READLN (CM. ниже). При вводе числовых переменных процедура
READ вначале выделяет подстро¬ку во входном потоке по следующему правилу: все ведущие пробелы, сим¬волы табуляции и маркеры конца строк EOLN пропускаются; после выделе¬ния первого значащего символа, наоборот, любой из перечисленных символов или символ EOF служат признаком конца подстроки. Выделенная таким образом подстрока затем рассматривается как символьное представ¬ление числовой константы соответствующего типа и преобразуется во внут¬реннее представление, а полученное значение присваивается
переменной. Если в подстроке был нарушен требуемый формат представления численной константы, возникает ошибка ввода/вывода. Если при пропуске ведущих пробелов встретился символ EOF, переменная получает значение 0. Отметим, что в Турбо Паскале не предусмотрен ввод шестнадцатеричных констант. При использовании процедуры READ применительно к стандартному устрой¬ству
INPUT, т. е. при вводе с клавиатуры, символьные строки запоминаются в буфере, который передается процедуре только после нажатия на клавишу <Enter>. Это позволяет редактировать данные при их вводе. Для редактирова¬ния используются следующие клавиши: □ <Backspace>, <Ctrl>+<H>, <<-> — стирают символ слева от курсора; □ <->> — восстанавливает символ за символом предыдущую строку ввода; □ <
Ctrl>+<Z>, <Enter> — завершает ввод по процедуре 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 эхо-повтором клавиши <Enter> является символ 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.
! |
Как писать рефераты Практические рекомендации по написанию студенческих рефератов. |
! | План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом. |
! | Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач. |
! | Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты. |
! | Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ. |
→ | Виды рефератов Какими бывают рефераты по своему назначению и структуре. |
Реферат | Психологическая консультация |
Реферат | Эмбриогенез |
Реферат | Циперус |
Реферат | Великая депрессия 19291933 гг. в США |
Реферат | Взаємозв`язок витрат, обєму реалізації, прибутку та їх роль у фінансовому менеджменті |
Реферат | Виды и формы предпринимательства |
Реферат | Виды причины и последствия инфляции |
Реферат | Взаимосвязь денежной и финансовой системы |
Реферат | Виды финансовой политики и механизм ее реализации |
Реферат | Система простейших |
Реферат | Амурский горал |
Реферат | Денежные реформы в постсоциалистических странах |
Реферат | Виробництво молока на ДГ Комунар 2 |
Реферат | Где живут бактерии |
Реферат | Краткая история глаза |