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

Var s1, s2 : real;

BEGIN

// Аналитическая функция

writeln(' Sq for y=',

Sq(0, Pi/2, 0.001, 0.0001, y, s1, s2):12:7);

writeln(s1:12:8, s2:12:8);

// Функция, заданная рядом

writeln(' Sq for R=',

Sq(0, Pi/2, 0.001, 0.0001, R, s1, s2):12:7);

writeln(s1:12:8, s2:12:8);

readln;

END.

Задания.

Составить программу решения задачи 7.2 для своего варианта. Вид аналитической функции и интервал взять из заданий к задаче 6.1, а выражение для ряда – из заданий к задаче 6.2. Точность вычисления суммы членов ряда принять 0.0001, а точность вычисления площади под кривой 0,001. Обосновать ответ на вопрос: какое из двух значений точности определяет время счета и почему?

Домашнее задание 2. Практикум 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);