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

Составители В.С.Кугураков, Р.К.Самитов

Настоящая работа предназначена для студентов, изучающих программирование на современных ЭВМ, а также для преподавателей, ведущих практические занятия по программированию. Учебный материал представлен задачами для программирования, которые рекомендуется использовать при изучении следующих тем: ЗАПИСИ, ФАЙЛЫ, ЯЗЫК управления ЗАДАНИЕМ.

Только философы имеют дело с реальным миром.

И.Флорес, Структуры и управление данными [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.

г) Напечатать таблицу.

д) Напечатать только данные из граф ФАМИЛИЯ, УДЕРЖАНО, УПЛАЧЕНО.

е) Напечатать только те строки, для которых графа ДОЛГ имеет ненулевое значение.