- •Курс «основы алгоритмизации и программирования»
- •Тема: «создание и преобразование файлов»
- •1. Понятие файла.
- •1.1. Типизированные файлы.
- •1.1.1. Определение файлового типа.
- •1.1.2. Процедуры и функции обработки файлов.
- •П р о ц е д у р ы
- •Основные логические устройства, которые используются в Турбо Паскале
- •Ф у н к ц и и
- •1.1.3. Файлы последовательного доступа.
- •1.2. Текстовые файлы.
- •Процедуры и функции обработки текстовых файлов
- •П р о ц е д у р ы
- •Ф у н к ц и и
- •1.4. Файлы произвольного доступа.
- •1.5. Нетипизированные файлы.
- •3. Индивидуальные задания.
- •Файлы последовательного доступа
- •Текстовые файлы
- •Файлы произвольного доступа
- •Контрольные вопросы
- •Тема: «создание и преобразование файлов»
- •- Страница 17 -
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.