Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!!!ГОСы информатика и вычислительная техника.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.93 Mб
Скачать
  1. Типизированные и нетипизированные файлы в языке Турбо Паскаль. Стандартные средства обработки файлов. Примеры.

Турбо Паскаль поддерживает три файловых типа:

– типизированные файлы (задаются предложением File of . . .);

– текстовые файлы (определяются типом Text);

– нетипизированные файлы (определяются типом File).

Типизированные файлы состоят из машинных представлений чисел, символов и структур, из них построенных. Они хранят данные в том же виде, что и память ЭВМ. Посредством типизированных файлов можно осуществлять обмен данными только между дисками и рабочей памятью программы, но нельзя, например, напрямую вывести данные на экран.

Нетипизированные файлы также состоят из машинных представлений данных. Отличие их от типизированных файлов в том, что последние имеют дело только с данными заранее объявленного типа, а нетипизированные – с произвольными наборами байтов, независимо от их структуры и природы. Нетипизированные файлы – это низкоуровневый канал ввода–вывода для доступа к любым файлам с любым типом.

Типизированный, или компонентный, файл – это файл с объявленым типом его компонентов, т.е. файл с наборами данных одной и той же структуры. Объявление такого файлового типа имеет вид

Type f : File Of <Тип>.

Компонент может иметь любой ординарный или структурированный тип, предопределенный или построенный программистом. Запрещено лишь объявлять файлы файлов и файлы объектов, а также файлы структурированных компонентов (массивов, записей и др.), содержащих те же файлы или объекты.

Допустимы следующие объявления:

Type

Dim = Array [1..100, 1..2] of Real;

Zap = Record

x, y : Byte;

a : Dim;

End;

Df = File Of Dim;

Zf = File Of Zap;

Недопустимыми являются такие типы:

Type

ff1 = File Of File Of Real;

ff2 = File Of Df;

FZapF = Record

x, y : Byte;

f : File Of Char

End;

Zap = File Of FZapF;

При написании программ необязательно определять специальные файловые типы. Можно сразу описывать файловые переменные:

Var Fr : File Of Real; Fd : File Of Zap;

Длина любого компонента типизированного файла строго постоянна, что дает возможность организовать прямой доступ к каждому из них.

Средства обработки файлов

Прежде чем начать работать с внешним файлом, необходимо его связать с файловой переменной. Для этого используется процедура

ASSIGN(var f; name:string),

где f – переменная любого файлового типа,

name – полное имя внешнего файла, удовлетворяющее требованиям операционной системы:

• имя содержит до восьми разрешенных символов; разрешенные символы - это прописные и строчные латинские буквы, цифры, и символы: ! @ # $ % ^ & ( ) ' ~ - _

• имя начинается с любого разрешенного символа;

• за именем может следовать расширение - последовательность до трех разрешенных символов (расширение, если оно есть, отделяется от имени точкой).

Перед именем может указываться так называемый путь к файлу: имя диска и/или имя текущего каталога и имена каталогов вышестоящих уровней. Имя диска - это один из символов A...Z, после которого ставится двоеточие. Имена А: и В: относятся к дисковым накопителям на гибких дискетах, имена С:, D: и т.д. - к жестким дискам. Если имя диска не указано, подразумевается устройство по умолчанию - то, которое было установлено в операционной системе перед началом работы программы.

За именем диска может указываться имя каталога, содержащего файл. Если имени каталога предшествует обратная косая черта, то путь к файлу начинается из корневого каталога, если черты нет - из текущего каталога, установленного в системе по умолчанию. За именем каталога может следовать одно или несколько имен каталогов нижнего уровня. Каждому из них должна предшествовать обратная косая черта. Весь путь к файлу отделяется от имени файла обратной косой чертой. Максимальная длина имени вместе с путем - 79 символов.

Пример: “C:\temp\f2.txt”

Если строка имени пустая, осуществляется связь со стандартным файлом ввода или ввода (как, правило, консолью).

Недопустимо использовать ASSIGN для уже открытого файла. Для этого этот файл нужно закрыть (close). Кроме файла в процедуре ASSIGN можно указать другие устройства.

CON - логическое имя, которое определяет консоль - клавиатуру или экран дисплея. Турбо Паскаль устанавливает различие между этими физическими устройствами по направлению передачи данных: чтение данных возможно только с клавиатуры, а запись - только на экран.

PRN - логическое имя принтера. Если к ПК подключено несколько принтеров, доступ к ним осуществляется по логическим именам LPT1, LPT2 и LPT3 . Имена PRN и LPT1 первоначально - синонимы. Стандартный библиотечный модуль PRINTER, входящий в библиотеку TURBO.TPL, объявляет имя файловой переменной LST и связывает его с логическим устройством LPT1. Это дает возможность использовать простое обращение к принтеру. Например, программа

Uses Printer;

begin

WriteLn(LST, 'Привет, мир!')

end.

выведет на принтер фразу «Привет, мир!», а все необходимые операции по открытию логического устройства выполнит библиотечный блок PRINTER

NUL - логическое имя «пустого» устройства. Это устройство чаще всего используется в отладочном режиме и трактуется как устройство-приемник информации неограниченной емкости. При обращении к NUL как источнику информации выдается признак конца файла EOF.

Пример:

ASSIGN (f,’data.txt’); Reset(f);

ASSIGN (Input,’Con’); Reset(Input);

ASSIGN (Output,’Con’); Rewrite(Output);

ASSIGN (Lst, ‘Lpt1’); Rewrite(Lst);

где: Con – конс. устройство ввода/вывода.

Lpt1 – устройство вывода символов на экран.

Далее файл можно открыть на чтение (Reset) или на запись (rewrite).

Для работы с файлами в ТР разработан ряд процедур и функций, часть из которых рассмотрим ниже.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]