SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
Модуль 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 ввести с клавиатуры.

Mais conteúdo relacionado

Mais procurados

Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Nikolay Grebenshikov
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыUnguryan Vitaliy
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.Igor Shkulipa
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировкиUnguryan Vitaliy
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Theoretical mechanics department
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиOlga Maksimenkova
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Pavel Egorov
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.Igor Shkulipa
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормозаAlexander Shigin
 
C# Desktop. Занятие 07.
C# Desktop. Занятие 07.C# Desktop. Занятие 07.
C# Desktop. Занятие 07.Igor Shkulipa
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CГлеб Тарасов
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Mikhail Kurnosov
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Roman Brovko
 

Mais procurados (20)

Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
Лекция №6. Деревья. Предмет "Структуры и алгоритмы обработки данных"
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Основы NumPy
Основы NumPyОсновы NumPy
Основы NumPy
 
C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.C++ Базовый. Занятие 02.
C++ Базовый. Занятие 02.
 
Java. Методы
Java. Методы Java. Методы
Java. Методы
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование Python. Объектно-ориентированное программирование
Python. Объектно-ориентированное программирование
 
Основы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивамиОсновы С++ (массивы, указатели). Задачи с массивами
Основы С++ (массивы, указатели). Задачи с массивами
 
Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1Мастер класс по алгоритмам. Часть 1
Мастер класс по алгоритмам. Часть 1
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 
C# Desktop. Занятие 07.
C# Desktop. Занятие 07.C# Desktop. Занятие 07.
C# Desktop. Занятие 07.
 
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-CШкола-студия разработки приложений для iOS. Лекция 1. Objective-C
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
 
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
Лекция 6. Фибоначчиевы кучи (Fibonacci heaps)
 
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
Лекция 2. Красно-чёрные деревья (Red-black trees). Скошенные деревья (Splay t...
 
Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.Лекция 12. Быстрее, Python, ещё быстрее.
Лекция 12. Быстрее, Python, ещё быстрее.
 

Destaque

Production diary 7
Production diary 7Production diary 7
Production diary 7Laila Jaleel
 
Production diary 20
Production diary 20Production diary 20
Production diary 20Laila Jaleel
 
16 FACTS ABOUT CHOCOLATE
16 FACTS ABOUT CHOCOLATE16 FACTS ABOUT CHOCOLATE
16 FACTS ABOUT CHOCOLATENisha Thinisha
 
Advanced LinkedIn Techniques
Advanced LinkedIn TechniquesAdvanced LinkedIn Techniques
Advanced LinkedIn TechniquesJames Weber
 
Production diary 19
Production diary 19Production diary 19
Production diary 19Laila Jaleel
 
Production diary 15
Production diary 15Production diary 15
Production diary 15Laila Jaleel
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.Igor Shkulipa
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.Igor Shkulipa
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.Igor Shkulipa
 
Production diary 9
Production diary 9Production diary 9
Production diary 9Laila Jaleel
 
Hebron NH Academy Building Presentation 02-17-15
Hebron NH Academy Building Presentation 02-17-15Hebron NH Academy Building Presentation 02-17-15
Hebron NH Academy Building Presentation 02-17-15hebronnhwebmaster
 
Investors | How it works
Investors | How it worksInvestors | How it works
Investors | How it worksGREXdotIN
 
EE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile TooEE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile Toobentgate
 
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
Vijay Bhosekar_ PP_Rodale Institute_Feb 9Vijay Bhosekar_ PP_Rodale Institute_Feb 9
Vijay Bhosekar_ PP_Rodale Institute_Feb 9vijay bhosekar
 
Production diary 2
Production diary 2Production diary 2
Production diary 2Laila Jaleel
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 

Destaque (20)

Production diary 7
Production diary 7Production diary 7
Production diary 7
 
Production diary 20
Production diary 20Production diary 20
Production diary 20
 
16 FACTS ABOUT CHOCOLATE
16 FACTS ABOUT CHOCOLATE16 FACTS ABOUT CHOCOLATE
16 FACTS ABOUT CHOCOLATE
 
Truly Verona
Truly VeronaTruly Verona
Truly Verona
 
Advanced LinkedIn Techniques
Advanced LinkedIn TechniquesAdvanced LinkedIn Techniques
Advanced LinkedIn Techniques
 
Production diary 19
Production diary 19Production diary 19
Production diary 19
 
Production diary 15
Production diary 15Production diary 15
Production diary 15
 
C# Desktop. Занятие 09.
C# Desktop. Занятие 09.C# Desktop. Занятие 09.
C# Desktop. Занятие 09.
 
C# Web. Занятие 11.
C# Web. Занятие 11.C# Web. Занятие 11.
C# Web. Занятие 11.
 
Pest & Fumi-(Shiva Resume)
Pest & Fumi-(Shiva Resume)Pest & Fumi-(Shiva Resume)
Pest & Fumi-(Shiva Resume)
 
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 10.
 
Simon Elliott
Simon ElliottSimon Elliott
Simon Elliott
 
Production diary 9
Production diary 9Production diary 9
Production diary 9
 
Hebron NH Academy Building Presentation 02-17-15
Hebron NH Academy Building Presentation 02-17-15Hebron NH Academy Building Presentation 02-17-15
Hebron NH Academy Building Presentation 02-17-15
 
Investors | How it works
Investors | How it worksInvestors | How it works
Investors | How it works
 
EE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile TooEE'13 - The Modern Marketer Can be Agile Too
EE'13 - The Modern Marketer Can be Agile Too
 
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
Vijay Bhosekar_ PP_Rodale Institute_Feb 9Vijay Bhosekar_ PP_Rodale Institute_Feb 9
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
 
10 Reasons to Trademark Your Business
10 Reasons to Trademark Your Business10 Reasons to Trademark Your Business
10 Reasons to Trademark Your Business
 
Production diary 2
Production diary 2Production diary 2
Production diary 2
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 

Mais de Igor Shkulipa

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03. Igor Shkulipa
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.Igor Shkulipa
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.Igor Shkulipa
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.Igor Shkulipa
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.Igor Shkulipa
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.Igor Shkulipa
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.Igor Shkulipa
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.Igor Shkulipa
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.Igor Shkulipa
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.Igor Shkulipa
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.Igor Shkulipa
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.Igor Shkulipa
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.Igor Shkulipa
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.Igor Shkulipa
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.Igor Shkulipa
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.Igor Shkulipa
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.Igor Shkulipa
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.Igor Shkulipa
 

Mais de Igor Shkulipa (20)

Общие темы. Тема 03.
Общие темы. Тема 03. Общие темы. Тема 03.
Общие темы. Тема 03.
 
Общие темы. Тема 02.
Общие темы. Тема 02.Общие темы. Тема 02.
Общие темы. Тема 02.
 
Общие темы. Тема 01.
Общие темы. Тема 01.Общие темы. Тема 01.
Общие темы. Тема 01.
 
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 06.
 
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 11.
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 05.
 
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 08.
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 01.
 
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 04.
 
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 03.
 
JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.JavaScript Базовый. Занятие 02.
JavaScript Базовый. Занятие 02.
 
C# Web. Занятие 09.
C# Web. Занятие 09.C# Web. Занятие 09.
C# Web. Занятие 09.
 
C# Web. Занятие 08.
C# Web. Занятие 08.C# Web. Занятие 08.
C# Web. Занятие 08.
 
C# Web. Занятие 07.
C# Web. Занятие 07.C# Web. Занятие 07.
C# Web. Занятие 07.
 
C# Web. Занятие 04.
C# Web. Занятие 04.C# Web. Занятие 04.
C# Web. Занятие 04.
 
C# Web. Занятие 12.
C# Web. Занятие 12.C# Web. Занятие 12.
C# Web. Занятие 12.
 
C# Web. Занятие 16.
C# Web. Занятие 16.C# Web. Занятие 16.
C# Web. Занятие 16.
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
 

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 ввести с клавиатуры.