- •1. Краткие теоретические сведения
- •1.1. Понятие структуры
- •1.2. Определение (описание) шаблона структуры
- •1.3. Описатель типа
- •1.4. Объявление переменных структурного типа
- •1.5. Инициализация переменной структурного типа
- •1.6. Операции со структурами
- •1.7. Доступ к значениям полей структурного типа
- •1.8. Вложенные структурные типы
- •1.9. Массивы структурного типа
- •1.10. Структурные переменные и указатели
- •1.11. Структуры и функции
- •1.11. Использование синонима типа
- •1.12. Доступ к отдельному биту
- •1.13.Типичные ошибки при разработке структур
- •1.14. Примеры программирования задач на структуры
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Вычисление с использованием структур
- •2.4.1.1. Условие задания
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Массив структур
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример выполнения работы
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Структуры данных
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Структуры данных
- •2.4.4.1. Условие задания
- •2.4.4.2. Пример для варианта 31
- •2.4.4.3. Программа
- •2.4.4.4. Тестирование
- •2.4.5. Задание 5. Создание и обработка структур
- •2.4.5.1. Условие задания
- •2.4.6.2. Пример для варианта 30
- •2.4.7.2. Пример для варианта 30
- •2.4.7.3. Программа
- •2.4.7.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие структуры 2
Министерство финансов Российской Федерации
Всероссийская государственная налоговая академия
ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ
Бакалавры: 230700 "Прикладная информатика"
Язык программирования С++
Лабораторная работа № 14
ПРОГРАММИРОВАНИЕ
С ИСПОЛЬЗОВАНИЕМ СТРУКТУР
Автор профессор кафедры "Прикладной информатики в экономике"
кандидат технических наук Л.К. Кузнецов
18 мая 2012 г.
Москва
ВГНА
2012
Лабораторная работа № 14
Программирование с использованием структур
Цель работы:
Ознакомиться:
с понятием структуры;
с назначением структур;
с видами структур;
с понятием структурированной переменной;
с правилами описания структур в программах на языке С++;
с инициализацией структур;
с выражениями над структурами (с правилами действия с структурами);
с организацией циклов при работе с структурами.
Изучить типовые алгоритмы обработки структур.
Научиться разрабатывать и отлаживать в среде программирования программы с использованием структур.
Получить практические навыки разработки программ, работающих с структурами данных на языке С++.
1. Краткие теоретические сведения
Ниже приводятся минимальные сведения, необходимые только для выполнения лабораторной работы
1.1. Понятие структуры
Вы уже знаете, что C++ позволяет хранить в массиве связанную информацию одного и того же типа. Вы уже выяснили, что группировка связанных значений в массив очень удобна. В большинстве случаев программам необходимо группировать связанную информацию разного типа. Например, предположим, что ваша программа работает с информацией о служащих. Она должна отслеживать данные о фамилии, возрасте, окладе, адресе, номере служащего и т. д. Для хранения этой информации программе потребуются переменные типа char, int, float, а также символьные строки.
Если вашей программе требуется хранить связанную информацию разных типов, она может использовать структуру.
Неоднородный тип (структура, запись) позволяет конструировать структуры данных самой произвольной природы. Он используется для представления объектов, имеющих достаточно сложное, неоднородное строение и, как правило, используется при создании различного рода информационных систем. Значение неоднородного типа состоит из фиксированного количества элементов (полей) разных типов, поэтому каждый элемент должен иметь уникальное имя, которое используется для доступа к элементу. Программист сам описывает неоднородный (структурный) тип, задавая его “внутреннее строение”: количество элементов, их тип и имена.
Таким образом, структуры представляют собой способ организации данных в программе. Обработка этих данных (если необходимо) происходит с помощью функций. Дальнейшим развитием способов программирования стало объединение данных с обрабатывающими их подпрограммами и появление понятий «класс» и «объект».
Структуры являются развитием понятия массив. Массивы представляют собой объединения однотипных переменных. Однако зачастую логика программы требует объединения разнотипных переменных. Пусть, например, программа оперирует описаниями радиоэлектронных компонентов, для определённости — интегральных схем. Каждая их них имеет характеристики различных типов: маркировка, количество контактов, тип корпуса, напряжение питания, потребляемая мощность и т.д. Можно объединить эти разнотиптые характеристики в единую переменную — структуру.
Элементами или полями структуры могут быть переменные, массивы, ранее определенные структуры. В языке Си функции не могут быть полями структуры. В языке С++ функции могут быть полями структуры и такие структуры называются классами. Они определяются с помощью ключевого слова class.
Приведем несколько определений структуры:
Структура – это совокупность логически связанных переменных, возможно, различных типов, сгруппированных под одним именем для удобства дальнейшей обработки.
Структура – это объединенное в единое целое множество поименованных элементов данных. Элементы структуры (поля) могут быть различного типа, они все должны иметь различные имена.
Структура – это составной тип данных, в котором под одним именем объединены данные различных типов. Отдельные данные структуры называются полями.
Структура — это составной тип данных, который состоит из элементов разных типов. Объявление структуры следует рассматривать как объявление типа.
Структура является собранием одного или более объектов (переменных, массивов, указателей, других объектов), которые для удобства работы с ними объединены под одним именем.
Структура – это способ связать воедино данные разных типов и создать пользовательский тип данных.
Структура представляет собой переменную, группирующую связанные части информации, называемые элементами, типы которых могут различаться. Группируя данные в одну переменную подобным образом, вы упрощаете ваши программы, снижая количество переменных, которыми необходимо управлять, передавать в функции и т. д.
Структура - это набор данных, где данные могут быть разного типа. Например, структура может содержать несколько переменных типа int и несколько переменных типа char. Переменные, которые содержаться в структуре называются членами или полями структуры. Структуры можно определять с помощью ключевого слова struct.
Структуры в С++ используются для логического и физического объединения данных произвольных типов, так же как массивы служат для группирования данных одного типа.
Объединив в структуре набор значений различного типа, впоследствии с этим набором можно обращаться как с одним элементом.
Пример 14.1
Рассмотрим музыкальную коллекцию на компакт-дисках (CD). Такая коллекция может включать следующую информацию:
– название CD;
– имя исполнителя;
– число песен;
– стоимость CD;
– дату покупки.
Эта структура имеет пять полей. Определим тип для поля структуры:
Имя элемента |
Тип данных |
Название CD |
Символьный массив из 25 символов |
Имя исполнителя |
Символьный массив из 20 символов |
Число песен |
Целый |
Стоимость CD |
С плавающей точкой |
Дата покупки |
Символьный массив из 8 символов |
В программирование часто структуры называют записями. В базах данных и в языке Pascal подобная конструкция носит название записи. Объясняется это тем фактом, что понятие структура в языке С++ полностью идентичено понятию запись в базах данных.
Запись (record) – структурированный (составной) тип данных, состоящий из фиксированного числа компонентов разного типа, называемых полями (Helds) записи.
Записи (структуры) являются одними из основных структур данных в языках программирования высокого уровня. Понятие записи используется при машинной обработке различных документов, таблиц, баз данных.
Запись — это структура, состоящая из фиксированного числа компонент, называемых полями. В одном поле данные имеют один и тот же тип, а в разных полях могут иметь разные типы, за исключением функций.
Запись связывает элементы разных типов в один объект. Этим запись отличается от массива (в массиве все элементы имеют одинаковый тип). Чтобы можно было ссылаться на тот или иной компонент записи, поля именуются, т.е. каждому полю записи присваивается имя. Например, такую информацию о студенте, как фамилия, имя, отчество, адрес, возраст, экзаменационные оценки, средняя успеваемость можно объединить в одну запись, имеющую пять полей. Имена и типы полей приведены в таблице 14.1.
Таблица 14.1
|
Поля записи |
||||
Запись |
Fio |
Adress |
Age |
Oc |
Sr |
Типы полей |
Строка |
Строка |
Целое |
Массив целочис. |
Вещ. |
Поля записи могут иметь любой допустимый в С++ тип данных, в том числе поля сами могут быть структурами (записями). Но поле не может иметь тип этой же структуры, но может быть указателем на нее.
Записи (структуры) являются одними из основных структур данных в языках программирования высокого уровня. Понятие записи используется при машинной обработке различных документов, таблиц, баз данных.
Запись — это структура, состоящая из фиксированного числа компонент, называемых полями. В одном поле данные имеют один и тот же тип, а в разных полях могут иметь разные типы, за исключением функций.
Замечание 1. В C++ структуры заключают в себе не только данные, но и код и относятся к средствам объектно-ориентированного программирования. В данном разделе объектные свойства структур не рассматриваются.
Замечание 2. Запись является частным, но наиболее востребованным случаем структуры. Понятие структура является более мощным, поскольку допускает вложение одной структуры в другую, в то время, как для записей вложение запрещено.
Использование структур
Структуры в С++ используются для логической или физической группировки объектов, имеющих общий контекст. Наиболее очевидным использованием является создание пользовательских типов данных, упрощающих написание, понимание и сопровождение программы.
Использование структур при написании собственных типов данных рекомендуется в том случае, если выполняется ряд условий:
Создаваемый тип данных не имеет собственного поведения. То есть объект такого типа рассматривается как пассивный набор данных.
Члены данных создаваемого типа данных не могут находиться во взаимно противоречивом состоянии. То есть любая комбинация значений членов структуры является допустимой.
Для более сложных пользовательских типов данных в языке С++ используются классы.
До того, как будет изучен материал по классам, необходимо использовать структуры для описания пользовательских типов данных во всех случаях, когда это позволяет улучшить читаемость программы.
В общем случае при работе со структурами следует выделить четыре момента:
- объявление и определение типа шаблона структуры,
- объявление структурной переменной,
- инициализация структурной переменной,
- использование структурной переменной.
Рассмотрим эти четыре момента в последующих разделах.