Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум_11.doc
Скачиваний:
26
Добавлен:
14.02.2016
Размер:
282.11 Кб
Скачать

1.5. Нетипизированные файлы.

Нетипизированным (бестиповым) файл объявляется предложением Fileи отличается тем, что для него не указан тип элементов. Отсутствие типа делает этот файл совместимым с любыми другими файлами и позволяет организовать высокоскоростной обмен данными между диском и памятью. При работе с нетипизированными файлами могут применяться все процедуры и функции, доступные типизированным файлам, за исключениемRead иWrite. Эти процедуры заменяются соответствующими высокоскоростными процедурамиBlockReadиBlockWrite. Для вызова этих процедур используются следующие предложения:

Blockread(, Buf, N[, Result])

Blockwrite(, Buf, N[, Result])

Здесь - файловая переменная;Buf– имя буферной переменной, которая будет участвовать в обмене данными с дисками (ее размер должен быть не менее 128*Nбайт);N– количество записей по 128 байт каждая, которые должны быть прочитаны или записаны за одно обращение к диску;Result- необязательный параметр, содержащий при выходе из процедуры количество фактически обработанных записей.

При использовании в работе с нетипизированными файлами процедуры Seekкаждый компонент файла рассматривается как запись длиной 128 байт.

Пример 2.

В качестве примера использования нетипизированных файлов рассмотрим программу быстрого копирования файлов.

programquikcopy;

varnewfile, oldfile: file; {результирующий и исходный файлы}

newname, oldname: string[12]; {имена файлов}

oblbuf: array [1..200, 1..128] of byte; {буферная переменная}

count: word; {счетчик прочитанных блоков}

result: word; {счетчик записанных блоков}

iores: byte; {результат работы с файлом}

begin

{связь с исходным файлом для чтения}

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-}

blocwrite(newfile, oblbuf, count, result);

{$I+}

if result<count then

begin

writeln('нет места на диске');

halt

end

until count<200;

writeln('копирование завершено’);

close(oldfile);

close(newfile)

end.

3. Индивидуальные задания.

Задание 1.

Файлы последовательного доступа

варианта

З А Д А Н И Е

1.

Сформировать файл последовательности 15 чисел, в которой каждый i-й компонент определяется по формуле

Определить количество положительных значений, содержащихся в сформированном файле.

2.

Сформировать файл последовательности 20 чисел, в которой каждый 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.

5.

Сформировать файл, содержащий фамилии нескольких студентов. Добавить к полученному файлу фамилии еще 2-3 студентов.

6.

Записать в файл оценки (в баллах), полученные некоторым студентом на экзаменах в течение всех сессий. Добавить в начало файла оценки, полученные на вступительных экзаменах.

7.

Записать в файл оценки (в балах), полученные некоторым студентом на экзаменах в течение всех сессий, и определить средний балл.

8.

Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой – номера их телефонов. Составить программу, которая по фамилии вашего знакомого определяет номер его телефона.

9.

Сформировать два файла. В один из них поместить фамилии пяти ваших знакомых, а в другой – номера их телефонов. Составить программу, которая по номеру телефона вашего знакомого определяет его фамилию.

10.

Сформировать файл, компоненты которого являются записями, содержащими информацию о фамилии и дате рождения 10 ваших товарищей. Составить программу определения даты рождения по фамилии вашего товарища.

11.

Сформировать файл, компоненты которого являются записями, содержащими информацию о фамилии и дате рождения 10 ваших товарищей. Составить программу определения фамилии вашего товарища по дате его рождения.

12.

Сформировать файл, состоящий из пяти записей, каждая из которых имеет вид: марка автомобиля, госномер. По госномеру автомобиля определить его марку.

13.

Сформировать файл, состоящий из пяти записей, каждая из которых содержит фамилию любимого вами актера и название фильма, в котором он снимался. Составить программу определения названия фильма по фамилии актера, который в нем снимался.

14.

Сформировать файл, состоящий из пяти записей, каждая из которых содержит фамилию любимого вами актера и название фильма, в котором он снимался. Составить программу определения фамилии актера по названию фильма, в котором он снимался.

15.

Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле

где i – номер компонента файла. Определить, сколько в полученном файле содержится положительных значений.

16.

Сформировать файл, компонентами которого являются действительные значения, вычисляемые по формуле

где i – номер компонента файла. Определить, сколько в полученном файле содержится отрицательных значений.

17.

Сформировать файл целых чисел. Вывести на экран только те компоненты файла, значения которых лежат в интервале от 0 до 25.

18.

Сформировать файл целых чисел. Вывести на экран четные значения компонентов файла.

19.

Сформировать файл, компонентами которого являются названия нескольких троллейбусных остановок по некоторому маршруту. Добавить в конец файла названия еще нескольких остановок данного маршрута.

20.

Сформировать файл, элементами которого являются значения функции в точкахX=(0,1; 0,2; 0,25; 0,33; 1,78; 2,05; 2,23). Определить компонент файла, имеющий минимальное значение.

21.

Сформировать файл, элементами которого являются значения функции в точкахX=(0,1; 0,2; 0,25; 0,33; 1,78; 2,05; 2,23). Определить компонент файла, имеющий максимальное значение.

22.

Сформировать файл целых чисел. Вывести на экран только нечетные значения компонентов файла.

23.

Записать в файл оценки (в балах), полученные студентами группы по некоторому предмету, и определить средний балл.

24.

Записать в файл оценки (в балах), полученные студентами группы по некоторому предмету, и определить процент успеваемости.

25.

Записать в файл оценки (в балах), полученные студентами группы по некоторому предмету, и выдать список студентов, получивших оценку «отлично»..

Задание 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]