Файл - последовательность однотипных компонентов, ограниченная специальным признаком - конец файла, расположенная на внешнем устройстве. Одновременно с файлом в оперативной памяти выделяется участок, по размеру совпадающий с одним компонентом файла, называемый буфером или окном файла. Вся работа с файлом производится через этот буфер.
По структуре - файл есть последовательность элементов. Принято компонент файла называть записью (это сложилось исторически до появления языка Паскаль). Необходимо отличать понятия запись в файле от записи, как типа данных в Паскале. Запись в файле - достигнутый компонент при выполнении операции чтении из файла или операции записи в файл. Размер записи (компонента файла) в файле определяется типом компонента файла.
При определении переменной типа файл мы определяем две структуры - структуру на внешнем устройстве и структуру в оперативной памяти (рис. 24.1)
Структура на внешнем устройстве представляет собой последовательность однотипных компонентов, ограниченную признаком конец файла. Для связи переменной типа файл с конкретным внешним устройством задаются специальные команды.
Структура в оперативной памяти - буфер или окно файла, размером в один компонент файла. Все общение с файлом, расположенном на внешнем устройстве, осуществляется через буфер файла, который находится в оперативной памяти.
Рис. 24.1. – Структурная организация данных типа файл
0. Определение типа
Для того, чтобы определить тип файл необходимо определить тип элементов, которые могут входить в файл. Количество компонентов не определяется. Типом компонентов может быть любой, кроме файлового, тип. Непосредственное определение типа файл приведено на рис. 24.2.
Рис. 24.2. – Определение типа файл
Как всегда, это определение делается в разделе нестандартных типов. Однако язык позволяет не определять тип компонента файла. В этом случае в качестве типа данных указывается тип FILE (такой файловый тип называется нетипизированным). Для нетипизированного файла нельзя выполнять стандартные операции по чтению и записи.
Примеры определения файловых типов и файлов:
TYPE
tf1=file of integer;
tf2=file of real;
VAR
f1:tf1;
f2:tf2;
f3:FILE;
В этих примерах f1 – файл из целых чисел, f2 – файл из вещественных чисел, f3 - нетипизированный файл. С файлом f3 нельзя выполнять стандартные операции по чтению и записи.
1. Множество значений
Включает в себя все значения, которые могут быть размещены в структуре, заданной определением типа.
2. Множество операций
Все операции с переменными типа файл (в дальнейшем будем говорить - с файлом) сводятся к двум: запись в файл и чтение из файла. Правила выполнения этих операций зависят от вида файлов. Виды файлов определяются техническими возможностями внешних устройств, на которых располагаются файлы.
Физические и логические файлы
Для независимости программы обработки файлов от конкретной операционной системы один и тот же обрабатываемый файл одновременно является физическим и логическим.
Логический файл – это имя переменной файлового типа в программе. Выполнение операторов программы по обработке файла осуществляется посредством этой переменной. Переменная файлового типа в программе называется именем логического файла.
Физический файл – это файл, определенный по правилам конкретной операционной системы. В любой операционной системе файл определяется как поименованная порция информации, расположенная на внешнем устройстве. Это имя называется именем физического файла.
Во всех операционных системах, применяемых для ПЭВМ типа IBM, не дисковые файлы именуются именами внешних устройств, на которых они располагаются. Обязательные внешние устройства имеют свои уникальные имена (CON – клавиатура при чтении-вводе и экран дисплея при записи-выводе, PRN – принтер и др.). Дополнительные (факультативные) внешние устройства именуются именами портов ввода-вывода, к которым они подключены (LPT1, LPT2, LPT3, COM1, COM2, COM3 и т.д.). Так как обычно принтер подключается к первому параллельному порту, имена PRN и LPT1 являются синонимами.
Имена дисковых файлов состоят из имен дисковода, на котором они расположены, имен каталогов-папок, в которые они вложены и из полных имен файлов (составные части разделяются обратными слэшами \). Например, С:\TP60\WORK\dan.dat – имя физического файла, расположенного на диске С:, вложенного внутрь каталога ТР60, подкаталолга WORK, полное имя этого файла dan.dat.
Для того чтобы программа обрабатывала реальный файл, до начала обработки файла обязательно логическому файлу в программе сопоставляется физический файл в операционной системе. Это называется связыванием логического и физического файлов.
program raf105;
var abcd,a,b,c,d,sum: integer;
begin
write('Введите четырёхзначное число: ');
readln(abcd);
a:= abcd div 1000;
b:= (abcd div 100) mod 10;
c:= (abcd div 10) mod 10;
d:= abcd mod 10;
sum:= a+b+c+d;
writeln('Сумма цифр: ',sum);
end.
в.program raf105;
var abcd,a,b,c,d: integer;
begin
write('Введите четырёхзначное число: ');
readln(abcd);
a:= abcd div 1000;
b:= (abcd div 100) mod 10;
c:= (abcd div 10) mod 10;
d:= abcd mod 10;
abcd:= a*1000 + c*100 + b*10 + d;
writeln('Вывод: ',abcd);
end.
г.program raf105;
var abcd,a,b,c,d: integer;
begin
write('Введите четырёхзначное число: ');
readln(abcd);
a:= abcd div 1000;
b:= (abcd div 100) mod 10;
c:= (abcd div 10) mod 10;
d:= abcd mod 10;
abcd:= c*1000 + d*100 + a*10 + b;
writeln('Вывод: ',abcd);
end.
PascalABC 3.4.2Классификация: нестандартный, структурированный (сложный) тип.
Имя определяет программист.
3. Структурная организация
Файл - последовательность однотипных компонентов, ограниченная специальным признаком - конец файла, расположенная на внешнем устройстве. Одновременно с файлом в оперативной памяти выделяется участок, по размеру совпадающий с одним компонентом файла, называемый буфером или окном файла. Вся работа с файлом производится через этот буфер.
По структуре - файл есть последовательность элементов. Принято компонент файла называть записью (это сложилось исторически до появления языка Паскаль). Необходимо отличать понятия запись в файле от записи, как типа данных в Паскале. Запись в файле - достигнутый компонент при выполнении операции чтении из файла или операции записи в файл. Размер записи (компонента файла) в файле определяется типом компонента файла.
При определении переменной типа файл мы определяем две структуры - структуру на внешнем устройстве и структуру в оперативной памяти (рис. 24.1)
Структура на внешнем устройстве представляет собой последовательность однотипных компонентов, ограниченную признаком конец файла. Для связи переменной типа файл с конкретным внешним устройством задаются специальные команды.
Структура в оперативной памяти - буфер или окно файла, размером в один компонент файла. Все общение с файлом, расположенном на внешнем устройстве, осуществляется через буфер файла, который находится в оперативной памяти.
Рис. 24.1. – Структурная организация данных типа файл
0. Определение типа
Для того, чтобы определить тип файл необходимо определить тип элементов, которые могут входить в файл. Количество компонентов не определяется. Типом компонентов может быть любой, кроме файлового, тип. Непосредственное определение типа файл приведено на рис. 24.2.
Рис. 24.2. – Определение типа файл
Как всегда, это определение делается в разделе нестандартных типов. Однако язык позволяет не определять тип компонента файла. В этом случае в качестве типа данных указывается тип FILE (такой файловый тип называется нетипизированным). Для нетипизированного файла нельзя выполнять стандартные операции по чтению и записи.
Примеры определения файловых типов и файлов:
TYPE
tf1=file of integer;
tf2=file of real;
VAR
f1:tf1;
f2:tf2;
f3:FILE;
В этих примерах f1 – файл из целых чисел, f2 – файл из вещественных чисел, f3 - нетипизированный файл. С файлом f3 нельзя выполнять стандартные операции по чтению и записи.
1. Множество значений
Включает в себя все значения, которые могут быть размещены в структуре, заданной определением типа.
2. Множество операций
Все операции с переменными типа файл (в дальнейшем будем говорить - с файлом) сводятся к двум: запись в файл и чтение из файла. Правила выполнения этих операций зависят от вида файлов. Виды файлов определяются техническими возможностями внешних устройств, на которых располагаются файлы.
Физические и логические файлы
Для независимости программы обработки файлов от конкретной операционной системы один и тот же обрабатываемый файл одновременно является физическим и логическим.
Логический файл – это имя переменной файлового типа в программе. Выполнение операторов программы по обработке файла осуществляется посредством этой переменной. Переменная файлового типа в программе называется именем логического файла.
Физический файл – это файл, определенный по правилам конкретной операционной системы. В любой операционной системе файл определяется как поименованная порция информации, расположенная на внешнем устройстве. Это имя называется именем физического файла.
Во всех операционных системах, применяемых для ПЭВМ типа IBM, не дисковые файлы именуются именами внешних устройств, на которых они располагаются. Обязательные внешние устройства имеют свои уникальные имена (CON – клавиатура при чтении-вводе и экран дисплея при записи-выводе, PRN – принтер и др.). Дополнительные (факультативные) внешние устройства именуются именами портов ввода-вывода, к которым они подключены (LPT1, LPT2, LPT3, COM1, COM2, COM3 и т.д.). Так как обычно принтер подключается к первому параллельному порту, имена PRN и LPT1 являются синонимами.
Имена дисковых файлов состоят из имен дисковода, на котором они расположены, имен каталогов-папок, в которые они вложены и из полных имен файлов (составные части разделяются обратными слэшами \). Например, С:\TP60\WORK\dan.dat – имя физического файла, расположенного на диске С:, вложенного внутрь каталога ТР60, подкаталолга WORK, полное имя этого файла dan.dat.
Для того чтобы программа обрабатывала реальный файл, до начала обработки файла обязательно логическому файлу в программе сопоставляется физический файл в операционной системе. Это называется связыванием логического и физического файлов.