- •Уд.2. Обработка простых документов. Операции над таблицами
- •13. (Химанализ.)
- •Уш.З. Иерархия типов данных
- •15. (К годовому отчету.) в каждой компоненте файла ста-тистика-по-рапо содержатся следующие сведения:
- •16. (Обработка файла платежи,- Формирование новых файлов.) в каждой компоненте файла платежи содержатся следующие сведения:
- •17. (Итоги экзаменационной сессии.) Каждая компонента файла сессия содержит следующие данные из экзаменационной ведомости:
- •18. (Контроль ключевого поля.) в каждой компоненте файла кадры содержится:
- •19. (Обработка файла поставки. - Упорядоченные файлы.) Каждая компонента файла поставки содержит:
- •20. (Поквартальный план.) Каждая компонента исходного файла поквартальный-план, имеющего отношение к выпуску обуви некоторым предприятием, содержит:
- •21. (Подписная компания.) Каждая компонента файла подписные издания содержит:
- •1.2. При составлении одношаговых заданий рекомендуется рассмотреть следующие виды наборов данных:
Составители В.С.Кугураков, Р.К.Самитов
Настоящая работа предназначена для студентов, изучающих программирование на современных ЭВМ, а также для преподавателей, ведущих практические занятия по программированию. Учебный материал представлен задачами для программирования, которые рекомендуется использовать при изучении следующих тем: ЗАПИСИ, ФАЙЛЫ, ЯЗЫК управления ЗАДАНИЕМ.
Только философы имеют дело с реальным миром.
И.Флорес, Структуры и управление данными [7] . Проектировщик вычислительной системы пытается ь реальный мир путем структуризации данных. И.Флорес, там же.
УШ. ЗАПИСИ
ЗАПИСИ (record 'ы - в Паскале и Аде, struct ^ ы - в Алголе-68), как и МАССИВЫ, - это составные объекты, т.е. совокупности компонент. Принципиальное различие между массивами и записями обусловлено различиями в правилах построения этих объектов и способах идентификации компонент:
Массив - это регулярная (однородная) структура: все компоненты (элементы) массива должны быть одного типа. Доступ к тому или иному элементу массива осуществляется путем указания индекса (номера) соответствующего элемента (заметим, что в определении массива устанавливается некоторая нумерация его элементов) .
Запись - это комбинированная структура: компоненты (поля) записи могут быть неоднородными, т.е. различных типов. Доступ к тому или иному полю записи осуществляется путам указания имени соответствующего поля (в определении записи все ее поля должны быть снабжены явными именами).
Общее свойство массивов и записей заключается в том, что это - структуры с произвольным доступом: возможен непосредственный (прямой) доступ к любой компоненте. Запись - более универсальная структура по сравнению с массивом, поскольку ее компоненты могут иметь разные типы. С другой стороны, массив -более гибкая и динамичная структура: переход от одного элемента массива к другому (например, в цикле) может быть легко осуществлен путем изменения вычисляемого индекса, тогда как структура записи таких возможностей не предоставляет: имена полей - это фиксированные (постоянные) идентификаторы, а не вычисляемые значения.
Массивы и записи можно комбинировать, получая целую иерархию структур типа "массив записей", "запись с компонентами-массивами" и пр., а также использовать для моделирования таких динамических информационных структур, как стеки, очереди, линейные связанные списки, деревья и пр. Отметим также, что компонентами файлов обычно являются записи.
УШ.1. Использование ЗАПИСЕЙ для представления простейших математических объектов
1. (Возврат.) Вернуться к задачам 4-11 (о треугольнике на плоскости) и 57-60 (о комплексных числах) из [б ] .
Мотивация: использование записей для представления таких объектов, как точки на плоскости и комплексные числа.
2. (Алгебра квартенионов.) Кватернион q может быть
представлен в виде
(* )
где - действительные (вещественные) числа, I - обычная единица, а - специальные кватернионы (т.н. ква-тернионные единицы), подчиняющиеся следующим правилам умножения:
Операции над кватернионами выполняются естественным образом (но, конечно, с учетом соотношений для единиц I, i,j,k ). Например, если и ,
тo называется сопряженным к кватерниону .
Кватернион . Действительное число называется нормой кватерниона . Отметим, что . ?
Оформить в виде подпрограмм основные операции над кватернионами : вычисление
а) - сопряженного к кватерниона;
б) + - суммы кватернионов и ;
в) - произведения кватернионов и (заметим, что произведение не коммутативно);
г) - нормы кватерниона ;
д) - обратного к кватерниону .
Замечание. Кватернионы, введенные У.Гамильтоном в 1843 году, тесно связаны с векторным исчислением, и исторически последнее возникло из кватернионов. Интересно отметить (хотя это и не относится к существу нашей задачи), что множество H кватернионов является единственным расширением поля С комплексных чисел, которое образует некоммутативную алгебру с делением над полем R действительных чисел. Согласно теореме Фробениуса над полем R существуют лишь три конечномерные ассоциативные алгебры с делением: R, С и Н .
3. (Аналитическая геометрия в пространстве.) Точки трехмерного евклидова пространства задаются радиус-векторами , которые в декартовой системе координат представлены тройками вещественных чисел.
а) Реализовать следующие операции над Векторами, оформляя их в виде подпрограмм:
1) вычисление модуля вектора ;
2) умножение вектора на скаляр ;
3) сложение векторов и ;
4) вычисление скалярного произведения ( ) векторов и ;
5) вычисление векторного произведения векторов и .
Напомним необходимые формулы:
- 5 -
б) Вычислить:
1) S — площадь параллелограмма, построенного на векторах и
2) V - объем параллелепипеда, построенного на векторах , и
3) - объем тетраэдра, вершины которого заданы векторами
в) Установить, лежат ли три точки , заданные радиус-векторами , на одной прямой. (Ответ положителен тогда и только тогда, когда
г) Установить, лежат ли четыре, точки , заданные радиус-векторами , в одной плоскости. (Ответ положителен тогда и только тогда, когда
д) Плоскость задана параметрическим уравнением ( - радиус-вектор произвольной точки плоскости;
для задания плоскости достаточно задать векторы , и ). Вычислить расстояние ? от точки , заданной радиус-вектором , до плоскости по формуле
е) Положение точки в трехмерном пространстве может быть задано не только декартовыми координатами (x,y,z), но и другими способами. На рис.1, наряду с декартовыми координатами, показаны также цилиндрические координаты (,,z) и сферические координаты (r,, ) = (полярный радиус, широта, долгота).
1) Для точки , заданной декартовыми координатами, вычислить ее цилиндрические и сферические координаты.
2) Выполнить обратное преобразование: переход от цилиндрических и сферических координат к декартовым.
Рис. I. Системы координат: декартова (x,y,z), цилиндрическая (,,z) и сферическая (r,,).
ж) Для городов А и Б (на поверхности геоида, т.е. земного шара) известны их координаты - широта и долгота. Вычислить расстояние d между городами.
Указание. Для векторов и , задающих точки А и Б, перейти от сферических координат к декартовым. После этого можно вычислить (в радианах ) угол между векторами, учитывая, что . Но тогда где R- радиус земного шара. Это - идея. Потребуется, однако, заглянуть в учебник географии, чтобы уточнить, как задаются координаты точек на земной поверхности. В рекомендуемом подходе к решению задачи, конечно, присутствует элемент абстрагирования от реальной действительности: земной шар не является ни правильным шаром, ни даже эллипсоидом.
4. (Рациональные числа.) Всякое рациональное число есть дробь , где p ,q - целые числа, q >0 , и может быть представлено парой (p ,q ).
Оформить в виде подпрограмм основные операции над рациональными числами (арифметика, приведение к несократимым).
Мотивация: точные вычисления.
5. (Многочлены. - Возврат к задачам 62 и 65 из [б] .) 'Оформить в виде подпрограмм основные операции над многочленами с вещественными коэффициентами.
Указание. Всякий многочлен может быть представлен парой ( n,a ), где n - степень многочлена, а a - массив, используемый для размещения коэффициентов многочлена. Длина массива a выбирается с некоторым запасом, поскольку степень многочлена может увеличиваться. Так, при перемножении многочленов степеней k и L получается многочлен степени k+L .
Уд.2. Обработка простых документов. Операции над таблицами
Рисунки, приводимые в данном и следующем подразделах, поясняют структуру документов - записей, которые необходимо
обработать.
6. (Описание структуры.) Описать переменную для данных
следующей структуры:
КУРС |
СПЕЦИАЛЬНОСТЬ
|
ЗАЧЕТЫ (не более семи названий предметов) |
ЭКЗАМЕНЫ (не более четырех названий предметов)
|
7. (Требование на книгу.) Бланк требования на книгу в библиотеке и карточка книжного каталога изображены на рис.2.
а) Используя карточку каталога, заполнить требование на книгу, указав конкретные сведения о читателе и дату
заказа.
б) Требование на книгу дополнить графой "куда", значением которой может быть "абонемент" или "читальный зал". Задание предыдущего пункта (заполнение требования) необходимо теперь выполнить лишь в том случае, если год издания книги >= 1886 или же книга запрашивается в читальный зал, (Чтобы сохранить уникальный книжный фонд, книги с годом издания < = 1885 на дом не выдают.) 6. (Телефонные разговоры.) Бланк извещения о телефонном разговоре изображен на рис.3. Используя заполненный бланк, вы-
СВЕДЕНИЯ О КНИГЕ СВЕДЕНИЯ О ЧИТАТЕЛЕ номер _____________ номер читательского автор_______________ билета____________________________ название___________ Фамилия__________________________
дата заказа_______________________
|
СВЕДЕНИЯ О КНИГЕ ВЫХОДНЫЕ ДАННЫЕ номер_________________ место издания________________ автор_________________ издательство__________________ название_____________ год издания____________________
|
Рис.2 ( к задаче 7). Бланк требования на книгу в библиотеке и карточка книжного каталога.
Номер телефона_____________ СВЕДЕНИЯ ОБ АБОНЕНТЕ СВЕДЕНИЯ О РАЗГОВОРЕ фамилия__________________ дата_______________________ адрес______________________ город______________________ номер счета_____________ время разговора_________ |
Рис.3 (к задаче 8). Бланк извещения о телефонном разговоре.
СВЕДЕНИЯ О ЖКО СВЕДЕНИЯ О ЖИЛЬЦЕ название организации_ адрес__________________ ___________________________ фамилия_______________ номер счета_____________ СВЕДЕНИЯ ОБ ОПЛАТЕ за какой месяц___________________________ год_______________ сумма___________________________________________________________ пени_____________________________________________________________ всего____________________________________________________________
|
Рис.4 (к задаче 9). Квитанция об оплате за коммунальные услуги.
Заполнить следующее задание:
Если номер телефона равен 999999, то сформировать значение переменной квитанция, содержащее:
- сведения об абоненте;
- стоимость разговора ( по 15 коп. за I мин.).
9. (Коммунальные услуги.) Квитанция об оплате за коммунальные услуги изображена на рис.4.
а) Ввести (например, с перфокарт) значения полей, кроме "пени" и "всего".
б) Вычислить значения полей "пени" и "всего". Способ подсчета: пени начисляется в размере 2% от указанной суммы, за каждый просроченный месяц (считая от текущей даты) .
10. (Продажа тканей.) 10 магазинов представили сведения о продаже ткани в метрах по следующей форме:
-
МАГАЗИН
ШЕРСТЬ
Х/Б
ЛЕН
СИНТЕТИКА
а) Подсчитать, сколько ткани каждого вида продано всеми, магазинами.
б) Подсчитать, сколько ткани заданного вида продано магазином с заданным названием.
11. (Составление отчета.)
а) Описать таблицу из 50 строк следующей структуры:
-
НАИМЕНОВАНИЕ ПРОДУКТА
ПЛАН
Выполнено
ПРОЦЕНТ
ВЫПОЛНЕНИЯ
б) Заполнить первые три графы таблицы, вводя данные с перфокарт.
в) Заполнить графу ПРОЦЕНТ ВЫПОЛНЕНИЯ.
г) Сформировать таблицу такой же структуры, но содержащую данные только о тех продуктах, по которым имеется невыполнение плана.
д) Напечатать таблицу.
е) Напечатать только данные из граф НАИМЕНОВАНИЕ ПРОДУКТА и ПРОЦЕНТ ВЫПОЛНЕНИЯ.
12. (Платежи.)
а) Описать таблицу из 100 строк следующей структуры:
ФАМИЛИЯ
1 |
НАЧИСЛЕНО 2 |
УДЕРЖАНО 3 |
УПЛАЧЕНО 4 |
ДОЛГ
5 |
б) Заполнить первую, вторую и пятую графы таблицы, вводя данные с перфокарт.
в) Заполнить третью и четвертую графы, изменяя при необходимости пятую графу. Придерживаться следующих правил расчета. Пусть m2,m3, m4,m5-значения соответствующих граф таблицы. Тогда, если m2>=m5), то положить m3=m5, m4=m2-m5, m5=0; если m2 m<m5 ,то положить m3 = m5 , m4=0 , m5=m5-m2.
г) Напечатать таблицу.
д) Напечатать только данные из граф ФАМИЛИЯ, УДЕРЖАНО, УПЛАЧЕНО.
е) Напечатать только те строки, для которых графа ДОЛГ имеет ненулевое значение.