- •Методические указания по выполнению домашних заданий для студентов 1 курса специальности иу-10.
- •Введение.
- •Домашнее задание 1. Практикум 6. Приближенные вычисления.
- •Задача 6.1.
- •Var a, b, c : real;
- •Iter : longword;
- •Inc(iter);
- •Задания.
- •Задача 6.2.
- •Inc(n); inc(iter);
- •Задания.
- •Практикум 7. Процедурные типы.
- •Задача 7.1.
- •Var a, b, X, dx, y1, y2, s1, s2 : real;
- •Var a, b, X, dx, y1, y2, s1, s2 : real;
- •Inc(iter);
- •Задания.
- •Задача 7.2.
- •Var s1, s2 : real;
- •Задания.
- •Домашнее задание 2. Практикум 13. Типизированные файлы.
- •Задача 13.1.
- •Var I : word;
- •Var I, j : word; buf : tSportMan;
- •If fSort(a[I], a[j]) then
- •Var I : word;
- •Var I : word;
- •Var aHi : Ta; Var nHi : word);
- •Var I : word;
- •Задания.
- •Домашнее задание 3. Практикум 18. Использование объектной технологии для построения движущихся фигур.
- •X, y : real;
- •2*T0.X-border, 2*t0.Y-border);
- •X3, y3 : real;
- •X1, y1, x2, y2, x3, y3 : real;
- •Inherited Init(fx0, fy0, fmx, fcnv);
- •Var t : array[1..3] of tPoint; I : byte;
- •Var t0 : tPoint; tc : trPoint; tri:cTri;
- •0,0, 1,0, 0,1, Tc, clRed);
- •Var I : byte; r, a : real;
- •Var t0 : tPoint; tc : trPoint;
- •0,0, 1,0, 0,1, Tc, clRed);
- •Var I : word;
- •Var dx : real; tr : trPoint; tp: tPoint; I : word;
- •Inherited Init(fx0, fy0, fmx, fcnv);
- •Var dx : real;
- •Var t : array[1..3] of tPoint; tr : trPoint;
- •I : byte;
- •Var dx : real;
- •Var list : cList;
- •Var I : word;
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);