КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
While True do
Файлы
10.1. Общие замечания
В практике программирования часто встречаются задачи, решаемые с применением малоизменяемых во времени данных. К ним относятся, например, задачи бухгалтерского учета оптимального планирования и т.п. Ввод данных с клавиатуры при каждом счете задачи очень трудоемок, а иногда просто невозможен из-за временных ограничений. Для решения этой проблемы в языках программирования реализована концепция файлов, что позволяет после разового набора информации запомнить ее на внешнем носителе и обращаться к ней непосредственно из обрабатывающих программ при каждом счете задачи. Файл – поименованная область памяти, как правило, на внешнем носителе, предназначенная для хранения информации. файл можно также считать структурированным типом данных, состоящим из последовательности компонент одного и того же типа и одинаковой длины и структуры. чаще всего компонентами файла являются записи. Файл может быть связан с внешним носителем информации, т.е. располагаться на магнитном или СД диске, магнитной ленте, клавиатуре при вводе информации или на экране, принтере и при выводе её и т.д. Файлы бывают стандартными, т.е. определенными разработчиками или администраторами операционной системы или вычислительной среды, а также пользователем, т.е. человеком, составляющим программы в каком-либо алгоритмическом языке (например в Pascal), или с помощью других программных продуктов (баз данных, редакторов и т.д.). Каждый файл имеет свое имя, которое зарегистрировано в соответствующей директории (оглавлении). Определение файлового типа строится по такой схеме: Туре имя типа= file of тип компонент; Var идентификатор,.., идентификатор: имя типа; Например: Туре zap=record Nom: integer; FIO: string [20]; oklad: real; end; Ft=file of zap; Var a, b, с: Ft; Описаны три файла с именами а, b, с типа Ft. Компонентами файлов служат записи типа zap. Другими словами, файл схематично можно представить в виде «ленты» компонент, каждая из которых является записью типа zap. Доступ к компонентам файла может быть последовательным и прямым. Последовательный доступ – это когда для обращения к n-й компоненте необходимо «посмотреть» n-1 компонент; прямой доступ – обращение к компоненте идет прямо по «ключу» (номеру компоненты), без «просмотра» предыдущих компонент. При работе с файлом «внимание» машины сосредоточено на компоненте, определенной указателем файла (этой компонентой будет работать машина при следующем обращении к файлу). Имя файла должно быть уникальным и состоящим из собственного имени и необязательного расширения – типа файла, содержащего три символа и отделенного от основного имени точкой. Расширение, как правило, указывает в мнемонической форме на содержимое файла: pas, ехе, txt и т.д. В некоторых случаях тип файла присваивается автоматически операционной системой или используемым пакетом. Каждый диск, содержащий файлы, имеет оглавление, в которое помещается информация о его имени, расширении, времени и дате его создания, о местонахождении на физическом носителе (например, на диске С или D). Для поиска файла необходимо указать диск, каталог, подкаталог, имя файла, его расширения. Например: C:\TURBO\Prim\Prim46.pas. Здесь файл Prim 46.pas находится в подкаталоге Prim каталога TURBO диска С.
10.2. Стандартные процедуры и функции для работы с файлами
Далее примем обозначения: FV - имя файловой переменной или просто имя файла, str - строковое выражение, Р - имя структурной компоненты файла, n - целое выражение. Assig и (FV, str); – процедура присвоения имени файла. Имя файла, которое является значением str, присваивается переменной файлового типа FV. Далее все действия над этой переменной будут эквивалентны действиям над файлом, определенным именем str. Например: Assign (books, 'c:\bibl.dos'); позволяет работать не с именем 'c:\bibl.dos', которое может быть достаточно длинным (если имеются каталоги и подкаталоги), а с именем books. Rewrite (FV); – процедура создания нового файла с именем FV на диске. Имя файла должно быть предварительно определено процедурой Assign. Если на диске уже был файл с таким именем, то он уничтожается. Указатель файла устанавливается в первую позицию с номером 0. Файл еще не содержит ни одной компоненты, а только подготовлен к загрузке. Reset (FV); – процедура открытия (разрешение работать с файлом именем FV) уже имеющегося файла. Указатель устанавливается на начало файла, в позицию с номером 0. Read (FV, Р); – процедура чтения компоненты файла, на которую установлен указатель, ее содержимое помещено в область памяти с именем Р. Write (FV, Р); – процедура записи информации из области памяти Р в файл FV и компоненту, на которую установлен указатель. Seek (FV, n); – процедура установки указателей на компоненту с номером n. Flush (FV); – очищение буфера сектора. Выполнение процедуры приводит к выталкиванию содержимого внутреннего буфера (области памяти) в файл. Close (FV); – процедура закрытия файла, при этом записывается маркер конца файла. После работы с файлом его необходимо обязательно закрыть. Erase (FV); – процедура уничтожения файла. Если производится уничтожение открытого файла, его необходимо предварительно закрыть. Rename (FV, str); – процедура переименования файла. Файлу FV присваивается имя str. Truncate (FV); – процедура уничтожения всех компонент файла, начиная с места текущего положения указателя и подготовки файла к записи. Eof (FV) – функция проверки маркера конца файла. Значение функции равно True, если указатель файла находится за последней компонентой, и False – в противном случае. Filepos (FV) – функция определения положения указателя. Filesize (FV) – функция определения длины файла. Функция возвращает целочисленное значение, равное количеству компонент файла: если File Size (FV) = 0, то файл пуст. Loresult (FV) – функция проверки результата последней операции ввода- вывода на наличие ошибок. Если ошибка обнаружена, возвращается код ошибки, если нет, то код = 0.
10. 3. Стандартные файлы Con: – консоль (клавиатура или экран дисплея). Турбо-Паскаль устанавливает различия между этими устройствами по направлению передачи данных: чтение данных возможно только с клавиатуры, а запись - только на экран. Ввод с клавиатуры буферизуется: символы по мере нажатия клавиш помещаются в буфер, содержимое которого передается в ЭВМ только после нажатия клавиши ENTER, поскольку вводимые и буферизированные символы отображаются на экране. Con применяется «по умолчанию» для ввода с помощью операторов READ и Readln и для вывода на экран – операторов write и writeln, если не указано имя файла FV. Все внешние устройства ЭВМ трактуются в Pascal как логические устройства, имеющие имена файлового типа и которым соответствуют заранее определенные (стандартные) файлы. Идентификацию (отождествление) устройства и стандартного файла осуществляют специальные программы (драйверы), которые обеспечивают выполнение операций ввода-вывода между процессором и конкретным физическим устройством. Ниже указаны имена файлов и соответствующие им устройства так, как они определены разработчиками системы. Trm: – терминал, предназначенный для ввода с клавиатуры и вывода на экран без редактирования. Kbd: – клавиатура, используемая только для ввода с клавиатуры, при вводе информация не отображается на экран. PRN: – построчно печатающее устройство (принтер), используемое только для вывода. Aux: – вспомогательное устройство, подключающееся через порты. Usr: – устройство пользователя, применяемое при написании собственных драйверов для организации нестандартного ввода-вывода. 10.4. Файлы последовательного доступа, созданные пользователем Работа с файлом последовательного доступа предполагает его создание, обработку и корректировку. Для создания файла последовательного доступа необходимо: - объявить файловую переменную; - «привязать» файл к физическому носителю информации (присвоить файлу имя). (Assign); - открыть новый файл (Rewrite); - подготовить информацию для ввода в компоненту файла, т.е. сформировать запись для ввода в файл в качестве компоненты; - записать в файл компоненту (Write); - повторить п. 4, 5 необходимое количество раз; - закрыть созданный файл (Close). Для доступа к компонентам последовательного файла (например, для просмотра содержимого файла на экране или для обработки компонент в целях включения их в качестве фрагментов в программу обработки каких-либо данных и т.п.) следует: - присвоить файлу имя (Assign); - открыть уже существующий файл (Reset); - считать текущую компоненту из файла в рабочую область памяти (как правило, типа запись со структурой компоненты), (Read); - выполнить обработку информации (например, вывести на экран поля записи); - закрыть файл (Close). Возможны три типа корректировки файла как прямого, так и последовательного доступа: 1. Расширение файла за счет внесения новых компонент. 2. Полная замена содержимого компоненты. 3. Замена каких-либо полей отдельных компонент. Замена содержимого компонент отдельных записей или замена полей отдельных записей будет рассмотрена в следующем подразделе при изучении корректировки компонент файлов прямого доступа. Добавление новых записей в файл последовательного доступа выполняется путем записи компонент в конце файла. Маркер конца файла при этом переносится. Естественно, на физическом носителе при этом должно иметься свободное пространство. Для записи новых компонент в конце имеющегося файла необходимо: - присвоить файлу имя (Assign); - открыть уже существующий файл (Reset); - установить указатель файла за последней компонентой (Seek (FV, File sise (FV)): - создать в специально выделенной области памяти (как правило записи) новую компоненту; - записать новую компоненту в файл (write); - закрыть файл (Close). Пример. Организовать последовательный файл с именем PRIM bibl.dos в подкаталоге Prim каталога TURBO на диске С, т.е. C:\TURBO\bibl.dos. Компонента должна иметь структуру: индекс книги, порядковый номер экземпляра, фамилию, инициалы первых трех авторов (если их несколько), название книги. Блок создания файла оформить в виде процедуры с именем org. Блок доступа к компонентам файла оформить в виде процедуры с именем obr., а блок корректировки – в виде процедуры с именем Rash. Program Prim47; type books=record {базовая запись} nomer:integer; avtor:string[16]; nazv:string[30]; index:integer; end; var bf:file of books; { описать файловую переменную } rb:books; { участок памяти со структурой } { компоненты файла } procedure org; begin assign(bf,'C:\TURBO\PRIM\bibl.dos'); Rewrite(bf); with rb do { работать с записью rb без уточненных имен } begin writeln('ввести номер книги'); readln(nomer); if nomer=9999 then {9999 – признак окончания ввода данных} Begin close(bf); Exit end; writeln('ввести имя автора'); readln(avtor); writeln('ввести название книги'); readln(nazv); writeln('ввести значение индекса'); readln(index); write(bf,rb); { записать компоненту из rb в файл } end; end; procedure Obr; Begin Assign(bf,'C:\TURBO\PRIM\bibl.dos'); Reset(bf);
Дата добавления: 2014-12-17; Просмотров: 536; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |