Модуль 2: Составные типы данных и работа с динамической
памятью.
Темы лекции: Пользовательские типы данных.
Практическое задание: Пользовательские типы данных.
Тренер: Игорь Шкулипа, к.т.н.
C++ Базовый. Занятие 6
http://www.slideshare.net/IgorShkulipa 2
Структуры (struct)
Структура — это составной тип данных, который состоит из элементов
разных типов. Объявление структуры следует рассматривать как
объявление типа.
struct FullName
{
char* Name;
char* Surname;
char* MiddleName;
};
struct PersoneInfo
{
FullName PersoneName;
Date BirthDate;
int Age;
int Height;
int Weight;
};
struct Date
{
int Day;
int Month;
int Year;
};
http://www.slideshare.net/IgorShkulipa 3
Инициализация структуры
Инициализация структуры похожа на инициализацию массива.
FullName perName={“Petr”,”Petrov”,”Petrovich”};
Date bDate={1,1,1991};
Порядок данных в фигурных скобках должен соответствовать порядку
объявления полей структуры.
PersoneInfo persone={perName,bDate,22,180,80};
PersoneInfo persone={perName,{1,1,2001},12,150,50};
PersoneInfo persone={{"Ivan","Ivanov","Ivanovich"},{1,1,2001},12,150,50};
http://www.slideshare.net/IgorShkulipa 4
Доступ к полям структуры
Доступ к полям структуры осуществляется по имени переменной структуры с
помощью операции прямого выбора.
<имя_переменной>.<имя_поля>
Date bDate;
bDate.Year=2013;
bDate.Month=1;
bDate.Day=1;
Если структура объявлена, как динамическая переменная, то используется
операция косвенного выбора или операция прямого выбора с разыменованием.
<имя_переменной>-><имя_поля>
(*<имя_переменной>).<имя_поля>
FullName* perName=new FullName;
perName->Name=“Sidor”;
perName->MiddleName=“Sidorovich”;
(*perName).Surname=“Sidorov”;
http://www.slideshare.net/IgorShkulipa 5
Перечисления (enum)
Перечисления - это ещё один пользовательский тип данных.
Перечисления используют для описания какого-то небольшого
множества значений.
enum WeekDays {Monday, Tuesday, Wednesday, Thursday, Friday,
Saturday, Sunday};
После того, как определено перечисление, можно создавать переменные
нового типа
WeekDays wd = Monday;
http://www.slideshare.net/IgorShkulipa 6
Перечисления (enum)
Переменные типа WeekDays могут принимать только семь значений:
Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.
Кроме того, элементы в перечислении нумеруются от нуля. Т.е.
Monday=0, Tuesday=1, Wednesday=2, Thursday=3, Friday=4,
Saturday=5, Sunday=6.
Вместо перечисления, можно было создать семь констант:
const int Monday=0; const int Tuesday=1; const int Wednesday=2;
const int Thursday=3; const int Friday=4; const int Saturday=5;
const int Sunday=6;
Но это можно изменить. Если мы переопределим какой-либо элемент
значением 10, то следующий, получит значение 11 и т.д. Можно так
же переопределить все четыре значения.
enum WeekDays {Monday=10, Tuesday=15, Wednesday=16, Thursday,
Friday, Saturday, Sunday};
http://www.slideshare.net/IgorShkulipa 7
Объединения (union)
Объединения — это пользовательский тип, в котором все данные
разделяют одну и туже область памяти.
union un1
{
char charValue;
int intValue;
};
Байт 1 Байт 2 Байт 3 Байт 4
intValue
charValue
http://www.slideshare.net/IgorShkulipa 8
Поля битов
Поля битов — это специальный тип полей структуры.
Формат определения размера переменной в битах следующий:
<тип> <имя_поля>:<длина_в_битах>;
struct Point
{
int x : 3;
int y : 4;
int z : 5;
};
Поле x y z
Биты 0 1 2 3 4 5 6 7 8 9 10 11
http://www.slideshare.net/IgorShkulipa 9
Лабораторная работа №6
Создать базу данных книг, которая содержит следующую информацию о
книгах: автор, наименование, издательство, год издания, количество
страниц.
⚫ Вывести на экран перечень годов изданий с указанием числа
книг, выпущенных в эти годы.
⚫ Отсортировать и вывести на экран книги в алфавитном порядке
авторов.
⚫ Отсортировать и вывести на экран книги, изданные с год1 по
год2. Год1 и год2 ввести с клавиатуры.

C++ Базовый. Занятие 06.

  • 1.
    Модуль 2: Составныетипы данных и работа с динамической памятью. Темы лекции: Пользовательские типы данных. Практическое задание: Пользовательские типы данных. Тренер: Игорь Шкулипа, к.т.н. C++ Базовый. Занятие 6
  • 2.
    http://www.slideshare.net/IgorShkulipa 2 Структуры (struct) Структура— это составной тип данных, который состоит из элементов разных типов. Объявление структуры следует рассматривать как объявление типа. struct FullName { char* Name; char* Surname; char* MiddleName; }; struct PersoneInfo { FullName PersoneName; Date BirthDate; int Age; int Height; int Weight; }; struct Date { int Day; int Month; int Year; };
  • 3.
    http://www.slideshare.net/IgorShkulipa 3 Инициализация структуры Инициализацияструктуры похожа на инициализацию массива. FullName perName={“Petr”,”Petrov”,”Petrovich”}; Date bDate={1,1,1991}; Порядок данных в фигурных скобках должен соответствовать порядку объявления полей структуры. PersoneInfo persone={perName,bDate,22,180,80}; PersoneInfo persone={perName,{1,1,2001},12,150,50}; PersoneInfo persone={{"Ivan","Ivanov","Ivanovich"},{1,1,2001},12,150,50};
  • 4.
    http://www.slideshare.net/IgorShkulipa 4 Доступ кполям структуры Доступ к полям структуры осуществляется по имени переменной структуры с помощью операции прямого выбора. <имя_переменной>.<имя_поля> Date bDate; bDate.Year=2013; bDate.Month=1; bDate.Day=1; Если структура объявлена, как динамическая переменная, то используется операция косвенного выбора или операция прямого выбора с разыменованием. <имя_переменной>-><имя_поля> (*<имя_переменной>).<имя_поля> FullName* perName=new FullName; perName->Name=“Sidor”; perName->MiddleName=“Sidorovich”; (*perName).Surname=“Sidorov”;
  • 5.
    http://www.slideshare.net/IgorShkulipa 5 Перечисления (enum) Перечисления- это ещё один пользовательский тип данных. Перечисления используют для описания какого-то небольшого множества значений. enum WeekDays {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; После того, как определено перечисление, можно создавать переменные нового типа WeekDays wd = Monday;
  • 6.
    http://www.slideshare.net/IgorShkulipa 6 Перечисления (enum) Переменныетипа WeekDays могут принимать только семь значений: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday. Кроме того, элементы в перечислении нумеруются от нуля. Т.е. Monday=0, Tuesday=1, Wednesday=2, Thursday=3, Friday=4, Saturday=5, Sunday=6. Вместо перечисления, можно было создать семь констант: const int Monday=0; const int Tuesday=1; const int Wednesday=2; const int Thursday=3; const int Friday=4; const int Saturday=5; const int Sunday=6; Но это можно изменить. Если мы переопределим какой-либо элемент значением 10, то следующий, получит значение 11 и т.д. Можно так же переопределить все четыре значения. enum WeekDays {Monday=10, Tuesday=15, Wednesday=16, Thursday, Friday, Saturday, Sunday};
  • 7.
    http://www.slideshare.net/IgorShkulipa 7 Объединения (union) Объединения— это пользовательский тип, в котором все данные разделяют одну и туже область памяти. union un1 { char charValue; int intValue; }; Байт 1 Байт 2 Байт 3 Байт 4 intValue charValue
  • 8.
    http://www.slideshare.net/IgorShkulipa 8 Поля битов Полябитов — это специальный тип полей структуры. Формат определения размера переменной в битах следующий: <тип> <имя_поля>:<длина_в_битах>; struct Point { int x : 3; int y : 4; int z : 5; }; Поле x y z Биты 0 1 2 3 4 5 6 7 8 9 10 11
  • 9.
    http://www.slideshare.net/IgorShkulipa 9 Лабораторная работа№6 Создать базу данных книг, которая содержит следующую информацию о книгах: автор, наименование, издательство, год издания, количество страниц. ⚫ Вывести на экран перечень годов изданий с указанием числа книг, выпущенных в эти годы. ⚫ Отсортировать и вывести на экран книги в алфавитном порядке авторов. ⚫ Отсортировать и вывести на экран книги, изданные с год1 по год2. Год1 и год2 ввести с клавиатуры.