ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Процедура BlockWrite.Формат обращения: blockwrite(Var F: file; Var Buf; Kolblocks: word; result: word); Процедура предназначена для быстрой передачи в файл F определенного числа записей из переменной Buf. Все параметры процедуры blockwrite аналогичны параметрам процедуры blockread. Разница лишь в том, что файл должне быть подготовлен для записи процедурой rewrite. Содержимое переменной Buf целиком помещается в файл, начиная с текущей записи. Обе процедуры выполняют операции ввода-вывода блоками. Объем блока в байтах определяется по формуле: Объем = Kolblocks * recSize, где recSize – размер записи файла, заданный при его открытии. Суммарный объем разового обмена не должен превышать 64 Кбайт. Помимо скорости передачи данных преимущество этих процедур заключается в возможности пользователя самостоятельно определять размер буфера для файловых операций. Эта возможность играет значительную роль в тех задачах, где необходимо жесткое планирование ресурсов. Программист должен позаботиться о том, чтобы длина внутреннего представления переменной Buf была достаточной для размещения всех байт при чтении информации с диска. Дело в том, что чтение информации из файла в буфер, равно как и запись из буфера в файл, производится без типового контроля. Поэтому несоблюдение указанного условия может привести к порче соседних с буфером данных или к помещению на файл посторонней информации. Если при чтении указана переменная Buf недостаточной длины или если в процессе записи на диск не окажется нужного свободного пространства, то произойдет следующее. Если последний параметр result в этих вызовах не задан, то возникает ошибка ввода-вывода; если параметр result задан, то ошибка не будет зафиксирована, а после выполнения процедуры его значение не будет совпадать с значением параметра Kolblocks. Последнее обстоятельство можно проверить, сравнив два указанных значения. После завершения процедуры указатель смещается на result записей. Рассмотрите примеры простых задач. Задача № 1. Составить программу, которая создает нетипизированный файл из 100 чисел и выводит на экран k-ый элемент. Program Netipiz1; Uses Crt; Type FileType = file; Var f: FileType; P, B, k: byte; Begin ClrScr; assign(F, 'MyFile'); rewrite(F,1); Randomize; for k:= 1 to 100 do begin P:= Random(100); blockwrite(F, P, 1); end; close(F); reset(F,1); for k:= 1 to 100 do begin blockread(F, P, 1); write(p,' '); end; write('Введите номер нужного элемента '); readln(k); Seek(F, k-1); blockread(F, P, 1); writeln(k,'-ий элемент файла равен ', P); close(F); End. Задача № 2. Составить программу, которая создает копию элементов нетипизированного файла f и помещает в файл g. Program Netipiz2; Uses Crt; Var f, g: file; Stroka1, sб Stroka2: string; Begin ClrScr; write('Введите имя исходного файла'); read(Stroka1); assign(f, Stroka1); rewrite(f,1); write('Введите содержимое файла '); repeat readln(s); blockwrite(f, s, 1); until readKey = #27; close(f); reset(f,1); write('Введите имя конечного файла'); read(Stroka2); assign(g, Stroka2); rewrite(g,1); while not Eof(f) do begin blockread(f, s, 1); blockwrite(g, s, 1); end; close(f); close(g); write('Содержимое конечного файла:'); while not Eof(g) do begin blockread(g, s, 1); write(s); end; readln; End. Задача № 3. Составить программу, которая создает массив целых чисел и записывает его в нетипизированный файл, а также вычисляет среднее арифметическое элементов файла. Program Netipiz3; Uses Crt; Var f: file; i, k, s: integer; Mas: Array [1..10] of byte; Begin ClrScr; Randomize; for i:= 1 to 10 do Mas[i]:= Random(10); assign(f, 'file.dat'); rewrite(f,1); blockwrite(f, Mas, 10); close(f); reset(f,1); while not Eof(f) do begin blockread(f, k, 1); s:= s+k; Inc(i); end; close(f); write(s/i:5:2); readln; End. Задание. Наберите программу, содержащую все рассмотренные выше задачи, усовершенствуйте решение, разбейте ее на процедуры (ввод, вывод, поиск), дополните комментариями. Проверьте правильность работы программы. Покажите учителю рабочий файл и листинг программы для оценки. Не нашли, что искали? Воспользуйтесь поиском:
|