Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Объединения

Структуры

Перечисление.

Переименование типов

typedef unsigned int unit;

typedef char Msg[10];

 

unit I,j;

Msg str[10];

 

Перечисляемый тип данных определятся списком целочисленных констант.

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

enum err {err_read, err_write, err_convert}

err error = err_read;

 

switch(error)

{

case err_read: break;

}

 

другой пример

enum { two =2, three, four, ten = 10, eleven};

//при отсутствии инициализации каждой следующей константе присваивается значение на еденицу больше значения предыдущей

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

При выполнении арифметических операций константы рассматриваются, как целочисленные.

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

 

Структура — совокупность разнотипных данных, объединенных одним

"struct"[имя] "{"тип1 элемент1; тип2 элемент2;... "}" [список описателей];

 

//primer

struct worker{

char fio[30];

int date, code;

double celery;

};

worker staff[100], *ps;

 

элементы структур(поля) могут иметь любой тип кроме типа этой же структуры, но могут быть указателями на него.

Имя структуры можно использовать сразу после его объявления, а определение дать позднее.

Например

struct list;

struct link

{

list *p;

link *prew, *succ;

}

для инициализации структуры, значения ее элементов перечисляются в порядки их описаний.

 

struct

{

char fio[30];

int date, code;

double celery;

}

worker = {"ivanov",31,215,312.60}

return 0;

При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива.(внешнего)

 

struct complex

{

float real, im;

};

complex[2][3]={

{{1,1},{ и т.д.}

}

для переменных одного и того же типа определена операция присваивания.

доступ к полям структуры определяется с помощью операции выбора.

если элементом структуры является другая структура то доступ к ее элементам выполняется через 2 операции выбора.

Например

struct A {int a; double x;};

struct B {A a; doble x;};

x[2];

x[0].a.a = 1;

x[1].x = 0.1;

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

Особый вид полей структуры — битовые поля.

При описании битового поля после имени через двоеточие указывается длина поля в битах.

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

Пример

struct Options

{

bool centerX: 1;

bool centerY: 1;

unsigned int shadow: 2;

unsigned int palette: 4;

}

размещение битовых полей в памяти зависит от компилятора и аппаратуры.

 

 

Объединения — частный случай структуры, когда все поля располагаются по одному и тому же адресу.

 

Длина объединения равна наибольшей из длин полей.

В каждый момент времени переменная типа union содержит одно значение.

#include <iostream>

using namespace std;

 

int main()

{enum paytype (card, check);

paytype ptype;

union payment;

{char card[25];

long check;

} info:

switch(ptype)

{

case card: cout <<"Oplata" << info.card; break;

case check:

и т.д.

 

Объединение можно использовать в качестве поля структуры, при этом следует добавить еще одно поле, которое определяет какое именно элемент объединения используется в данный момент

Пример

#include <iostream>

using namespace std;

 

int main()

{

enum paytype{card, check};

struct

{paytype ptype;

union

{char card[25];

long check;

};

} info;

//...

switch(info.ptype)

{case card: cout <<"Oplata po karte" <<info.card; break;

case check: cout << "oplata chekom "<< info.check; break;

}

return 0;

}

на объединение налагаются следующие ограничения

1.объединение может инициализироваться только значением его первого элемента

2. объединение не может содержать битовые поля.

3. объединение не может содержать виртуальные методы, конструкторы, деструкторы и операцию приссваивания.

4. не может входить в иерархию классов

 

Вопросы к экзамену:

1.Общие сведения об информации, компьютерах и программировании. Кодирование. Раскодирование. Память. Слово в памяти. Принцип хранимой программы.

2.Краткая характеристика современных компьютеров.

3.Общие принципы построения компьютеров.

4.Особенности персональных компьютеров. Аппаратура. ПО ПК.

5.Основные идеи структурного программирования. Подпрограммы.

6.Языки программирования. Системы программирования. Трансляторы. Этапы трансляции. Алфавит, словарь и грамматика языка.

7.Изображение значений в языке С++. Базовые типы данных.

8.Структуры программы в языке С++. Директивы препроцессора. Описание данных.

9.Переменные и выражения. Область действия имени. Классы памяти.

10.Операции. Присваивание. Унарные операции. Бинарные операции. Тернанрная операция.

11.Операторы. Оператор ветвления. Оператор выбора. Операторы цикла. Операторы передачи управления.

12.Указатели. Динамические переменные. Операции с указателями.

13.Массивы. Поиск в массиве. Динамические массивы. Многомерные массивы. Динамические многомерные массивы.

14.Строки. Операции над строками.

15.Переименование типов.

16.Стркутуры.

17.Объединения.

<== предыдущая лекция | следующая лекция ==>
Типы определяемые программистом | 
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 312; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.