metod_15.03.04_atppp_oaip_up_2016 (Методические документы), страница 17
Описание файла
Файл "metod_15.03.04_atppp_oaip_up_2016" внутри архива находится в папке "Методические документы". PDF-файл из архива "Методические документы", который расположен в категории "". Всё это находится в предмете "абитуриентам" из 1 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "абитуриентам" в общих файлах.
Просмотр PDF-файла онлайн
Текст 17 страницы из PDF
Для чтенияочередной записи из файла С необходимо выполнить процедуру Read (C). Приэтом считанная запись станет доступной через буферную переменную. Приокончании записи элементов в файл С его необходимо закрыть при помощипроцедуры Close (C). При этом файл С сохраняется на внешнем носителе, еслипри его открытии на запись было указано внешнее имя.Файловая переменная логически связана с внешним устройством. Есливнешнее имя файла опущено при открытии файла для чтения, то файловаяпеременная трактуется как временный файл, созданный ранее в этой жепрограмме.93Запись в файл. Процедура Write предназначена для записи во внешний файлданных из программы.
Имя внешнего файла также с помощью процедуры Assignсвязанно с файловой переменной. Тип переменных, из полей которыхзаписываются данные в файл, должны совпадать с баз. типом элементов файла.Порядок выполнения операции записи.Запись данных из полей переменных, указанных в списке, последовательнопереносятся во внешний файл – в элемент, позиция которого отмечена текущимуказателем. После операции записи в этот элемент, текущий указательперемещается в положение следующего элемента. В него (в следующий элемент)переносятся значения из выражения обращения к функции.Открыть один и тот же файл для чтения и для записи одновременно нельзя,поэтому открыть для чтения можно только предварительно закрытый файл.Турбо – Паскаль допускает к файлам, открытым с помощью процедуры Reset (тоесть для чтения информации), обращаться с помощью процедуры Write (то естьтолько для записи информации).
Такая возможность позволяет легко обновлятьранее созданные файлы и при необходимости расширять их.Встроенная процедура rewrite инициирует запись информации в файл.Пример. Для записи в файл С очередного компонента, находящегося в буфернойпеременной, необходимо выполнить процедуру Write (C).Процедура Append применяется для открытия файла, который подвергаетсяобработке операциями записи данных. При этом текущий указательустанавливается в конце файла, то есть в позицию для записи следующегоэлемента. Другими словами, процедура Append не очищает содержимого файла.Встроенная процедура Append (файловая переменная) инициирует запись в ранеесуществовавший текстовый файл для его расширения – указатель файлаустанавливается в его конец.Если же соответствующие файлы на внешнем носителе не обнаружены, топроцедуры Append и ReWrite открывают новый файл с указанным именем,соответствующим заданной файловой переменной.Если работа с данным файлом завершена, то рекомендуется выполнитьоперацию закрытия файла.
Она реализуется с помощью процедурыClose (файловая переменная).Для применения операции обработки файла после его закрытия не нужновыполнять повторную связь файловой переменной с внешним файлом с помощьюпроцедуры Assign, эта связь сохраняется до конца работы программы.Рассмотрим процедуры и функции, которые можно использовать с файламилюбого вида. Специфику работы с типизированными, текстовыми инетипизированными файлами рассмотрим потом отдельно.Процедура Close – закрывает файл, однако связь файловой переменной сименем файла, установленная ранее процедурой Assign, сохраняется.
Присоздании нового или расширении старого файла процедура обеспечиваетсохранение в файле всех новых записей и регистрацию файла в каталоге.Функции процедуры Close выполняются автоматически по отношению ко всемоткрытым файлам при нормальном завершении программы. Поскольку связьфайла с файловой переменной сохраняется, файл можно повторно открыть бездополнительного использования процедуры Assign.94Процедура Rename (файловая переменная, новое имя). Переименовываетфайл.
Перед выполнением процедуры Rename необходимо закрыть файл, если онранее был открыт процедурами Reset, ReWrite, Append. Внешний файл, с которымсвязана файловая переменная, получает новое имя, заданное параметром «новоеимя». Этот параметр по своим характеристикам аналогичен параметру «имяфайла» в процедуре Assign.Процедура Erase (файловая переменная) уничтожает файл.Erase (файловая переменная).Перед выполнением процедуры необходимо закрыть файл, если он ранеебыл открыт процедурами Reset, ReWrite или Append.Процедура Flush (файловая переменная). Поскольку обмены с файламиреализуются через некоторый внутренний буфер в оперативной памяти, то впроцессе обработки информации могут возникать ситуации задержки данных, тоесть «застревание» информации в буфере.
Если же в процессе обработкиинформации не требуется пополнять буфер, то есть считывать следующийэлемент, либо разбивать находящиеся в буфере данные на порядки, то спомощью процедуры Flash (файловая переменная) выполняется принудительныйсброс информации при записи и очистка буфера. Процедура Flush игнорируется,если файл был инициирован для чтения процедурой Reset. Ценность этойпроцедуры сомнительна, так как все её функции реализуются процедурой Close,при выполнении которой закрытие файла автоматически сопровождаетсяликвидацией соответствующего буфера.При завершении программы автоматически выполняется закрытие всехоткрытых в программе файлов.Процедура ChDir (путь) – излагает текущий каталог (директорию).
Здесь«путь» – строковое выражение, содержащее путь к установленному поумолчанию каталогу. Параметр. «путь» может быть только типа String. Такимобразом, ChDir устанавливает новый текущий каталог, путь к которому находитсяв процедуре «путь».Процедура GetDir (устройство, каталог) позволяет определить имя текущегокаталога (каталога по умолчанию). Здесь «устройство» - выражение типа Word,содержащее номер устройства:0 – устройство по умолчанию,1 – диск А,2 – диск В и т. д.Здесь «каталог» - переменная типа String, которая определяет путь к текущемукаталогу на указанном диске.Процедура MkDir (каталог) создаёт новый каталог на указанном диске.Здесь «каталог» - выражение типа String, задающее путь к каталогу. Последнимименем в пути, то есть именем вновь создаваемого каталога, не может быть имяуже существующего каталога.Процедура RmDir (каталог) удаляет каталог.
Удалённый каталог долженбыть пустым, то есть не содержать файлов или имён каталогов нижнего уровня.Функция IOResult : Word возвращает признак последней операции ввод –вывод. Если операция завершилась успешно, функция возвращает ноль. Этафункция становится доступной только при отключённом автоконтроле ошибок95ввода – вывода. Директива компилятора { $1-} отключает, а { $1+} включаетавтоконтроль. Если автоконтроль отключён и операция ввода – вывода привела квозникновению ошибки, устанавливается флаг ошибки и все последующиеобращения к вводу – выводу блокируются, пока не будет вызвана функцияIOResult.Ряд полезных процедур и функций становится доступным прииспользовании библиотечного модуля DOS, входящего в стандартную библиотекуTurboTPL.
Доступ к ним возможен только после объявления USES DOS в началепрограммы. Вот какие это функции и процедуры.Функция DiskFree (диск) : Longint. Возвращает объём в байтах свободногопространства на указанном диске. В этой функции «диск» - номер диска:0 – устройство по умолчанию,1 – диск А,2 – диск В и т. д.Функция возвращает значение -1, если указан номер несущего диска.Функция DiskSize (диск): Longint. Возвращает полный объём диска в байтах( -1, если указан номер несуществующего диска).Операции по непосредственному обмену данными между программой,интерфейс которой представляется файловой переменной и внешними данными(или внешними устройствами), представляющими собой физические средстварегистрации файлов, реализуются процедурами:ReadWriteReadlnWritelnBlockReadBlockWriteПример.
Работа с файлом FIZAP.В файл сначала заносятся три записи, каждая из которых представляет собойсовокупность двух полей. Первое поле (FIO) содержит фамилию, а второе поле(GOD) - год рождения. Ввод исходной информации осуществляется с терминала.Затем этот файл закрывается и вновь открывается только уже на чтение, послечего из файла считываются три записи и выводятся на терминал. По окончаниюработы программы файл FIZAP сохраняется.Внешнее имя РР71.datProgram PP71;Type ZAP = RecordFIO : Array [1…10] of Char;GOD: integerend; {of record}F = File;Var FIZAP: F;A, B : ZAP;J, I : integer;begin Assign (FIZAP, `C: \ Program \ t – pas \ pp71.dat);ReWrite (FIZAP, 12);For Y : = 1 to 3 doBegin Write (`=>`);For I = 1 to 10 do96read (B.
FIO [I]);Readln (B. God);BlockWrite (FIZAP, B, 1)end;close (FIZAP);Reset (FIZAP, 12);For J: = 1 to 3 dobegin BlockReadln (FIZAP, A, 1);Writeln (J : 2, `-ая запись `, A. FIO, A. GOD: 5);endend.Протокол работы программы:Иванов 1967Петров 1970Сидоров 19681 – ая запись Иванов 19672 – ая запись Петров 19703 – ая запись Сидоров 1968Пример. Программа формирует файл и сохраняет его на внешнем носителе, чтообеспечивается заданием внешнего имени PP74.dat при открытии файла назапись. Ввод исходной информации во внешний файл в программеосуществляется до тех пор, пока не будет введена фамилия, состоящая из десятизвёздочек (признак конца ввода). Это сделано для того, чтобы пользователю ненадо было предварительно подсчитывать количество вводимых записей.Program PP74;Type ZAP = RecordFIO : Array [1…10] of Char;GOD: integerend; {of record}F = File;Var FIZAP: F;A : ZAP;I : integer;begin Assign (FIZAP, `C: \ t – pas \ pp74.dat);ReWrite (FIZAP, 12);RepeatWrite (`=>`);For I = 1 to 10 doread (A.
FIO [I]);Readln (A. God);BlockWrite (FIZAP, A, 1)Until A . FIO = `**********`;close (FIZAP);Reset (FIZAP, 12);I: = 1;Repeat BlockRead (FIZAP, A, 1);97Writeln (I : 2, `-ая запись `, A. FIO, A. GOD: 5);I : = I+1Until A . FIO = `**** `;end.Протокол работы программы:Иванов 1966Петров 1970Сидоров 1972Пушкин 19681 – ая запись2 – ая записьи т. д.Пример. В программе из внешнего файла с именем PP75.dat удаляются всезаписи, соответствующие людям, родившимся до 1970 года. Для этогоиспользуется рабочий файл с внешним именем `PPR.dat`, в который сначалапоследовательно переписываются из внешнего файла все оставляемые записи,затем внешний файл открывается на запись, рабочий файл – на чтение и всёсодержимое рабочего файла переписывается во внешний файл.
При этом дляконтроля работы программы оставляемые записи выдаются на терминал.Program PP75;Type ZAP = RecordFIO : Array [1…10] of Char;GOD: integerend; {of record}F = File;Var FIZAP, RB: FPK;A : ZAP;I : integer;{Ввод данных в файл FIZAP}begin Assign (FIZAP, `C: \ t – pas \ pp75.dat);ReWrite (FIZAP, 12);RepeatWrite (`=>`);For I = 1 to 10 doread (A. FIO [I]);Readln (A. God);BlockWrite (FIZAP, A, 1)Until A .
FIO = `**********`; {здесь год должен быть >1970}close (FIZAP);{контрольный вывод содержимого обрабатываемого файла FIZAP}Writeln;Writeln (`обрабатываемый файл :`);Reset (FIZAP, 12);I: = 1;Repeat BlockRead (FIZAP, A, 1);98Writeln (I : 2, `-ая запись `, A. FIO, A. GOD: 5);I : = I+1Until A . FIO = `**********`;close (FIZAP);{Перепись из обработанного файла FIZAP в рабочий файл RB людей, родившихсяне ранее 1970 года}Reset (FIZAP, 12);Assign (RB, `C: \ Language\ t – pas \ pp75.dat);ReWrite (RB, 12);RepeatBlockRead (FIZAP, A, 1);If A . GOD >= 1970 Chen BlockWrite (RB, A, 1)Until A .