
- •1. Понятие файла
- •2. Типизированные файлы
- •3. Процедуры и функции обработки файлов.
- •3.1. Процедуры.
- •3.2. Функции
- •4. Файлы последовательного доступа
- •5. Текстовые файлы
- •5.1. Процедуры и функции обработки текстовых файлов
- •6. Нетипизированные файлы
- •Индивидуальные задания.
- •Порядок выполнения работы:
- •Содержание отчета:
6. Нетипизированные файлы
Нетипизированным (бестиповым) файл объявляется предложением File и отличается тем, что для него не указан тип элементов. Отсутствие типа делает этот файл совместимым с любыми другими файлами и позволяет организовать высокоскоростной обмен данными между диском и памятью.
При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключением Read и Write. Эти процедуры заменяются соответствующими высокосортными процедурами BlockRead и BlokWrite. Для вызова этих процеедур используются следующие предложения:
Blockread (fv, Buf, N [, Result])
Blockwrite (fv, Buf, N [, Result])
Здесь файловая переменная; Buf - имя буферной переменной, которая будет участвовать в обмене данными с дисками (ее размер должен быть не менее 128*N байт); N - количество записей по 128 байт каждая, которые должны быть прочитаны или записаны за одно обращение к диску; Result - необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.
При использовании в работе с нетипизированными файлами процедуры Seek каждый компонент файла рассматривается как запись длиной 128 байт.
Пример. В качестве примера использования нетипизированных файлов приведем программу быстрого копирования файлов.
Var
NewFile, OldFile : file; {результирующий и исходный файлы}
NewName, OldName : string[12]; {имена файлов}
OblBuf: array [1..200, 1.. 128] of byte; {буферная переменная}
Count: word; {счетчик прочитанных блоков}
Result: word; {счетчик записанных блоков}
IORes : byte; {результат работы с файлом}
Begin {QuikCopy}
{Связь с исходным файлом для чтения}
repeat
WriteLn ('Введите имя исходного файла');
ReadLn(OldName);
Assign(OldFile, OldName);
{$I-}
Reset(OldFile);
{$I+}
IORes := IOResult;
if IORes <> 0
then
WriteLn ('Файл ', OldFile, 'не существует')
until IORes=0;
{Связь с результирующим файлом}
WriteLn ('Введите имя выходного файла');
ReadLn(NewName);
Assign(NewFile, NewName);
{$I-}
Rewrite(NewFile);
{$I+}
if IOResult <> 0
then
begin
WriteLn('Невозможно создать файл', NewName};
Halt
end;
{Копирование файла}
repeat
BlockRead(OldFile, OblBuf, 200, Count);
{$I-}
BlockWrite(NewFile, OblBuf, Count, Result);
{$I+}
if Result < Count
then
begin
WriteLn('Heт места на диске');
Halt
end
until Count < 200;
WriteLn ('Копирование завершено');
Close(OldFile);
Close(NewFile);
End. {QuikCopy}
Индивидуальные задания.
Сформировать файл последовательности 15 чисел, в которой каждый i -й компонент определяется по формуле
Определить количество положительных значений, содержащихся в сформированном файле.
Сформировать файл последовательности 15 чисел, в которой каждый i -й компонент определяется по формуле:
Определить количество отрицательных значений, содержащихся в сформированном файле.
3. Сформировать файл из значений случайных величин:
0.324, 0.524, 0.789, 0.556, 0.761, 0.248, 0.345, 0.911, 0.216.
Определить для данной последовательности среднее арифметическое компонентов, значения которых меньше 0.5.
4. Сформировать файл из значений случайных величин:
0.324, 0.524, 0.789, 0.556, 0.761, 0.248, 0.345, 0.911, 0.216.
Определить для данной последовательности сумму компонентов, значения которых меньше 0.5.
Записать в файл оценки (в баллах), полученные некоторым студентом на экзаменах в течение всех сессий, и определить средний балл.
6. Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле
,
где i
- номер компонента файла.
Определить, сколько в полученном файле содержится положительных значений.
7. Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле
, где i - номер компонента файла.
Определить, сколько в полученном файле содержится отрицательных значений.
8.
Сформировать файл, элементами которого
являются значения функции
в точках Х=
(0.1,
0.2, 0.25, 0.33, 1.78, 2.05, 2.23). Определить компонент
файла, имеющий минимальное значение.
9. Сформировать файл из значений случайных величин:
0.324, 0.524, 0.789, 0.556, 0.761, 0.248, 0.345, 0.911, 0.216.
Определить для данной последовательности сумму компонентов, значения которых больше 0.4.
Записать в файл оценки (в баллах), полученные некоторым студентом на экзаменах в течение всех сессий, и определить высокий балл.
11. Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле
,
где i
- номер компонента файла.
Определить, сколько в полученном файле содержится положительных значений.
12. Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле
,
где i
- номер компонента файла.
13. Сформировать файл, компонентами которого являются числа Фибоначчи.
14. Даны 2 файла. Найти сумму двух наибольших чисел из файлов.
15. Даны 2 файла. Найти сумму двух наименьших чисел из файлов.
16. Даны 2 файла. Определить, в каком файле сумма чисел больше.