Главная » Презентації на українській мові » Информатика (Програмування)

Структури даних та об’єднання в С++

 

Структури даних та об’єднання в С++


План


Загальні відомості про структури.


Елемент структури типу поля бітів.


Об’єднання.


Загальні відомості про структури.


Структура - це структурований тип даних, що є
іменованою сукупністю різнотипних елементів.


Тип структура зазвичай використовується при
розробці інформаційних систем, баз даних.


Наприклад, відомості про виплату студентам
стипендії потрібно організувати у вигляді:


СТУДЕНТ


Прізвище


Курс


Стипендія


Група


Елементи такої структури (прізвище, курс,
група, стипендія) називаються полями.
Кожному полю повинно бути поставлено у
відповідність ім'я і тип.


Формат опису структурного типу наступний:


struct ім’я_типу


{визначення_елементів};


Для розглянутого прикладу визначення
відповідного структурного типу може бути
наступним:


struct student {


char fam[30];


int kurs;


char grup[3];


float stip;


};


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


struct student stud1, stud2;


Правила С++ дозволяють в цьому випадку
службове слово struct опускати і писати


student stud1, stud2;


Тут stud1 і stud2 — змінні структурного типу.


Можна взагалі не задавати ім'я типу, а описувати
відразу змінні:


struct {


char fam[30];


int kurs;


char grup[3];


float stip; } stud1, stud2, *pst;


Звернення до елементів (полів) структурної
величини проводиться за допомогою
уточненого імені наступного формату:


ім'я_структури.ім’я_елемента


Приклади уточнених імен для описаних вище
змінних:


stud1.fam;


stud1.stip


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


Приклад ініціалізації в описі:


student stud1={"Кротов", 3, "Ф32",
350};


Нехай в програмі визначений покажчик на
структуру


student *pst, stud1;


Тоді після виконання оператора привласнення


pst=&stud1;


до кожного елементу структурної змінної stud1
можна звертатися трьома способами.
Наприклад, для поля fam


stud1.fam або (*pst).fam або pst->fam


У останньому варіанті використовується знак
операції доступу до елементу структури:
—>. Аналогічно можна звертатися і до інших
елементів цієї змінної:


pst->FIO, pst->grup, pst->stip.


Допускається використання масивів структур.
Наприклад, відомості про 100 студентів
можуть зберігатися в масиві, описаному таким
чином:


student stud[100];


Тоді відомості про окремих студентів
позначатимуться, наприклад, так:


stud [1].fam, stud[5].kurs


Якщо потрібно узяти першу букву прізвища 25-
го студента, то слід писати:


stud[25].fam[0].


Приклад 13.1. Ввести відомості про N студентів. Визначити прізвища студентів, що отримують
найвищу стипендію.


#include <stdio.h>


#include <conio.h>


void main() {


const N=5;


int i;


float maxs;


struct student {


char fam[15];


int kurs;


char grup[3];


float stip; } ;


student stud[N] ;


clrscr();


for(i=0;i<N;i++)


{ printf("%d-y student", i);


printf("\n Prizvishe:");scanf("%s",&stud[i].fam);


printf("Kurs:"); scanf("%d",&stud[i].kurs);


printf("Grupa:"); scanf("%s",&stud[i].grup);


printf("Stupendiya:"); scanf("%f",&stud[i].stip);


}


maxs=0;


for(i=0;i<N;i++)


if(stud[i].stip>maxs) maxs=stud[i].stip;


printf("\n Student, sho otrimuyut maximalnu stipendiyu.",maxs);


for(i=0; i<N; i++)


if(stud[i].stip==maxs) printf("\n%s",stud[i].fam);


getch();


}


Елемент структури типу поля бітів.


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


Формат структури, що містить поля бітів, наступний:


struct ім’я_структури


{ тип ім’я_поля_1: довжина_ в_бітах;


тип ім’я_поля_2: довжина_ в_бітах;


. . .


тип ім’я_поля_N: довжина_в_бітах;


} ;


Як тип полів можуть використовуватися
специфікатори int, unsigned, signed.
Мінімальною величиной такого типу може
бути структура, що складається всього з
одного бітового поля.


Приклад опису такої структури:


struct onebit


{ unsigned bit:1;


} cod;


Звичайно, для змінної cod в пам'яті буде
виділено 8 біт (1 байт), але
використовуватися буде тільки один перший
біт.


Об'єднання.


Об'єднання — це ще один структурований тип
даних.


union ім’я_типу


{ визначення_елементів};


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


Хай в програмі описана структура:


struct s

{ int i;

char ch;

long int L;};


Розташування її елементів в пам'яті буде
наступним:


Розглянемо об'єднання з наступним описом:


union s

{ int i;

char ch;

long int L;

};


Величина з таким типом в пам'яті буде
розташована таким чином:


Приклад 13.2. Складемо програму рішення наступної задачі: з клавіатури вводиться символ. Вивести на екран двійковий код цього
символу.


//Отримання двійкового коду символа


#include <stdio.h>


#include <conio.h>


//Структура бітових полів


struct byte{


int b1:1;


int b2:1;


int b3:1;


int b4:1;


int b5:1;


int b6:1;


int b7:1;


int b8:1;


};


//Об’єднання - змінна


union bits


{char ch; byte cod;} u;


//Прототип функції декодування


void decode(bits x);


//Основна програма


void main()


{


do {u.ch=getche(); //Введеня символа з клавіатури


printf (":"); decode(u);


} while(u.ch!='q'); //Символ q- признак кінця введення


}


//Функція декодування


void decode(bits u)


{ if (u.cod.b8) printf("1"); else printf ("0");


if (u.cod.b7) printf ("1"); else printf ("0");


if (u.cod.b6) printf("1"); else printf("0");


if (u.cod.b5) printf("1"); else printf("0");


if( u.cod.b4) printf("1"); else printf("0");


if (u.cod.b3) printf("1"); else printf("0");


if (u.cod. b2 ) printf("1"); else printf ("0" );


if (u.cod.b1) printf("1"); else printf ("0"); printf("\n");


}

Категория: Информатика (Програмування) | Добавил: SYLER (13.04.2017)
Просмотров: 330 | Рейтинг: 0.0/0

Вам также могут быть интересны презентации:
Ринок праці: об’єкт купівлі – продажу, суб’єкти ринку, ціна ринку праці. Попит і пропозиція на ринку праці
Психологічні проблеми лікувального процесу та сучасної біоетики
Богдан Зиновій Хмельницький
Великі трави
Досягнення українців у розвитку космосу
ЛЮБОВ ЯК ОСНОВА МОРАЛЬНОГО ЖИТТЯ ЛЮДИНИ
Структури даних та об’єднання в С++
Соціологія сім'ї
ЗНО з української мови і літератури
Наше серце
Всего комментариев: 0
avatar