либо редактора текстов в нем можно исправить все ошибки, добавить или убрать отдельные данные и т.д. - прежде чем эти данные будут подвергнуты обработке программой. Второе преимущество состоит в том, что файл с входной информацией может считываться программой много раз. Эта возможность облегчает отладку, поскольку программа при каждом запуске можно считывать свой данные каждый раз из того же файла. А в интерактивной программе пришлось бы каждый раз заново вводить с клавиатуры каждый элемент(символ) данных ( при каждом запуске программы).
Можно так же преобразовать программу таким образом, чтобы вычисленные результаты она выводила не на экране дисплея, а в текстовый файл; это позволит программисту иметь на диске постоянную версию (вариант) результатов работы программы. Этот файл на диске затем может быть выведен на печать (принтер), либо использован в качестве входного файла другой программой.
Итак, текстовый файл можно создать и сохранить с помощью текстового редактора. При этом каждый сводимый символ временно заносится в основную (оперативную) память и одновременно и одновременно для визуального контроля отображается на экране. При сохранении файла, информация отображается на экране не, сохраняется в виде последовательности символов на диске (рис 4.2.11.)
1 |
5 |
9 |
0 |
0 |
. |
0 |
0 |
O |
|
|
h |
h |
|
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
J |
0 |
h |
e |
s |
<leln> |
5 |
. |
s |
e |
l |
|
m |
|
|
<lol |
<lof> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n> |
|
Рис.4.2.11. Текстовый файлпоследовательность символов.
Текстовый файл, изображенный на данном рисунке содержит с ценой 33 символов или байтов, включая цифры, точки, пробелы, буквы и два специальных символа, <LOON> и <LOF>. Первый них (<LELN>-end- of-line) вставляется после последнего символа при сохранении текстового файла. Таким образом, текстовый файл может содержать множество символов <LELN> (т.к. много строк), но только один символ
<lof>.
Хотя физически текстовый файл содержится на диске в виде одной длинной последовательности символов, разделенных символами <LONN> на троки. Если воспользоваться текстовым редактором языка Turbo Pascal (Edit) чтобы получить доступ к файлу, избранному на рис. 4.2.11., на экране он будет выглядеть так:
15900.00 Johnny Jones
5.0 sl mz
При этом на экране дисплея символы <LOLN> и <Lof> будут отсутствовать.
Файловый тип или переменную файлового типа можно описать (задать) одним из трех способов:
<имя> = FILE OF <тип>; <имя> = TEXT;
<имя> = FILE;
Здесь <имя> - имя файлового имя (правильный идентификатор);
FILE, OF – зарезервированные слова (файл, из); TEXT – имя стандартного типа текстовых файлов;
< тип > - любой тип языка Turbo Pascal, кроме файлов. Например:
Type
Product = record; name: string; code: word; const: comp;
end;
text 80 = file of string [80]; var
f1: file of char; f2: text;
f3: file; f4: text 80;
f5: file of product;
Здесь фрагмент Type – end является записью;
f1, f4 и f5 –типизированные файлы, f2текстовые файл, f3не типизированный файл.
Таким образов, в зависимости от способа объявления можно выделить три вида файлов:
-типизированные файлы (задаются предложением
FINE of);
-текстовые файлы (определяются типом TEXT);
-не типизированные файлы (определяются типом
FILE).
Доступ к файлам.
Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT – для чтения данных с клавиатуры и OUTPUTдля вывода на экран дисплея. Стандартный Pascal требует обязательного упоминания этих файлов в заголовке программы, например:
Program Name (input, output);
В Turbo Pascal это необязательно, вот почему заголовок программы можно опускать.
Любые другие файлы, а также логические устройства становятся доступны программе только после выполнения особой процедуры открытия файла (логического устройства). Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре
ASSIGN:
ASSIGN (< ф.п. >, < имя файла или л.у. >);
Здесь < ф.п. > - файловая переменная (правильный идентификатор, объявленный в программе как переменная файлового типа); < имя файла или л.у. > - текстовое выражение,
содержащее или файлы или логическое устройство. При этом, если имя файла задается в виде пустой строки, например: ASSIGN (f1‖), то в зависимости от направления обмена данными файловая переменная связывается со стандартным файлом INPUT или
OUTPUT.
Имена файлов.
Имена файлов - это любое выражение строкового типа, которое строится по правилам определения имен в определенной системе компьютера. При этом:
- имя должно содержать до восьми разрешенных символов – это прописные и строчные логические буквы, цифры и следующие дополнительные символы:
! # % ^ ( ) ` ~ - _
-имя может начинаться с любого разрешенного символа.
-за именем может следовать расширение – последовательность до тех трех размещенных символов (расширение, если оно есть, отделяется от имени точкой).
Перед именем может указываться так называемый путь к файлу: имя диска и (или) имя текущего каталога и имена каталогов вышестоящих уровней.
Имя диска - это один из символов A..Z, после которого ставится двоеточие. Имена A: и B: относятся к дисковому накопителю на гибких дисках, а имена C: и D: и т.д. – к жестким дискам.
Если имя диска не указано, подразумевается устройство по умолчанию – то, которое было установлено в определенной системе перед началом работы программы. Рассмотрим пример:
ASSIGN (My Data,‘ a: In Data. Dat‘);
Здесь указано полное имя файла, т.е. указано имя файла и в каком каталоге он содержится.
Таким образом, данный оператор вызова процедуры ассоциирует файловую переменную My Data с файлом In Data.. Dat, содержащейся в корневом каталоге диска
A.
Заметим, что процедура ASSIGN – единственная, которая определяет фактическим именем файла на диске. Все другие процедуры и функции используют файловую переменную. По этой причине программы называют My Data внутренним именем файла, а A: In Data.Dat – его внешним именем.
При этом, необходимо иметь в виду – никогда не следует применять процедуру ASSIGN к открытому файлу.