Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.3_Базовые_и_производные_типы.doc
Скачиваний:
6
Добавлен:
04.11.2018
Размер:
327.17 Кб
Скачать

Структурированные типы

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

Структурированный (агрегатный) тип данных – это тип, характеристиками которого являются: множественность элементов, его структура, способ доступа к элементам, тип элементов и операции с данными этого типа (массивы, структуры, объединения, классы). Множество значений такого типа определяется множеством значений его элементов и их количеством.

Наборы данных не всегда нужно сохранять в памяти исполняемой программы. Нередко обработку набора данных можно выполнить по мере получения элементов этого набора – при вводе, чтении из файла или вычислении элементов. Нередко излишне хранение набора промежуточных данных программы. Например, вычисление минимального элемента матрицы из элементов, максимальных в ее строках, не требует сохранения этих максимальных элементов. Вычисление минимального элемента делается попутно с вычислением максимальных элементов.

Практически невозможно дать рекомендации выбора представления наборов данных в общем случае – этому вопросу необходимо уделять внимание при рассмотрении каждой конкретной задачи.

Описание информационного объекта в программе Определение и объявление объекта

Перед тем, как использовать информационный объект, его нужно описать (определить или объявить):

    • Определения связывают информационные объекты программы с их идентификаторами, резервируют для объектов память и устанавливают их атрибуты.

    • Объявления делают идентификаторы информационных объектов известными компилятору.

    • В программе определение информационного объекта всегда одно, объявлений может быть несколько.

Описание является определением, если:

    • содержит инициализатор;

    • полностью описывает функцию (включает тело функции);

    • описывает объединение или структуру (включая компоненты);

    • описывает класс (включая его компоненты);

Описание является объявлением, если:

    • описывает прототип функции;

    • содержит спецификатор extern;

    • описывает статический компонент класса;

    • описывает имя класса;

    • описывает имя типа, вводимого пользователем (typedef).

Примеры описаний программных объектов

char1 c; //определение символьной переменной

int a; //определение целочисленной переменной

float x, y; //определение вещественных переменных

char* str = "aaaa"; //определение указателя и инициализация его адресом //строкового литерала

struct complex { float re, im; }; //определение структурного типа (структуры)

struct complex1 { int re, im; }; //определение структурного типа (структуры)

complex1 var; //и переменной этого типа

  

extern complex funt(complex); //объявление функции, которая принимает // в качестве аргумента и возвращает структуру

typedef complex point; //объявление типа point как синонима типа complex

extern int error_number; //объявление переменной типа int

int extern c; //верное !!! объявление переменной типа int

static int a; //определение статической переменной типа int

int static b; // верное !!! определение статической переменной типа int

Но аналогичная запись в классе (если static int а является компонентом класса) только объявляет переменную а как статический компонент класса.

float real(complex* p) { return p->re; }; //определение функции

const double pi = 3.1415926535897932385; //определение и инициализация переменной

double const pi1= 3.141592; //верное !!! определение и инициализация переменной

struct user; //объявление структурного типа user

template<class T> abs(T x) { return х>0 ? -x : x; } //определение шаблона семейства функций

  

enum beer { Carlsberg, Tuborg, Thor }; //определение перечислимого типа beer и //именованных констант

enum color {red, green=5, blue, black, white}; //определение перечислимого типа color и //именованных констант