Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР14-С++-24-мая-2012.doc
Скачиваний:
32
Добавлен:
23.09.2019
Размер:
2.26 Mб
Скачать

Министерство финансов Российской Федерации

Всероссийская государственная налоговая академия

ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ

Бакалавры: 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. Запись является частным, но наиболее востребованным случаем структуры. Понятие структура является более мощным, поскольку допускает вложение одной структуры в другую, в то время, как для записей вложение запрещено.

Использование структур

Структуры в С++ используются для логической или физической группировки объектов, имеющих общий контекст. Наиболее очевидным использованием является создание пользовательских типов данных, упрощающих написание, понимание и сопровождение программы.

Использование структур при написании собственных типов данных рекомендуется в том случае, если выполняется ряд условий:

  • Создаваемый тип данных не имеет собственного поведения. То есть объект такого типа рассматривается как пассивный набор данных.

  • Члены данных создаваемого типа данных не могут находиться во взаимно противоречивом состоянии. То есть любая комбинация значений членов структуры является допустимой.

Для более сложных пользовательских типов данных в языке С++ используются классы.

До того, как будет изучен материал по классам, необходимо использовать структуры для описания пользовательских типов данных во всех случаях, когда это позволяет улучшить читаемость программы.

В общем случае при работе со структурами следует выделить четыре момента:

- объявление и определение типа шаблона структуры,

- объявление структурной переменной,

- инициализация структурной переменной,

- использование структурной переменной.

Рассмотрим эти четыре момента в последующих разделах.