Скачиваний:
47
Добавлен:
10.02.2015
Размер:
76.29 Кб
Скачать

Практикум 13. Типизированные файлы.

Типизированные файлы, обычно, это файлы записей. Запись, как и массив, является представителем пользовательского типа, т.е. типа определенного пользователем, программистом. Она отличается от массива тем, что элементы записи – поля имеют различные имена и относятся к разным типам, в том числе, могут быть другими записями и массивами. В отличие от массива число полей в записи всегда фиксировано. Файлы записей используются при создании баз данных, в которых хранится информация в виде многоуровневой структуры, отражающей реальные связи между элементами.

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

Задача 13.1.

Создать пополняемый файл записей о результатах соревнований спортсменов-биатлонистов, содержащий информацию о спортсмене (Фамилия И. О., спортивный клуб) и результатах (время на дистанции, количество пораженных мишеней на трех рубежах). Выполнить сортировки

    • По фамилии И.О.

    • По времени на дистанции.

    • По количеству пораженных мишеней на трех рубежах.

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

Эта задача по объему исходного программного кода является достаточно большой и трудоемкой в части отладки из-за необходимости ввода данных с клавиатуры. Кроме того, первоначальное создание файла и его дальнейшее пополнение требуют указания различных режимов открытия файла. По этим причинам разработку программы целесообразно выполнять по этапам.

Этап 1. Создание файла и первая запись в файл. На этом этапе в соответствии с условиями задачи конструируется запись с типом TSportMan. Строковые поля записи FIO и Club объявлены статическими строками фиксированной длины, поскольку динамические строки, адресуемые указателями, не могут быть полями записи файла. Поле времени на дистанции Time объявлено с типом real, чтобы можно было использовать формат времени «минуты : секунды» с указанием секунд после десятичной точки. Результаты на трех рубежах объявлены в виде диапазона базового типа байт от 0 – полный промах, до 5 – все пять мишеней поражены. Для обработки в оперативной памяти объявлена переменная SportMan и образ файла – массив записей a размерностью ns. Наконец, самое главное в этой программе, о чем надо помнить – это режим открытия файла Rewrite, который при каждом запуске программы уничтожает старое содержимое файла. Смысл остальных действий понятен из листинга программы. Для вывода массива предусмотрена процедура форматного вывода OutA с заголовком Caption.

Листинг 13.1а. Создание файла, первая запись в файл и форматный вывод. Заголовок программы опущен.

const nmax=1000;

Type TSportMan = record

FIO : string[50];

Club : string[50];

Time : real;

bh, bm, bl : 0..5;

end;

Ta = array[1..nmax] of TSportMan;

// Процедура форматного вывода массива.

Procedure OutA(Caption : string; a : Ta; ns : word);

Соседние файлы в папке Практикумы 1 курс