- •Неоднородные типы данных. Записи (структуры)
- •В современных языках программирования логическое
- •Предположим, что нужно написать программу для деканата факультета. Эта программа должна обрабатывать информацию
- •В языке С можно так переписать приведенный выше фрагмент:
- •Объявление переменных для обработки данных одного студента, не используя новый тип
- •То, что поля структур сами могут быть структурами, позволяет целостным образом описывать достаточно
- •Техника Apple Нетбуки Доступные цены
- •Расписание авиарейсов
- •Описание структуры в программе состоит из двух этапов:
- •Примеры описания шаблона структуры:
- •Вложенные структуры
- •Пример описания вложенной структуры
- •Доступ к отдельным полям структурной переменной
- •Совмещение описания шаблона структуры и структурной переменной
- •Совмещение описания шаблона, описания структурных переменных и инициализации полей в
- •Определение объема памяти, выделяемой под структурную переменную
- •Копирование структур-переменных
- •Структурные переменные и указатели
- •Массивы структурных переменных
- •Примеры программ работы со структурами
- •Продолжение примера 1
- •Продолжение примера 1
- •Вид экрана после выполнения программы:
- •Пример 2. Поиск в массиве структур, вводимых с клавиатуры
- •Начало
- •/* Фамилии сотрудников, имеющих оклад выше среднего */
- •//Продолжение примера 2
- •//Продолжение примера 2 //Вывод списка сотрудников
- •//Продолжение примера 2
- •Какие изменения надо внести в алгоритм и программу последнего примера,
Неоднородные типы данных. Записи (структуры)
1.1.Определение записи (структуры)
1.2.Описание шаблона структуры
1.3.Синтаксис описания структурной переменной
1.4.Вложенные структуры
1.5.
Доступ к отдельным полям структурной перемен
ной
1.6.
Совмещение описания шаблона структуры и стру
ктурной переменной 1.7. Совмещение описания шаблона, описания
структурных переменных и инициализации полей
водном предложении
1.8.Определение объема памяти, выделяемой под
структурную переменную 1.9. Копирование структур-переменных
1.10.Структурные переменные и указатели
1.11.Массивы структурных переменных
Пример 1
В современных языках программирования логическое
объединение целостных понятий называется записью (Pascal) или структурой (С/С++).
Структуры (записи) используются для логического и физического объединения данных произвольных типов, так же как массивы служат для группирования данных одного типа.
Определение структуры вводит новый пользовательский тип в программу, который может быть использован так же, как любой встроенный тип.
Предположим, что нужно написать программу для деканата факультета. Эта программа должна обрабатывать информацию о студентах, такую как фамилия студента, домашний адрес, домашний телефон, дата рождения, экзаменационные оценки, средний балл и др. Написать такую программу с помощью простых типов данных и массивов не так просто, хотя и возможно. Описание переменных для такой программы может выглядеть так:
char |
fam[30]; |
// Фамилия |
char address[150]; |
// Домашний адрес |
|
char |
phone[10]; |
// Телефон |
int |
day; |
// День рождения |
int |
month; |
// Месяц рождения |
int |
year; |
// Год рождения |
int |
oc[4]; |
// Оценки |
float |
sr; |
// Средний балл |
В языке С можно так переписать приведенный выше фрагмент:
struct date |
|
|
{ |
|
|
int |
day; |
// День |
int |
month; |
// Месяц |
int |
year; |
// Год |
}; |
|
|
struct student |
|
|
{ |
|
|
char fam[30]; |
//Фамилия |
|
char address[150]; |
// Домашний адрес |
|
struct date birth; |
// Дата рождения |
|
char |
phone[10]; |
// Телефон |
int |
oc[4]; |
// Оценки |
float |
sr; |
// Средний балл |
}; |
|
|
struct student S1; struct student S [100];
14
Объявление переменных для обработки данных одного студента, не используя новый тип
char |
fam[30]; |
//Фамилия |
char |
address[150]; |
// Адрес |
char |
phone[10]; |
// Телефон |
int |
day; |
// День |
рождения |
|
|
int |
month; |
// Месяц |
рождения |
|
|
int |
year; |
// Год рождения |
int |
oc[4] |
// Оценки |
float |
sr; |
// Средний балл |
Объявление массивов для обработки данных всех студентов, не используя новый тип
char |
Sfam[100] [30]; |
//Фамилии |
char |
Saddress[100] [150]; //Адреса |
|
char |
Sphone[100] [10]; |
// Телефоны |
int |
Sday[100]; |
// Дни рождения |
int |
Smonth[100]; / Месяцы рождения |
|
int |
Syear[100]; |
// Годы рождения |
int |
Soc[100] [4] |
// Оценки |
float |
Ssr[100]; |
// Средние баллы |
Объявление переменных для обработки данных одного студента (S1) и всех студентов ( S[100] ) с использованием новых типов
struct date |
|
|
{ |
|
|
int |
day; |
// День |
int |
month; |
// Месяц |
int |
year; |
// Год |
}; |
|
|
struct student |
|
|
{ |
|
|
char fam[30]; |
//Фамилия |
|
char |
address[150]; |
// Домашний адрес |
struct date birth; |
// Дата |
|
рождения |
|
|
char |
phone[10]; |
// Телефон |
int |
oc[4]; |
// Оценки |
float |
sr; |
/ Средний |
балл |
|
|
}; |
|
|
struct student S1; struct student S [100];
То, что поля структур сами могут быть структурами, позволяет целостным образом описывать достаточно сложные понятия реального мира.
Так как структуры, в отличии от массивов, хранят данные различных типов, они и относятся к неоднородным типам данных.
Итак,
Структура (struct) или запись (record) – это составной тип данных,
состоящий из фиксированного числа компонентов разного типа, называемых полями (Helds).
Структуры целесообразно использовать тогда, когда необходимо объединить разные данные, относящиеся к одному объекту.
Техника Apple Нетбуки Доступные цены
Артикул |
Наименование |
Цена(безнал.с |
Цена(нал.), грн. |
|
|
НДС), грн. |
|
MC349 |
iPad 16Gb Wi-Fi+3G () |
8 086,50 |
7 321,20 |
MC496 |
iPad 32Gb Wi-Fi+3G () |
9 077,76 |
8 222,30 |
MC497 |
iPad 64Gb Wi-Fi+3G () |
10 158,48 |
9 204,90 |
Расписание авиарейсов
Прилет в Москву:
Шереметьево Домодедово Внуково
Рейс |
Вылет |
Прилет |
Время |
Примечание |
|
|
|
прилета |
|
S7882 |
Владикавказ |
Дом |
16:50 17:33 |
задержан |
SU530 |
Шанхай |
Шер.F |
16:50 18:20 |
приземлился |
ЮТ448 |
Архангельск |
Вну. Д |
16:50 16:41 |
|
Д9604 |
Ростов-на- |
Вну.А |
16:50 |
ожидается |
|
Дону |
|
|
|
МИ1220 |
Минеральные |
Вну.А |
16:50 16:53 |
ожидается |
|
Воды |
|
|
|
FV4126 |
Гамбург |
Шер.D |
17:05 16:58 |
приземлился |
Описание структуры в программе состоит из двух этапов:
1.Описание шаблона структуры.
2.Описание структурной переменной.
Синтаксис описания шаблона стpуктуры:
struct <имя_ шаблона
{
<тип1> <имя_поля1>; <тип2> <имя_поля2>;
…
<типN> <имя_поляN>; };
<тип1>, <тип2>, … ,<типN> - любые основные типы (int, char, float, и т. д.), массив, указатель, структура, объединение;
<имя_поля1>, <имя_поля2>, … ,<имя_поляN> - допустимые идентификаторы языка.
Примеры описания шаблона структуры:
Пример1.
struct date
{ |
|
int |
day; |
int |
month; |
int |
year; |
}; |
|
//Имя шаблона – date
//Имя поля1 – day
//Имя поля2 – month
//Имя поля3 – year
Пример 2.
struct student
{
char fam[30]; char address[150]; struct date birth; char phone[10]; int oc[4];
float sr;
};
//Имя шаблона - student
//Имя поля1 - fam
//Имя поля2 - address
//Имя поля3 - birth
//Имя поля4 - phone
//Имя поля5 - oc
//Имя поля6 – sr
На слайд 12
Синтаксис описания структурной переменной: struct <имя_шаблона> <имя_переменной>;
Или
struct <имя_шаблона> <список имен переменных>;
Примеры:
struct student S1;
struct student S1, S2, S3; struct student S [100];