Встановлення структурного шаблону.

Структура- це сукупність логічно зв'язаних змінних, в який входять елементи будь-яких типів, за винятком функцій, згрупованих під одним ім'ям для зручності подальшої обробки. На відміну від масиву, який є однорідним об'єктом, структура може бути неоднорідною.

Традиційним прикладом структури служить облікова картка того, що працює: службовець підприємства описується набором атрибутів, таких, як табельний номер, ім'я, дата народження, пів, адрес, зарплата. У свою чергу, деякі з цих атрибутів самі можуть виявитися структурами. Такі, наприклад: ім'я, дата народження, адрес, що мають декілька компонент.

Розглянемо задачу, в якій приймемо два обмеження: по-перше, включимо в дані лише назву книги, ім’я автора і ціну; по-друге, обмежемо опис лише однією книгою.

Розглянемо програму:

/*опис книги, програма “книжка”*/

#include <oistream.h>

#define maxnazva 41 /*максимальна довжина заголовка*/

#define maxavtor 31 /*максимальна довжина імені автора*/

struct book {

char nazva[maxnazva];

char avtor[maxavtor];

float cina;

};

main()

{

struct book odna;

сout<<“введіть назву книги\n”;

cin.get(odna.nazva,maxnazva); cin.get();

cout<<“введіть автора\n”;

cin.get(odna.avtor,maxavtor); cin.get();

cout<<“введіть ціну\n”;

cin>>odna.cina;

cout<<odna.avtor<<odna.nazva<<odna.cina;

return 0;

}

Приведена в прикладі структура має три частини, які називаються елементамиабо полями. Для того, щоб працювати зі структура необхідно засвоїти три основні прийоми:

- встановлення формату структури;

- визначення змінної, яка відповідає даному формату;

- забезпечення доступу до окремих компонентів змінної-структури.

Знову звернемось до нашого прикладу.

struct book {

char nazva[maxnazva];

char avtor[maxavtor];

float cina;

};

Опис структури, що складається з взятого в фігурні дужки списку описів, починається з службового слова struct. За словом struct може записуватися необов’язкове ім’я, яке називається ярликом структури (тут це book). Ярлик іменує структури і може використовуватись надалі як скорочений запис докладного опису. Список елементів структури знаходиться в фігурних дужках. Кожен елемент має свою назву . Після визначення кожного елемента ставиться крапка з комою. Елемент структури має будь-який тип даних, а також може включати в себе інші структури. Опис структури завершується крапкою з комою. Опис структури може бути розташований ззовні функції і всередині. Якщо опис поміщено всередину функції , то структура використовується лише всредині функції. Поняття “структура ” може використовуватись в двох значеннях. Одно з них-шаблон. Шаблонвказує компілятору, як представити дані, але для них не виділяється пам’ять, він лише визначає форму структури.

 

 

2. Визначення структур та структурних змінних.

Друге значення, поняття “структура”-це змінна- структура, яка творюється на наступному етапі. Створення структурної змінної робиться за допомогою такого опису:

 

struct book odna;

 

Обробляючи цей оператор, компілятор створює змінну odna і використовуючи шаблон book,виділяє пам’ять для двох символьних масивів ізмінної дійсного типу. При визначенні змінної-структури шаблон book відіграє таку ж роль, як слова int i float для більш простих описів. Для комп’ютера визначення

struct book odna;

є зкороченим варіантом опису:

struct book {

char nazva[maxnazva];

char avtor[maxavtor];

float cina;

} odna;

Можна визначити декілька змінних –структур або вказівник на цей вигляд структури:

struct book odna, libry,*pbook;

Імена елементів і тегів без яких-небудь колізій можуть співпадати з іменами звичайних змінних (тобто не елементів), оскільки вони завжди помітні по контексту. Більш того, одні і ті ж імена елементів можуть зустрічатися в різних структурах, хоча, згідно хорошого стилю програмування, краще однакові імена давати тільки близьким по сенсу об'єктам.

Приклад:

Так, наприклад для анкети службовця можна вибрати такі імена:

tab_nom - табельний номер;

рір - прізвище, імя, побатькові;

stat- стать;

summa - зарплата;

 

Всі ці поняття можна об'єднати в таку, наприклад, структуру:

struct anketa {

int tab_nom;

char fio[30];

char data[10];

int pol;

char adres[40];

float summa;};

3. Ініціалізація структури.

Розглянемо тепер ініціалізацію структур і структурних змінних. В нашому прикладі визначення структури є зовнішнім, а змінна структурного типу описана всередині функції . Для ініціалізації структури використовується синтаксис, подібний тому, який використовується при ініціалізації масивів.

struct book odna={“Три мушкетери”,А.Дюма,3};

Отже, використовується список ініціалізаторів розділених комами і взятий у фігурні дужки. Кожне конкретне значення (ініціалізатор) повинен відповідати типу елемента структури, якому присвоюється початкове значення. Тому можна одночасно присвоїти єлементу nazva стрічкове значення, а елементу cina-числове. Для ясності кожному елементу відводиться власна стрічка ініціалізації, але компілятору достатньо того, щоб значення були розділені комами.

 

4. Доступ до елементів структур

Доступ до окремих елементів масиву здійснюється за допомогою індексів. Для того, щоб звернутись до окремих елементів структури використовується (.)-операція елемента структури, тоді член певної структури може бути вказаний у виразі за допомогою конструкції вигляду:

Ім’я структури.член структури

Наприклад ідентифікатор odna.cina вказує на елемент cina структури odna.Ідентифікатор odna.cina може використовуватись так само як будь-яке йнше ім’я змінної типу float. Тому в програмі містяться вирази, які подібні до наступних

cin.get(odna.nazva,maxnazva); cin.get();

c>>odna.cina;

По суті, позначення .nazva,.cina тощо відіграють роль індексів структури book.

Записи не можна копіювати або привласнювати як єдине ціле; їх не можна передавати у функцію або отримати звідти цілком. Проте, до покажчиків на структури це зауваження не відноситься .

Тема. Масиви структур. Вкладені структури. Вказівники на структури.

План.

1. Масиви структур.

2. Вкладені структури.

3. Вказівники на структури.

 








Дата добавления: 2015-08-26; просмотров: 554;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.008 сек.