Объединения
Лабораторная работа 17. Объединения
Цель работы: изучить понятия, оформления и определения объединений, доступ к элементам объединения, указатели на объединения и научиться решать задачи с использованием объединений на языке C++.
При выполнении лабораторной работы для каждого задания требуется написать программу на языке С++, в которой выполнена разработка объединения в соответствии с постановкой задачи, ввод данных элементов объединения, их обработка и вывод на экран в указанном формате. При этом объединение может являться одним из полей структуры. Ввод данных осуществляется с клавиатуры с учетом требований к входным данным, содержащихся в постановке задачи. Ограничениями на входные данные являются максимальный размер строковых данных, диапазоны числовых типов полей объединения или структуры, максимально допустимый размер массива структур в языке С++.
Теоретические сведения.
Ознакомьтесь с материалом лекции 17.
Задания к лабораторной работе.
Выполните приведенные ниже задания.
- На основе определения структуры из Примера 2 лекции 17 разработайте программу, которая запрашивает параметры геометрической фигуры и выводит ее периметр и площадь.
- На основе определения структуры из Примера 3 лекции 17 разработайте программу, которая запрашивает информацию о трех объектах и выводит ее в виде таблицы.
- Разработайте структуру, используя объединение: Сотрудник (ФИО, пол, образование, специальность, вуз, должность, стаж). Сотрудник может не иметь высшего образования. Введите информацию о трех сотрудниках и распечатайте в виде таблицы.
- Опишите переменную структуру для моделирования, предложенного понятия. Координаты точки (пара вещественных или комплексных чисел). Определите расстояние между двумя введенными точками.
Указания к выполнению работы.
Каждое задание необходимо решить в соответствии с изученными методами объявления и обработки данных объединений в языке С++. В задачах объединение, как правило, является одним из полей структурного типа. При объявлении объединений выполните комментирование используемых полей. При выполнении задач 1 и 2 используйте Примеры 2 и 3 соответственно из материалов лекции 17. В задачах 2 и 3 следует использовать массив структур, организовав его вывод в виде таблицы.
Следует реализовать каждое задание в соответствии с приведенными этапами:
- изучить словесную постановку задачи, выделив при этом все виды данных;
- сформулировать математическую постановку задачи;
- выбрать метод решения задачи, если это необходимо;
- разработать графическую схему алгоритма;
- записать разработанный алгоритм на языке С++;
- разработать контрольный тест к программе;
- отладить программу;
- представить отчет по работе.
Требования к отчету.
Отчет по лабораторной работе должен соответствовать следующей структуре.
- Титульный лист.
- Словесная постановка задачи. В этом подразделе проводится полное описание задачи. Описывается суть задачи, анализ входящих в нее физических величин, область их допустимых значений, единицы их измерения, возможные ограничения, анализ условий при которых задача имеет решение (не имеет решения), анализ ожидаемых результатов.
- Математическая модель. В этом подразделе вводятся математические описания физических величин и математическое описание их взаимодействий. Цель подраздела – представить решаемую задачу в математической формулировке.
- Алгоритм решения задачи. В подразделе описывается разработка структуры алгоритма, обосновывается абстракция данных, задача разбивается на подзадачи. Схема алгоритма выполняется по ЕСПД (ГОСТ 19.003-80 и ГОСТ 19.002-80).
- Листинг программы. Подраздел должен содержать текст программы на языке программирования С++, реализованный в среде MS Visual Studio 2010.
- Контрольный тест. Подраздел содержит наборы исходных данных и полученные в ходе выполнения программы результаты.
- Выводы по лабораторной работе.
- Ответы на контрольные вопросы.
Контрольные вопросы
- В чем принципиальное отличие размещения в памяти элементов структуры и объединения?
- Каким образом определяется размер объединения?
- Какова цель использования объединений в программировании?
- Какую информацию об объединении содержит указатель на это объединение?
- Какое значение будет храниться в объединении, если будут проинициализированы все поля?
- Какие существуют способы обращения к элементам объединения?
- В чем отличия различных способов обращения к элементам объединения?
- Для моделирования каких данных целесообразно использовать массив объединений?
- С какой целью объединения включаются в структуру в качестве ее полей?
- Как и с какой целью объявляются переменные с изменяемой структурой?