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

СТРУКТУРИ ДАНИХ ТА ОБ’ЄДНАННЯ В С++

 

СТРУКТУРИ ДАНИХ ТА ОБ’ЄДНАННЯ В С++.


План


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


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


Об’єднання.


ЗАГАЛЬНІ ВІДОМОСТІ ПРО СТРУКТУРИ.


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


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


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


СТУДЕНТ


Прізвище


Курс


Стипендія


Група


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


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


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)
Просмотров: 352 | Комментарии: 1 | Рейтинг: 0.0/0

Вам также могут быть интересны презентации:
Проблема заліснення українських степів
Василь Слапчук
Петро Конашевич- Сагайдачний – знакова постать української історії 1577-1622
Наше серце
Місто як джерело небезпеки
Соціалістична Республіка В'єтнам
Оноре де Бальзак
Розвиток культури після Першої світової війни
Наукові товариства другої половини XIX ст.
Охорона навколишнього середовища від забруднень під час переробки вуглеводневої сировини
Всего комментариев: 1
avatar
0
1 SYLER • 18:34, 18.04.2017
Крутая презентация
avatar