русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Процедура BlockWrite.


Дата добавления: 2014-11-28; просмотров: 571; Нарушение авторских прав


Формат обращения:

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.

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



<== предыдущая лекция | следующая лекция ==>
Процедура BlockRead | Занятие 2. Решение задач


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.294 сек.